Skip to content

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()生成时间戳

有时间再扩充内容,有问题进群交流