微信小程序【消息推送服务器认证C# WebAPI】

参考微信开发文档:

https://developers.weixin.qq.com/miniprogram/dev/api/custommsg/callback_help.html

代码可用

/// <summary>
/// 接口认证
/// </summary>
/// <param name="echostr"></param>
/// <param name="signature"></param>
/// <param name="timestamp"></param>
/// <param name="nonce"></param>
/// <returns></returns>
[HttpGet]
public async Task<HttpResponseMessage> wx(string echostr, string signature, string timestamp, string nonce)
{
    string token = "token";
    if (!CheckSignature(token, signature, timestamp, nonce))
        echostr = "验证不正确";
    HttpResponseMessage responseMessage = new HttpResponseMessage { Content = new StringContent(echostr, Encoding.GetEncoding("UTF-8"), "text/plain") };
 
    return responseMessage;
}
/// <summary>
/// 接收客服消息
/// </summary>
/// <returns></returns>
[HttpPost]
public async Task<HttpResponseMessage> wx()
{
    LogHelper log = new LogHelper();
    var content = await Request.Content.ReadAsStringAsync();
    log.LogError(content);
    HttpResponseMessage responseMessage = new HttpResponseMessage();
    return responseMessage;
}
/// <summary>
/// 验证微信签名
/// </summary>
private bool CheckSignature(string token, string signature, string timestamp, string nonce)
{
    string[] ArrTmp = { token, timestamp, nonce };
 
    Array.Sort(ArrTmp);
    string tmpStr = string.Join("", ArrTmp);
    var data = SHA1.Create().ComputeHash(Encoding.UTF8.GetBytes(tmpStr));
    var sb = new StringBuilder();
    foreach (var t in data)
    {
        sb.Append(t.ToString("X2"));
    }
    tmpStr = sb.ToString();
    tmpStr = tmpStr.ToLower();
 
    if (tmpStr == signature)
    {
        return true;
    }
    else
    {
        return false;
    }
}

猜你喜欢

转载自www.cnblogs.com/kennyliu/p/9553037.html