收藏
回答

微信支付JSAPI调用失败

做微信支付的jsapi微信里发起支付。

接口测试没问题,支付的授权目录也对。

发起支付时第一次成功支付。

然后再次发起支付,后台统一下单也成功,返了下返回到页面的js参数也都对,但是js调用支付失败。

换另一个微信号,第一次也成功,第二次就又不行。


等过一段时间(比如第二天)上面不能支付的微信号又可以支付了。

这可能是哪方面的原因?

最后一次编辑于  04-18  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

1 个回答

  • 微信支付技术助手4
    微信支付技术助手4
    04-18

    您好,

    1,检查统一下单和调起支付签名类型是否一致。

    2,检查商户订单号是否重复,需要确保在商户系统中唯一。

    3,定位第二次失败错误日志。


    友情提示:为了保护商户信息,请勿将您的商户私密参数发布在任何平台区域,感谢您对微信支付的支持。

    04-18
    赞同
    回复 1
    • 小飞
      小飞
      04-19

      把统一支付后的结果,还有生成签名后数据给前台js页面的数据都打印了下,

      1. 签名类型肯定是一致的,都是同一个md5函数执行的,要不然不会都是第一次成功

      2. 商户号不重复,每次提交都是一个out_trade_no, 成功获取到的prepay_id也不同的

      3. 第二次失败在页面里js 调用返回失败,这里只能微信里调用,找不到具体失败的原因(签名错误还是其他的原因)

      wx.chooseWXPay({

         timestamp: this.WXPayParams.timeStamp, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符

         nonceStr: this.WXPayParams.nonceStr, // 支付签名随机串,不长于 32 位

         package: this.WXPayParams.package, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=***)

         signType: this.WXPayParams.signType, // 签名方式,默认为'SHA1',使用新版支付需传入'MD5'

         paySign: this.WXPayParams.paySign, /



      我手工计算了下后台传入到js的参数,对比了签名用官方签名工具也核对了都是正确的(下面打印数据必要数据替换了假的,真实数据没问题,对比md5接口测试过都对的)



      [ INFO ] 获取微信支付签名数据:[appId=aaaaaaaaaaaa&nonceStr=UaVzhCUpR2Tw4gklxunHg7D59IRNAG6M&package=prepay_id=wx1913245367329531627584ba2824676354&signType=MD5&timeStamp=1555651493&], key [xxxxxxxxxxxxxxxxxxxx]


      [ INFO ] 微信支付prepay数据:[{"appId":"aaaaaaaaaaaa","package":"prepay_id=wx1913245367329531627584ba2824676354","timeStamp":"1555651493","nonceStr":"UaVzhCUpR2Tw4gklxunHg7D59IRNAG6M","signType":"MD5","paySign":"FF64F5B3EDD89BCB79D7398E8218C1C6"}]


      [ log ] 微信支付统一下单返回:[<xml><return_code><![CDATA[SUCCESS]]></return_code>

      <return_msg><![CDATA[OK]]></return_msg>

      <appid><![CDATA[aaaaaaaaaaaa]]></appid>

      <mch_id><![CDATA[8888888888]]></mch_id>

      <nonce_str><![CDATA[nWuUhUqwjZhRmaM7]]></nonce_str>

      <sign><![CDATA[9EE8E1495A5C5888F550CFC88ACF1E32]]></sign>

      <result_code><![CDATA[SUCCESS]]></result_code>

      <prepay_id><![CDATA[wx1913245367329531627584ba2824676354]]></prepay_id>

      <trade_type><![CDATA[JSAPI]]></trade_type>

      </xml>]


      04-19
      回复