配置微信端通信参数

打开微信平台,配置与微信通信相关的url为 指定的地址

微信公众号的设置

设置与开发--基本配置--服务器配置,设置,服务器地址(URL) 为 http://{your domain}/wxcallback

微信小程序的设置

开发--开发管理--消息推送,

第三方平台的设置

​ 开发配置--开发资料 设置 授权事件接收配置 https://xx.cn/wxcallback/component , 消息与事件接收配置https://xx.cn/wxcallback/biz/$APPID$

项目中添加微信参数

appsettings.json中配置申请的微信参数,可以同时添加多个微信参数

"Tencent": {
    "WeChat": [
      {
        "Id": "gh_e1cxxx",//原始id
        "AppId": "wxxxxxx",//appid
        "AppSecret": "xxx",//appsecret
        "Token": "xxx",//token
        "EncodingAESKey": "xxx",
        "DataFormatter": "xml" //与微信通信消息格式,值为xml 或 json
      }
    ]
  }

使用RsCode.WeChat服务

//使用默认配置
//services.AddWeChat();
//指定微信配置
services.AddWeChat(options => {
    Configuration.GetSection("Tencent:WeChat").Bind(options);
 });
//继承IWeChatEventHandler,自定义WeChatMessageHandler,处理收到微信消息与事件处理逻辑
services.AddSingleton<IWeChatEventHandler,WeChatMessageHandler >();
//自定义token存储方式
services.AddScoped<IWechatStore,StoreHelper>();

//启用中间件

 app.UseWeChat();
注意:允许的IP配置IP白名单

StoreHepler.cs 示例

public class StoreHelper : IWechatStore
{
    ICacheProvider cache;
    public StoreHelper(IEnumerable<ICacheProvider>caches)
    {
        cache = caches.FirstOrDefault(c => c.CacheName == "redis");
    }
    public T Get<T>(string key)
    {
         return cache.Get<T>(key);
    }

    public List<WeChatRequestData> GetData(int page = 1, int pageSize = 20)
    {
        return GetDataAsync(page, pageSize).GetAwaiter().GetResult();
    }

    public Task<List<WeChatRequestData>> GetDataAsync(int page = 1, int pageSize = 20)
    {
        return null;
    }

    public void SaveData(WeChatRequestData data)
    {
        SaveDataAsync(data).GetAwaiter().GetResult();
    }

    public Task SaveDataAsync(WeChatRequestData data)
    {
        string key = "wechat-request-data";
        cache.Set(key, data);
        return Task.CompletedTask;
    }

    public void Set(string key, object obj, int seconds = 7000)
    {
        cache.Set(key, obj, seconds);   
    }
}
上次更新:
贡献者: kuiyu