Open 149392914 opened 2 years ago
Wechatpay-Serial 目前是会自动写入的,麻烦按照 issue 模板发一下文档等内容,方便大家同步信息,然后测试或者讨论。
此版块专为反馈 bug 及提交需求服务,不负责解答开发问题,请勿发表开发问题, 如果您需要这方面的帮助,请移步
问答社区
:https://weixin.senparc.com/QA
微信支付v3需要对敏感字段加密,例如分账个人接收方姓名,但是目前好像没有对应的加密过程 如果自行进行加密,又发现需要传Wechatpay-Serial,否则会提示如下信息: HTTP header缺少微信支付平台证书序列号(Wechatpay-Serial)
这个问题目前有没有解决办法?
https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter8_1_8.shtml
分账接收方类型是MERCHANT_ID时,是商户全称(必传),当商户是小微商户或个体户时,是开户人姓名 分账接收方类型是PERSONAL_OPENID时,是个人姓名(选传,传则校验) 1、此字段需要加密,加密方法详见:敏感信息加密说明 2、使用微信支付平台证书中的公钥:获取平台证书 3、使用RSAES-OAEP算法进行加密 4、将请求中HTTP头部的Wechatpay-Serial设置为证书序列号 示例值:hu89ohu89ohu89o
Email:
(也可将问题地址及联系方式发送到 www.jeffrey.su@gmail.com)
发布问题后,请保持对 issue 的关注,有时会有需要进一步沟通的信息,很长时间内没有得到答复的 issue 将被关闭。
Wechatpay-Serial 目前是会自动写入的,麻烦按照 issue 模板发一下文档等内容,方便大家同步信息,然后测试或者讨论。
目前看到最终请求的类是 Senparc.Weixin.TenPayV3.TenPayApiRequest,里面并无设置Wechatpay-Serial 相关头的过程,(注,这里是指请求头)
//TODO:此处重构使用ISenparcWeixinSettingForTenpayV3
TenPayHttpHandler httpHandler = new(_tenpayV3Setting);
//创建 HttpClient
HttpClient client = new HttpClient(httpHandler);//TODO: 有资源消耗和效率问题
//设置超时时间
client.Timeout = TimeSpan.FromMilliseconds(timeOut);
//设置 HTTP 请求头
SetHeader(client);
/// <summary>
/// 设置 HTTP 请求头
/// </summary>
/// <param name="client"></param>
public void SetHeader(HttpClient client)
{
//ACCEPT header
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("*/*"));
//User-Agent header
var userAgentValues = UserAgentValues.Instance;
client.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue("Senparc.Weixin.TenPayV3-C#", userAgentValues.TenPayV3Version));
client.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue($"(Senparc.Weixin {userAgentValues.SenparcWeixinVersion})"));
client.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue(".NET", userAgentValues.RuntimeVersion));
client.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue($"({userAgentValues.OSVersion})"));
}
问题描述
微信支付v3需要对敏感字段加密,例如分账个人接收方姓名,但是目前好像没有对应的加密过程 如果自行进行加密,又发现需要传Wechatpay-Serial,否则会提示如下信息: HTTP header缺少微信支付平台证书序列号(Wechatpay-Serial)
这个问题目前有没有解决办法?