Skip to content
Bitzsoft.Integrationsbitzsoft.integrations

Reference

微信支付 Payment

微信支付服务——RSA-SHA256 请求签名 + AES-256-GCM 回调解密。

Last updated

基于微信支付 APIv3 实现,采用 RSA-SHA256 请求签名和 AES-256-GCM 回调解密。

包信息

  • NuGet 包:Bitzsoft.Integrations.Payment.WeChatPay
  • 接口:IPaymentProvider
  • 鉴权:RSA-SHA256 请求签名
  • Provider ID:wechatpay

配置

字段类型必填默认值说明
AppIdstring微信应用 AppId(公众号 / 小程序 / APP)
MchIdstring商户号
MchSerialNostring商户证书序列号(APIv3 请求签名头)
APIv3KeystringAPIv3 密钥(32 字节,仅用于回调 AES-256-GCM 解密)
PrivateKeystring商户 API 私钥(PEM 格式,用于 RSA-SHA256 签名)
WeChatPayPublicKeystring微信支付平台公钥(PEM 格式,用于回调验签,商户公钥)
NotifyUrlstring?异步通知回调地址
ApiBasestringhttps://api.mch.weixin.qq.comAPI 基地址
TimeoutTimeSpan00:00:30HTTP 请求超时
HttpClientNamestringWeChatPayPaymentProvider命名 HttpClient 标识
{
"WeChatPay": {
"AppId": "wx-your-appid",
"MchId": "your-mch-id",
"MchSerialNo": "your-cert-serial-no",
"APIv3Key": "your-32-byte-apiv3-key",
"PrivateKey": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----",
"WeChatPayPublicKey": "-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----",
"NotifyUrl": "https://your-site.com/callback/wechatpay"
}
}

注册

// 方式一:IConfiguration(默认读取 "WeChatPay" 配置节)
services.AddBitzsoftWeChatPayPayment(configuration);
// 方式二:委托配置
services.AddBitzsoftWeChatPayPayment(options =>
{
options.AppId = "wx-your-appid";
options.MchId = "your-mch-id";
options.MchSerialNo = "your-cert-serial-no";
options.APIv3Key = "your-32-byte-apiv3-key";
options.PrivateKey = File.ReadAllText("wechat_private_key.pem");
options.WeChatPayPublicKey = File.ReadAllText("wechatpay_public_key.pem");
});

使用示例

var orderResult = await provider.CreateOrderAsync(new PaymentOrderRequest
{
OutTradeNo = "ORDER_20260801_002",
Subject = "微信商品订单",
TotalAmount = 199.00m,
Scene = PaymentScene.App
});
// 查询状态
var status = await provider.QueryStatusAsync("ORDER_20260801_002");
// 关闭订单
await provider.CloseOrderAsync("ORDER_20260801_002");

鉴权机制

  • 请求签名:使用商户私钥对请求做 RSA-SHA256 签名,Authorization 头携带商户证书序列号和签名。
  • 回调验签:使用微信支付平台公钥验证 Wechatpay-Signature,再用 APIv3Key 做 AES-256-GCM 解密回调资源。

已知限制

WeChatPayPublicKey 是微信支付平台公钥,不是商户自己的公钥。多证书轮换暂不支持,当前仅使用单一配置公钥。

100%

滚轮或按钮缩放 · 放大后拖动画面 · 双击切换 100% / 200%