下面是“C#微信支付回调验签处理的实现”的完整攻略。
一、微信支付回调
在微信支付完成后,微信会向指定的回调URL发送支付结果消息通知,该通知内容是一个XML格式的文本,需要验证消息的真伪和合法性。
二、回调消息处理流程
微信回调验签的主要流程如下:
- 接收微信回调通知,并解析其内容得到相应的参数。
- 从微信公众平台后台下载证书,并将证书保存至本地。
- 将回调消息的参数进行签名,与微信返回的签名进行比对,判断消息的真伪。
三、开发C#微信支付回调验签处理代码
以下是一份C#微信支付回调验签处理的示例代码:
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Xml;
namespace WeChatPay
{
public class WxPay
{
#region 微信支付回调验签处理
/// <summary>
/// 微信支付回调验签处理
/// </summary>
public static bool VerifyNotify(string xmlData, string sign)
{
try
{
// 加载微信公钥证书
X509Certificate2 wxCert = new X509Certificate2(@"apiclient_cert.p12", "商户证书密码(如不需要,请置空字符串)", X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);
// 从证书中提取公钥
var pubKey = wxCert.PublicKey.Key as RSACryptoServiceProvider;
// 验证签名
bool checkResult = pubKey.VerifyData(Encoding.UTF8.GetBytes(xmlData), "SHA1", Convert.FromBase64String(sign));
return checkResult;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
return false;
}
}
#endregion
}
}
四、说明
VerifyNotify
方法中的xmlData
参数是微信回调通知的XML格式的文本,sign
参数是微信加密后的签名。VerifyNotify
方法中,首先加载微信公钥证书并提取公钥,然后将回调消息的参数进行签名,最后与微信返回的签名进行比对,以确认消息的真伪和合法性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# 微信支付回调验签处理的实现 - Python技术站