收藏
回答

微信小程序 报错

框架类型 问题类型 API/组件名称 终端类型 操作系统 微信版本 基础库版本
小程序 Bug wx.requestPayment 客户端 Android 6.6.7 2.1.1

调用微信支付,我的支付一直返回支付验证签名失败,err_code是-1

不知道为什么,我用校验工具,都通过了,

具体的参数如下

appId:"wxc3c8295cb8a9c3d8"

nonceStr:"1530502592954"

packageValue:"prepay_id=wx02113632902836b58aa62a100937745017"

paySign:"F104C4A9D1FC32BF68557287937B38E3"

signType:"MD5"

timeStamp:"1530502592"

请问哪位能给我解答一下,这个问题么,真的好几天了,都调试不通过,微信就不能提供一个demo的程序么?好差的开发体验啊.

回答关注问题邀请回答
收藏

3 个回答

  • Robo0660
    Robo0660
    2018-07-05

    发现小程序的这个问题非常诡异

    1. 首先,我从服务器获取到了五个必须的字段,这五个字段,我如果直接在代码里面写死数据,可以直接调起支付,没有问题.

    2. 当我直接把拿到的数据赋值给wx.requestPayment,作为参数的时候,会出现错误,-1的情况就出现了.

      我的具体代码如下


    3. success: function(res) {

    4. wx.showToast({

    5. title: '创建订单成功',

    6. duration: 1000,

    7. mask: true

    8. })

    9. console.log(res);


    10. var time = String(res.data.data.timeStamp)

    11. var nonce = String(res.data.data.nonceStr)

    12. var packageName = String(res.data.data.packageValue)

    13. var pay = String(res.data.data.paySign)

    14. var sign = String(res.data.data.signType)


    15. console.log(time)

    16. console.log(nonce)

    17. console.log(packageName)

    18. console.log(pay)

    19. console.log(sign)


    20. wx.requestPayment({

    21. 'timeStamp': time,

    22. 'nonceStr': nonce, 

    23. 'package': packageName,

    24. 'signType': 'MD5',

    25. 'paySign': sign,

    26. success: function(res) {

    27. console.log("success");

    28. console.log(res);

    29. },

    30. fail: function(res) {

    31. console.log("fail");

    32. console.log(res);

    33. },

    34. complete: function(res) {

    35. console.log("complete");

    36. console.log(res);

    37. }

    38. })

    39. }


    代码对应的控制台输出如下

    {data: {…}, header: {…}, statusCode: 200, errMsg: "request:ok"}data: code: 0data: appId: "wxc3c8295cb8a9c3d8"nonceStr: "1530760287929"packageValue: "prepay_id=wx051111278716365a8b8d5f3e0644257598"paySign: "CE7713C270DF032CF76F34C7D67B08BA"signType: "MD5"timeStamp: "1530760287"__proto__: Objectdesc: "成功"__proto__: ObjecterrMsg: "request:ok"header: {Content-Type: "application/json;charset=UTF-8", Date: "Thu, 05 Jul 2018 03:11:27 GMT", Vary: "Accept-Encoding", Content-Length: "242"}statusCode: 200__proto__: Object

    11:11:28.016 pay.js? [sm]:177 1530760287

    11:11:28.017 pay.js? [sm]:178 1530760287929

    11:11:28.018 pay.js? [sm]:179 prepay_id=wx051111278716365a8b8d5f3e0644257598

    11:11:28.018 pay.js? [sm]:180 CE7713C270DF032CF76F34C7D67B08BA

    11:11:28.019 pay.js? [sm]:181 MD5

    11:11:37.733 pay.js? [sm]:196 fail

    11:11:37.734 pay.js? [sm]:197 {err_code: "-1", err_desc: "支付验证签名失败", errMsg: "requestPayment:fail"}


    但是控制台输出的数据,我直接写死代码就可以调用支付,这个微信的好奇怪啊,难道跟编码有关系么?


    我如果直接复制控制台参数到代码里面,直接可以过,而且调用起来微信没有问题.

    wx.requestPayment({

    'timeStamp': '1530760287',

    'nonceStr': '1530760287929', 

    'package': 'prepay_id=wx051111278716365a8b8d5f3e0644257598',

    'signType': 'MD5',

    'paySign': 'CE7713C270DF032CF76F34C7D67B08BA',

    success: function(res) {

    console.log("success");

    console.log(res);

    },

    fail: function(res) {

    console.log("fail");

    console.log(res);

    },

    complete: function(res) {

    console.log("complete");

    console.log(res);

    }

    })



    小程序的bug?我已经实验过好多次了,就是这样的.不知道原因.

    2018-07-05
    有用
    回复 1
    • xxxx
      xxxx
      2018-08-22

      我也出现了楼主一样的问题,不知道楼主是怎么解决的。

      2018-08-22
      回复
  • 疯狂的小辣椒
    疯狂的小辣椒
    2018-07-02

    你好,社区也有类似反馈,可以搜索下,或者按照下面这个方向查一下

    支付签名验证失败
    https://developers.weixin.qq.com/blogdetail?action=get_post_info&docid=0002aef8298988dee4b6727c25d800&highline=%E6%94%AF%E4%BB%98%E9%AA%8C%E8%AF%81%E7%AD%BE%E5%90%8D%E5%A4%B1%E8%B4%A5

    2018-07-02
    有用
    回复 1
    • Robo0660
      Robo0660
      2018-07-04

      好的,社区的这个我也看过的,还在查问题,谢谢,墙裂建议官方出一个demo的程序,服务端和小程序端都给个demo

      2018-07-04
      回复
  • 老杨
    老杨
    2018-07-02

    原因多方面  有 prepay_id 说明统一下单 没问题。  查下支付设置 安全域名是否匹配

    2018-07-02
    有用
    回复 4
    • Robo0660
      Robo0660
      2018-07-05

      问题原因找到了

      不是你说的问题,数据全都对,应该是小程序的bug了.坑死人了.


      2018-07-05
      回复
    • xxxx
      xxxx
      2018-08-22回复Robo0660

      层主,我也遇到了这样的问题,prepay_id有了,是不是可以说明我之前的步骤没问题?我就怕是我之前的签名和后面的签名有关系,前面设置出问题导致了后面出错


      2018-08-22
      回复
    • 故事我有,就是费酒
      故事我有,就是费酒
      2018-10-23回复Robo0660

      是怎样的bug,我也遇到这样的问题了


      2018-10-23
      回复
    • Robo0660
      Robo0660
      2018-11-02回复故事我有,就是费酒

      就是字段取错了,我的已经好了

      2018-11-02
      回复
登录 后发表内容