要修仙的狐狸 發表於 2021-1-22 11:43:00

基于.net5 wtm框架、uni-app微信公众号开发二、搭建后台接口

<h1 id="搭建后台接口">搭建后台接口</h1>
<h2 id="创建基于net5的wtm框架项目">创建基于.net5的wtm框架项目</h2>
<p>0、框架介绍:WTM全称WalkingTec MVVM(不是“我特么”的拼音首字母),WTM是一个快速开发框架,有多快?至少目前dotnetcore的开源项目中,我还没有见到更接地气,开发速度更快的框架。WTM的设计理念就是最大程度的加快开发速度,降低开发成本。(作者原话,快确实是这个项目使用它的最大原因,感谢作者刘亮大大)。 点击官网了解更多</p>
<p>1、点我创建后台接口项目,输入项目名称,并点击下一步<br>
<img src="https://img2020.cnblogs.com/blog/499957/202101/499957-20210122114303617-539215999.png"><br>
2、这里选择.netcore5版本,数据我使用mysql,连接字符串可以后面再改也可以在这里修改好,文件上传到硬盘目录,因为是后台项目再前端UI上我不选择前后分离,项目结构单一就好(其他项目可以根据自己需要修改),填写完成后点击“开始配置”即可下载项目文件,下载完成直接用vs打开即可<br>
<img src="https://img2020.cnblogs.com/news/499957/202101/499957-20210122114304030-926800748.png"><br>
<img src="https://img2020.cnblogs.com/blog/499957/202101/499957-20210122114304309-1366876475.png"></p>
<p>3、为项目引入微信sdk,我使用的是Senparc.Weixin.MP,直接在vs包管理工具中搜索Senparc.Weixin.MP并安装到项目中(更多使用方法官网了解)<br>
<img src="https://img2020.cnblogs.com/blog/499957/202101/499957-20210122114304562-350999347.png"><br>
4、配置Senparc.Weixin.MP,在appsettings.json中添加配置项</p>
<pre><code class="language-json">// An highlighted block
//CO2NET 设置
"SenparcSetting": {
    //以下为 CO2NET 的 SenparcSetting 全局配置,请勿修改 key,勿删除任何项

    "IsDebug": true,
    "DefaultCacheNamespace": "DefaultCache",
    //分布式缓存
    "Cache_Redis_Configuration": "Redis配置",
    //"Cache_Redis_Configuration": "localhost:6379",
    "Cache_Memcached_Configuration": "Memcached配置",
    "SenparcUnionAgentKey": "SenparcUnionAgentKey"
},
//Senparc.Weixin SDK 设置
"SenparcWeixinSetting": {
    //以下为 Senparc.Weixin 的 SenparcWeixinSetting 微信配置

    //微信全局
    "IsDebug": true,

    //以下不使用的参数可以删除,key 修改后将会失效

    //公众号
    "Token": "Token",
    "EncodingAESKey": "EncodingAESKey",
    "WeixinAppId": "WeixinAppId",
    "WeixinAppSecret": "WeixinAppSecret",
    //小程序
    "WxOpenAppId": "WxOpenAppId",
    "WxOpenAppSecret": "WxOpenAppSecret",
    "WxOpenToken": "WxOpenToken",
    "WxOpenEncodingAESKey": "WxOpenEncodingAESKey",
    //企业微信
    "WeixinCorpId": "WeixinCorpId",
    "WeixinCorpSecret": "WeixinCorpSecret",

    //微信支付
    //微信支付V2(旧版)
    "WeixinPay_PartnerId": "WeixinPay_PartnerId",
    "WeixinPay_Key": "WeixinPay_Key",
    "WeixinPay_AppId": "WeixinPay_AppId",
    "WeixinPay_AppKey": "WeixinPay_AppKey",
    "WeixinPay_TenpayNotify": "WeixinPay_TenpayNotify",
    //微信支付V3(新版)
    "TenPayV3_MchId": "TenPayV3_MchId",
    "TenPayV3_Key": "TenPayV3_Key",
    "TenPayV3_AppId": "TenPayV3_AppId",
    "TenPayV3_AppSecret": "TenPayV3_AppId",
    "TenPayV3_TenpayNotify": "TenPayV3_TenpayNotify",

    //开放平台
    "Component_Appid": "Component_Appid",
    "Component_Secret": "Component_Secret",
    "Component_Token": "Component_Token",
    "Component_EncodingAESKey": "Component_EncodingAESKey",

    //扩展及代理参数
    "AgentUrl": "AgentUrl",
    "AgentToken": "AgentToken",
    "SenparcWechatAgentKey": "SenparcWechatAgentKey"
}
</code></pre>
<p>5、在Startup.cs文件ConfigureServices() 方法中进行注册</p>
<pre><code class="language-csharp"> services.AddSenparcGlobalServices(ConfigRoot)//Senparc.CO2NET 全局注册
         .AddSenparcWeixinServices(ConfigRoot);//Senparc.Weixin 注册
</code></pre>
<p>6、在Startup.cs文件Configure() 方法中进行注册</p>
<pre><code class="language-csharp">// 启动 CO2NET 全局注册,必须!
IRegisterService register = RegisterService.Start(senparcSetting.Value)         .UseSenparcGlobal(false, null);
//开始注册微信信息,必须!
register.UseSenparcWeixin(senparcWeixinSetting.Value, senparcSetting.Value);
</code></pre>
<h2 id="微信公众平台服务器配置">微信公众平台服务器配置</h2>
<p>1、在项目中创建控制器WxController<br>
<img src="https://img2020.cnblogs.com/news/499957/202101/499957-20210122114304915-1755154125.png"></p>
<pre><code class="language-csharp">
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.Json;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Authentication.Cookies;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using NICE_Server.Models.wx;
using WalkingTec.Mvvm.Admin.Api;
using WalkingTec.Mvvm.Core;
using WalkingTec.Mvvm.Core.Extensions;
using WalkingTec.Mvvm.Mvc;
using WalkingTec.Mvvm.Mvc.Admin.ViewModels.FrameworkUserVms;
using WalkingTec.Mvvm.Mvc.Auth;
using Senparc.Weixin.MP.Entities.Request;
using Senparc.Weixin.MP;
using Senparc.Weixin;

namespace WalkingTec.Mvvm.Wx.Api
{
   
   
    ")]
   
   
    public class WxController : BaseApiController
    {
      private readonly ILogger _logger;
      private readonly ITokenService _authService;

      public static readonly string Token = Config.SenparcWeixinSetting.Token;//与微信公众账号后台的Token设置保持一致,区分大小写。
      public static readonly string EncodingAESKey = Config.SenparcWeixinSetting.EncodingAESKey;//与微信公众账号后台的EncodingAESKey设置保持一致,区分大小写。
      public static readonly string AppId = Config.SenparcWeixinSetting.WeixinAppId;//与微信公众账号后台的AppId设置保持一致,区分大小写。

      public WxController(
          ILogger&lt;WxController&gt; logger,
          ITokenService authService)
      {
            _logger = logger;
            _authService = authService;
      }

      #region 微信服务器验证
      /// &lt;summary&gt;
      /// 微信服务器验证
      /// &lt;/summary&gt;
      /// &lt;param name="signature"&gt;&lt;/param&gt;
      /// &lt;param name="timestamp"&gt;&lt;/param&gt;
      /// &lt;param name="nonce"&gt;&lt;/param&gt;
      /// &lt;param name="echostr"&gt;&lt;/param&gt;
      /// &lt;returns&gt;&lt;/returns&gt;
      
      ")]
      public ActionResult ReturnWxTonken(string signature, string timestamp, string nonce, string echostr)
      {
            if (CheckSignature.Check(signature, timestamp, nonce, Token))
            {
                return Content(echostr); //返回随机字符串则表示验证通过
            }
            else
            {
                return Content("failed:" + signature + "," + Senparc.Weixin.MP.CheckSignature.GetSignature(timestamp, nonce, Token) + "。" +
                  "如果你在浏览器中看到这句话,说明此地址可以被作为微信公众账号后台的Url,请注意保持Token一致。");
            }
      }
      #endregion
    }
}
</code></pre>
<p>2、依然使用utools工具把接口url内网穿透出去,然后进入公众平台设置-开发-基本配置-服务器配置,填写相应的信息,点击提交即可</p>
<p><img src="https://img2020.cnblogs.com/blog/499957/202101/499957-20210122114305446-1060141102.png"></p>
<p>到此搭建后台接口项目并引入微信sdk完成</p><br><br>
来源:https://www.cnblogs.com/wuxyjian/p/14312450.html
頁: [1]
查看完整版本: 基于.net5 wtm框架、uni-app微信公众号开发二、搭建后台接口