用 C#封装 微信公众号统一下单签名的方法
时间: 2023-08-10 22:34:44 浏览: 198
好的,以下是使用 C# 封装微信公众号统一下单签名的方法:
```csharp
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
namespace WeChatPay
{
public class WeChatPayHelper
{
public static string Sign(Dictionary<string, string> parameters, string apiKey)
{
// 1. 按照 key 的字典序升序排序
var sortedKeys = parameters.Keys.ToList();
sortedKeys.Sort();
// 2. 拼接成字符串
var sb = new StringBuilder();
foreach (var key in sortedKeys)
{
var value = parameters[key];
if (!string.IsNullOrEmpty(value))
{
sb.Append(key + "=" + value + "&");
}
}
sb.Append("key=" + apiKey);
// 3. MD5 加密
var md5 = MD5.Create();
var bytes = md5.ComputeHash(Encoding.UTF8.GetBytes(sb.ToString()));
var sign = BitConverter.ToString(bytes).Replace("-", "").ToUpper();
return sign;
}
}
}
```
其中,parameters 是待签名的参数字典,apiKey 是商户 api_key。注意,在拼接字符串时,需要将各个参数按照 key 的字典序升序排序,并且在末尾加上商户 api_key。在加密时,需要将加密后的字节转换为十六进制字符串,并将其转换为大写字母。
阅读全文