C#版本的微信SDK,项目只需引用库RsCode.WeChat
,三步完成微信SDK的调用
一 微信配置
json
"Tencent": {
"WeChat": [
{
"Id": "gh_e1c6*",
"AppId": "wx7c82*",
"AppSecret": "5a5efeb3b0*",
"Token": "6LQyNSzUUZ*",
"EncodingAESKey": "qKgdQuc*",
"DataFormatter": "xml"
},
{
"Id": "gh_353d*",
"AppId": "wxa471d*",
"AppSecret": "a41db9dd*",
"Token": "",
"EncodingAESKey": "",
"DataFormatter": "xml"
}
]
},
WeChat节点中可以添加多个微信应用,其中DataFormatter的值根据实际的配置,它可以是xml
也可以是json
二 配置RsCode.WeChat服务与中间件
c#
services.AddHttpClient();
//微信公众号
services.AddWeChat(options=>
{
Configuration.GetSection("Tencent:WeChat").Bind(options);
});
...
app.UseWeChat();
三 应用RsCode.WeChat
注入WechatHelper
获取微信用户信息实例代码
csharp
public class OAuthController : Controller
{
WechatHelper wechat;
WeChatOptions WeChatOptions;
public OAuthController(WechatHelper weChatClient)
{
wechat=weChatClient;
var appId="wx***";
WeChatOptions = wechat.UseAppId(appId);
}
public async Task WechatTest()
{
//创建授权url
string oauthUrl=wechat.GetWxOAuthUrl(AppType.PC,"https://xx.com/UserInfo");
//获取accessToken
//假设己扫码授权,回调地址会得到code,和state
var accessToken=await wechat.GetAccessTokenAsync(code,state);
//微信公众号获取用户信息
var wxUser=await wechat.GetWxUserInfoAsync(new WechatUserBaseInfoRequest{});
//开放平台网站应用获取用户信息
var wxUser=await wechat.GetWxUserInfoAsync(new SmsUserInfoRequest{});
}
}
url签名实例
注入 IWechatTokenManager
,例IWechatTokenManager tokenManager
c#
public async Task< IActionResult> OpenMp()
{
string scheme = HttpContext.Request.Scheme;
string host=HttpContext.Request.Host.ToString();
string path = HttpContext.Request.Path;
if(HttpContext.Request.IsHttps)
{
scheme = "https";
}
scheme = "https";
string url = $"{scheme}://{host}{path}";
var s = await tokenManager.UrlSignature(appId, url);
TempData["signature"] = s;
TempData["url"] = url;
return View();
}
四 其它
WeChatTool.GetNonceStr()
生成随机数 WeChatTool.GetTimeStamp()
生成时间戳
有时间再扩充内容,有问题进群交流