https://pay.weixin.qq.com/wiki/doc/apiv3_partner/Offline/apis/chapter11_2_1.shtml
为什么这个接口会返回平台私钥解密失败?
https://pay.weixin.qq.com/wiki/doc/apiv3_partner/apis/chapter7_1_1.shtml
二级商户进件接口没有问题,说明平台的公钥和序列号是正确的
https://pay.weixin.qq.com/wiki/doc/apiv3_partner/Offline/apis/chapter11_2_2.shtml
这个接口也没问题
为什么获取对私银行卡号开户银行API就会返回平台私钥解密失败?
是不是电商平台不支持调用这个api接口,还是这个API的签名生成规则不一样?
https://pay.weixin.qq.com/wiki/doc/apiv3_partner/Offline/apis/chapter11_2_1.shtml 这个接口传参是GET方式,而银行卡是密文base64字符串,传输时需要处理特殊字符(一般SDK都会处理)。
PHP参考代码如下:
<?php use WeChatPay\Builder; use WeChatPay\Crypto\Rsa; Builder::factory([ 'mchid' => $mchid, 'privateKey' => $privateKey = Rsa::fromPkcs8($merchantPrivateKeyString), 'serial' => $merchantCerificateSerial, 'certs' => [$platformCertificateSerial => $publicKey = Rsa::fromSpki($platformPublicKeyString)], ]) ->chain('v3/capital/capitallhh/banks/search-banks-by-bank-account') ->getAsync([ 'headers' => [ 'Wechatpay-Serial' => $platformCertificateSerial, ], 'query' => [ 'account_number' => Rsa::encrypt('6228481831910000000', $publicKey) ], ]) ->then(fn ($res) => (string)$res->getBody()) ->otherwise(fn ($err) => (string)$err->getResponse()->getBody()) ->then(fn ($str) => fwrite(STDERR, $str)) ->wait();
打印的json如下:
{ "data": [ { "account_bank": "农业银行", "account_bank_code": 1005, "bank_alias": "农业银行", "bank_alias_code": "1000009548", "need_bank_branch": false } ], "total_count": 1 }
你好问题解决了吗
1、加密敏感数据用的公钥信息不正确
2、使用的平台证书不正确,可以查看对应的证书序列号与“平台证书接口”返回的是否一致
3、加密方式不正确,详情可以参考https://wechatpay-api.gitbook.io/wechatpay-api-v3/qian-ming-zhi-nan-1/min-gan-xin-xi-jia-mi
4、公钥信息获取请使用对应语种的函数进行,详情可以参考https://wechatpay-api.gitbook.io/wechatpay-api-v3/qian-ming-zhi-nan-1/min-gan-xin-xi-jia-mi