Administrator
发布于 2025-03-20 / 12 阅读
0
0

微信apikey 从v2修改v3需要修改的地方

主要修改点说明:

  1. 接口升级

csharp

复制

// 原v2接口
var url = "https://api.mch.weixin.qq.com/pay/unifiedorder";

// 新v3接口
var url = "https://api.mch.weixin.qq.com/v3/pay/transactions/jsapi";
  1. 签名方式升级

csharp

复制

// 原MD5签名
private string GenerateSign(SortedDictionary<string, string> parameters, string apiKey)

// 新RSA签名
private string SignWithPrivateKey(string message)
  1. 数据格式升级

csharp

复制

// 原XML格式
var xml = ToXml(parameters);

// 新JSON格式
var requestBody = new { ... };
var bodyStr = JsonConvert.SerializeObject(body);
  1. 证书使用方式

csharp

复制

// 必须使用p12证书文件
var cert = new X509Certificate2("证书路径.p12", mchId);
  1. 请求头变化

csharp

复制

// 添加Authorization头
client.DefaultRequestHeaders.Add("Authorization", 
    $"WECHATPAY2-SHA256-RSA2048 {signature}");
  1. 返回参数变化

csharp

复制

// 原XML解析
var prepayId = xmlDoc.SelectSingleNode("xml/prepay_id")?.InnerText;

// 新JSON解析
var result = await response.Content.ReadAsAsync<dynamic>();
return result.prepay_id;

需要补充的配置项(Web.config):

xml

复制

<appSettings>
  <add key="WeChat_AppId" value="小程序AppID"/>
  <add key="WeChat_MchId" value="商户号"/>
  <add key="WeChat_ApiV3Key" value="APIv3密钥"/>
</appSettings>

运行 HTML

注意事项:

  1. 需要从微信商户平台下载API证书(p12格式)

  2. 证书密码为商户号(mchId)

  3. 回调通知需要实现签名验证

  4. 支付金额单位为分(示例中固定为1分钱,实际需要根据订单获取)

  5. 需要处理微信支付结果通知(/api/wechat/notify)

  6. 建议将证书文件存放在App_Data等受保护目录

  7. 生产环境需要添加完整的错误处理和日志记录

建议使用Postman测试支付接口时,按以下顺序调试:

  1. 先确保能成功获取prepay_id

  2. 再测试小程序端支付流程

  3. 最后验证回调通知处理逻辑


评论