扫描小程序码分享
3 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
1、验签失败
微信接口更换没有时间限制,上面报错也跟接口版本无关。是你初始化时只配置了公钥来验签,而微信返回时用了平台证书的签名,所以验签失败。
你商户号目前在平台证书切换公钥的灰度过程中,期间调v3接口时,如果在请求头的wechatpay-serial传了公钥ID,那你接收到的应答就需要用公钥验签。不传wechatpay-serial或者传平台证书序列号,则需要用平台证书验签。
另外请注意下,灰度期间微信给你回调是随机用证书或者公私钥的,请以微信返回的wechatpay-serial值为准,具体请了解下https://pay.weixin.qq.com/doc/v3/merchant/4012154180
2、签名失败
v2接口签名用APIv2密钥。v3接口签名用的是API证书中的私钥,并且需要在请求头中传对应的证书序列号。请注意不同版本各自的签名方式
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
也不行,要转?
你需要在自己系统中同时兼容两种模式
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
1、验签失败
微信接口更换没有时间限制,上面报错也跟接口版本无关。是你初始化时只配置了公钥来验签,而微信返回时用了平台证书的签名,所以验签失败。
你商户号目前在平台证书切换公钥的灰度过程中,期间调v3接口时,如果在请求头的wechatpay-serial传了公钥ID,那你接收到的应答就需要用公钥验签。不传wechatpay-serial或者传平台证书序列号,则需要用平台证书验签。
另外请注意下,灰度期间微信给你回调是随机用证书或者公私钥的,请以微信返回的wechatpay-serial值为准,具体请了解下https://pay.weixin.qq.com/doc/v3/merchant/4012154180
2、签名失败
v2接口签名用APIv2密钥。v3接口签名用的是API证书中的私钥,并且需要在请求头中传对应的证书序列号。请注意不同版本各自的签名方式
下载微信支付公钥
也不行,要转?
你需要在自己系统中同时兼容两种模式
try {
$resp = $instance->chain('v3/certificates')->get();
$response = json_decode((string) $resp->getBody(), true);
echo json_encode($response, JSON_UNESCAPED_UNICODE);
error_log('设置平台证书: ' . json_encode($response, JSON_UNESCAPED_UNICODE));
if (isset($response['data']) && is_array($response['data'])) {
foreach ($response['data'] as $cert) {
// 解密证书
$decryptedCert = $this->decryptCertificate($cert['encrypt_certificate']);
// 设置到实例中
echo json_encode($decryptedCert, JSON_UNESCAPED_UNICODE);
error_log('设置平台证书: ' . $cert['serial_no'] . ' ' . $decryptedCert);
$instance->setCert($cert['serial_no'], $decryptedCert);
}
}
} catch (\Exception $e) {
error_log('获取平台证书失败: ' . $e->getMessage());
}
}
平台的证书也下不了