fudiwei / DotNetCore.SKIT.FlurlHttpClient.Wechat

可能是全网最完整的 C# 版微信 SDK,封装全部已知的微信 OpenAPI,包含微信公众平台(订阅号+服务号+小程序+小游戏+小商店+视频号)、微信开放平台、微信商户平台(微信支付+微企付)、企业微信、微信广告平台、微信智能对话开放平台等模块,可跨平台。持续随官方更新,欢迎 Star/Fork/PR。QQ 交流群 875580418【满】、930461548【满】、611974621。
https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient
MIT License
1.51k stars 292 forks source link

微信支付v3支付功能都能用,但是用添加分账的功能返回 HTTP header缺少微信支付平台证书序列号(Wechatpay-Serial)" #164

Open suciwastuti093 opened 1 week ago

suciwastuti093 commented 1 week ago

现在业务逻辑需要用到分账的功能。在使用添加分账的功能的时候返回

{"code":"PARAM_ERROR","message":"HTTP header缺少微信支付平台证书序列号(Wechatpay-Serial)"}

代码 ` var options = new WechatTenpayClientOptions(); options.MerchantId = pingTai.WX_ZF_Mchid; options.MerchantV3Secret = pingTai.WX_ZF_APIV3_KEY; options.MerchantCertificateSerialNumber = pingTai.WX_ZF_Cert_Serial_NO; options.MerchantCertificatePrivateKey = pingTai.WX_ZF_Cert_Serial_PrivateKey; options.PlatformCertificateManager = new InMemoryCertificateManager();

var wechatTenpayClient = WechatTenpayClientBuilder.Create(options).Build();

var req = new AddProfitSharingReceiverRequest() { AppId = pingTai.WX_XCX_APPID, Type = "MERCHANT_ID", Account = AppConfig.wxFenZhangConfig.MERCHANT_ID, Name = AppConfig.wxFenZhangConfig.MERCHANT_NAME, RelationType = "SERVICE_PROVIDER",

};

var response =await wechatTenpayClient.ExecuteAddProfitSharingReceiverAsync(req);

`

通过抓包得知在请求的时候头部缺少微信帮助文档中的Wechatpay-Serial image

fudiwei commented 1 week ago

每个请求模型都有一个 WechatpayCertificateSerialNumber 属性是用来设置这个的。

另外建议先阅读文档里《如何加密请求中的敏感数据?》这一章。