326509877@qq.com
326509877@qq.com
  • 发布:2017-11-29 14:01
  • 更新:2019-02-11 17:02
  • 阅读:1905

微信支付提示支付验证签名失败

分类:HTML5+
   最近在做微信支付,目前已经能从APP跳转到微信,说明获取通道已经成功,但request方法不成功,但是微信提示“支付验证签名失败”,如下图1所示。  

签名我用官网校验工具校验得没问题,但是不知道为什么一直提示错误,前端代码如下  

this.$axios.get(url).then((res) => {
w.close();
w = null;
// 请求支付操作
var result = res.data;
var statement = {
appid: result.appid,
noncestr: result.nonce_str,
package: 'Sign=WXPay',
partnerid: result.mch_id,
prepayid: result.prepay_id,
timestamp: Number(result.timestamp),
sign: result.sign
};
window.plus.payment.request(key, statement, (result) => {
alert('支付成功');
}, (error) => {
alert('支付失败' + JSON.stringify(error));
});
})

2017-11-29 14:01 分享
已邀请:
326509877@qq.com

326509877@qq.com (作者)

当我写完这个提问的时候,我们后端找到了答案。为了方便以后有人遇到这样的问题,我还是贴出解决方法:
原因是后端的签名要加签,即需要二次签名。如果你只签名一次,官网也提示成功,这很神奇

  • skysowe

    你们当时做了沙箱验收吗?这是必须的还是可选的,我用沙箱能获得数据,直接用正式api密钥返回的数据是空

    2018-05-07 20:34

skysowe

skysowe

最近也在做微信支付的验收,请问验收的签名,是需要单独写一端代码来获取然后在整个验收期间都不变,还是需要在支付代码里每次都动态获取,直到验收完成,再换成自己的原来的API密钥???这里实在不明白,网上搜了好久也没有相关信息。

我自己写了个小的程序用curl来模拟post行为,始终获取失败

<?php  

    $xml = '<xml><appid>开放平台的AppID</appid><mch_id>商户号</mch_id><nonce_str>32位随机数</nonce_str><sign>微信支付API的密钥</sign></xml>';  
    $url = 'https://api.mch.weixin.qq.com/sandboxnew/pay/getsignkey';  
    $header[] = "Content-type: text/xml;charset=UTF-8";  

    $ch = curl_init();  
    curl_setopt($ch, CURLOPT_URL, $url);  
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);  
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
    curl_setopt($ch, CURLOPT_POST, true);  
    curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);  
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);  
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);  

    $a = curl_exec($ch);  
    echo $a;  

    curl_close($ch);    

?>  
<xml>  
  <return_code><!--[CDATA[FAIL]]--></return_code>  
  <return_msg><!--[CDATA[获取沙箱密钥失败,确认交易密钥是否正确]]--></return_msg>  
</xml>  

以下是官网的资料:


https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=23_1 这里看到了获取的说明,但是没说是怎么获取???

获取验签秘钥API:
请求Url https://api.mch.weixin.qq.com/sandboxnew/pay/getsignkey
是否需要证书 否
请求方式 POST

请求参数:
字段名 字段 必填 示例值 类型 说明
商户号 mch_id 是 1305638280 String(32) 微信支付分配的微信商户号
随机字符串 nonce_str 是 5K8264ILTKCH16CQ2502SI8ZNMTM67VS String(32) 随机字符串,不长于32位
签名 sign 是 5K8264ILTKCH16CQ2502SI8ZNMTM67VS String(32) 签名值


  • skysowe

    自己搞定了,https://segmentfault.com/q/1010000014739221

    2018-05-07 08:36

1294630128@qq.com

1294630128@qq.com

遇到相同的问题,请问已经解决了吗

要回复问题请先登录注册