1:在商户进件接口api中报错 string(59) "{"code":"PARAM_ERROR","message":"平台私钥解密失败"}"
2:用证书给需要加密的参数加的密
方法如下
function getEncrypt($str){
$public_key_path = 'cert.pem';
$public_key = file_get_contents($public_key_path);
$encrypted = '';
if (openssl_public_encrypt($str,$encrypted,$public_key,OPENSSL_PKCS1_OAEP_PADDING)) {
$sign = base64_encode($encrypted);
} else {
throw new Exception('encrypt failed');
}
return $sign;
}
(加密生成的字符串可以用私钥反向解密成原字符串)
3:调用商户进件接口api后报错 string(59) "{"code":"PARAM_ERROR","message":"平台私钥解密失败"}
证书用错了,应该用命令行或者API生成的那个证书(微信支付平台证书),而不是下载的zip中的cert
要注意平台证书和商户证书的区别
此处用错了证书,应该是平台证书,而不是商户API证书。
应使用apiclient_cert.pem加密姓名吗?
大坑踩了又踩 脑子用了又用
在进行敏感信息 包括姓名图片和身份证相关信息的时候 也需要使用微信的平台公钥进行加密 不然微信那边无法解密 我之前使用的是商户公钥进行加密的 然后这个是不行的 所以要区分号加密和解密的密钥
微信平台公钥加密要上送的敏信息(图片身份证信息 敏感字段什么的)
我就是踩了这个坑
我也遇到了,用证书下载工具生成的证书,在商户进件时加密,提示the field you encrypt is error。蛋碎。同样是用的php,加密方法也是上面这个,官方提供的方法
请按照以下几点进行了解:
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