配置微信端通信参数
打开微信平台,配置与微信通信相关的url为 指定的地址
微信公众号的设置
设置与开发--基本配置--服务器配置,设置,服务器地址(URL) 为 http://{your domain}/wxcallback
微信小程序的设置
开发--开发管理--消息推送,
第三方平台的设置
开发配置--开发资料 设置 授权事件接收配置 https://xx.cn/wxcallback/component
, 消息与事件接收配置https://xx.cn/wxcallback/biz/$APPID$
项目中添加微信参数
appsettings.json中配置申请的微信参数,可以同时添加多个微信参数
json
"Tencent": {
"WeChat": [
{
"Id": "gh_e1cxxx",//原始id
"AppId": "wxxxxxx",//appid
"AppSecret": "xxx",//appsecret
"Token": "xxx",//token
"EncodingAESKey": "xxx",
"DataFormatter": "xml" //与微信通信消息格式,值为xml 或 json
}
]
}
使用RsCode.WeChat服务
csharp
//使用默认配置
//services.AddWeChat();
//指定微信配置
services.AddWeChat(options => {
Configuration.GetSection("Tencent:WeChat").Bind(options);
});
//继承IWeChatEventHandler,自定义WeChatMessageHandler,处理收到微信消息与事件处理逻辑
services.AddSingleton<IWeChatEventHandler,WeChatMessageHandler >();
//自定义token存储方式
services.AddScoped<IWechatStore,StoreHelper>();
//启用中间件
csharp
app.UseWeChat();
注意:允许的IP配置IP白名单
StoreHepler.cs 示例
csharp
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);
}
}