什么都是对的,但是就是一直报:签名错误
<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[SIGN_ERROR]]></return_msg><mch_appid><![CDATA[wx630e5d018886a0b3]]></mch_appid><mchid><![CDATA[1604925725]]></mchid><result_code><![CDATA[FAIL]]></result_code><err_code><![CDATA[SIGN_ERROR]]></err_code><err_code_des><![CDATA[签名错误]]></err_code_des></xml>
这说明 构造签名串 计算签名值 过程有错
这2个过程有问题,你需要跟着官网给的key和参数 套进你的代码 来验证 得出的签名值 是否一至.不一至就会出现你这样的问题
https://pay.weixin.qq.com/docs/merchant/development/generate-request-signature-verification/request-body-parameters-signature.html
把key复制下来,保存到txt 文档里,存为apiclient_test_key.pem 然后就可以在php里导入这个作为加密钥匙了,php的载入方法如下
$privateKey = openssl_get_privatekey(file_get_contents('data/apiclient_key.pem'));
照着给的参数,填进你的php或java 去计算,最后必需得出gE开头的值,
如果不一样,那你就得一步一步的 return 输出 查看拼接过程值,,
对于php而言,return输出拼接的字符,浏览器里不能看到有 \n,
它应该是这样子
但其实你的代码 必需是给它加了\n, 它只是在显示时,把\n,转换成了换行.
对于其它语言,你看到的可能不是这样了,总之原则就是,每行参数 尾部都要加上换行符号! 微信这么简单的要求,你们都做不到么?实在不行,你直接手动拼接,直接算,最后你一定算算对的!,真的很简单,只是微信文档不太给力,强烈要求给完整代码,copy就能用那种!
如此简单,还不会的,直接加我吧 hongro
https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=20_1 可以用在线签名验证工具校验,前提是你的key是正确的
这不是报签名错误,说明签名算法有问题啊,检查代码吧。