Conversation
There was a problem hiding this comment.
为什么要把buildAuthorization方法改成init方法呢?
There was a problem hiding this comment.
buildAuthorization原本就有得吧,我没改这个哦,我只添加了公钥id和公钥key变量名,在verifySign方法添加公钥验签功能,根据请求头含有PUB_KEY_ID_判断是公钥就使用公钥验签,没有则用平台证书,其它并没有改动。
There was a problem hiding this comment.
buildAuthorization原本就有得吧,我没改这个哦,我只添加了公钥id和公钥key变量名,在verifySign方法添加公钥验签功能,根据请求头含有PUB_KEY_ID_判断是公钥就使用公钥验签,没有则用平台证书,其它并没有改动。
你看index.js 372行,
protected buildAuthorization(method: string, url: string, params?: Record<string, any>) {变成了
protected init(method: string, url: string, params?: Record<string, any>) {调用的地方也同步被修改了,如396行
const authorization = this.buildAuthorization('POST', url, _params);变成了
const authorization = this.init('POST', url, _params);There was a problem hiding this comment.
这个pr怎么用到打包到项目里面
#87 这个issue里有说明如何打包到项目里,我按照步骤打包到项目里了
There was a problem hiding this comment.
buildAuthorization原本就有得吧,我没改这个哦,我只添加了公钥id和公钥key变量名,在verifySign方法添加公钥验签功能,根据请求头含有PUB_KEY_ID_判断是公钥就使用公钥验签,没有则用平台证书,其它并没有改动。
你看index.js 372行,
protected buildAuthorization(method: string, url: string, params?: Record<string, any>) {变成了
protected init(method: string, url: string, params?: Record<string, any>) {调用的地方也同步被修改了,如396行
const authorization = this.buildAuthorization('POST', url, _params);变成了
const authorization = this.init('POST', url, _params);
我看了buildAuthorization,init代码重复了,调用那个问题都不大吧,我确实是没动过这两个方法,我改的时候对git不是很熟悉,拉取合并提交出现问题,我是用fork,可能拉取到别人改的也不说。
|
/lgtm |
|
这样的话,新建实例的时候,publicKey 和 privateKey 2个参数就不需要了嘛? |
|
要的,发起支付用的还是商户API证书。回调验证签名可以根据请求头PUB_KEY_ID_判断
使用微信支付公钥验签还是平台证书验签。如果你有平台证书的话wxPayPublicKey和wxPayPublicId可以不需要,如果只要微信支付公钥就需要添加wxPayPublicKey和wxPayPublicId,从平台证书切换微信支付公钥期间也需要添加wxPayPublicKey和wxPayPublicId。publicKey 和 privateKey比选,wxPayPublicKey和wxPayPublicId可选。
ChOzawa
***@***.***
|
那么,对于新注册的商户号,没有证书,只有 pub_key.pem 和 pub_key_id ,这个 pr 还是不能支持支付和回调功能? |
|
哦,不好意思,我们是换了个商户号,之前怎么搞的忘记了,才找到获取证书的地方 :( |
|
商户API证书和平台证书是两码事,两个不同证书。商户API证书是发起发起支付用的,新、老商户号商户API证书都有。平台证书是支付成功后微信服务器通知到你服务器验签是否是微信发送,这叫做回调,平台证书回调验签只有老商户号,新商户号没有平台证书改成微信支付公钥。publicKey 和 privateKey 是商户API证书 的公钥和私钥,使用微信提供工具通过商户API证书生成公钥和私钥,这个必须填,否则无法发起支付。回调,第一点:如果有平台证书的话,那么wxPayPublicKey 微信支付公钥 和wxPayPublicId 微信支付公钥ID 是可以留空不写,第二点:如果没有平台证书只有微信支付公钥,那么你就要写wxPayPublicKey 微信支付公钥 和wxPayPublicId 微信支付公钥ID。第三点:既有平台证书也用微信支付公钥的话,这属于老商户号,默认使用平台证书,不切换微信支付公钥验签的情况下,那么wxPayPublicKey 微信支付公钥 和wxPayPublicId 微信支付公钥ID 是可以留空不写。如果不想用平台证书了,想切换微信支付公钥作为回调验签,那么你就要写wxPayPublicKey 微信支付公钥 和wxPayPublicId 微信支付公钥ID。
如果还不明白可以加我QQ,我这边教你。
ChOzawa
***@***.***
|
修改内容:
1.添加微信支付公钥证书和微信支付公钥ID的变量、接口,老商户号非必填(从平台证书切换微信支付公钥验签必填),新注册商户没有平台证书验签必填
2.微信支付公钥验签回调,根据Wechatpay-Serial的PUB_KEY_ID_微信支付公钥ID关键词判断使用平台证书或微信公钥证书进行验签。
3.所有发起支付、转账等请求头添加Wechatpay-Serial: 微信支付公钥ID,根据文档要求使用微信支付公钥部分字段加密必须携带,以及平台证书切换微信支付公钥验签过程中凡是使用支付相关接口必须携带(切换完成并废弃平台证书可不携带,但部分字段必须携带)。
已测试微信小程序支付,支付回调通知没问题,因为本人是个体户,而且只有小程序能测试,其它功能没办法测试,请各位大佬测试,若没问题请求合并。