收藏
回答

微信支付输入密码后一直加载,然后提示:“支付失败 请稍后再试”?已经检查空格、总金额为整数

目前消息回调函数输出值为空,是否是因为微信返回数据存在加密,麻烦有懂的大佬给小弟指点一下


前端代码(uniapp)

 wx.requestPayment({

  appId:appid,

          timeStamp:timeStamp,

          nonceStr: nonce_str,

          package: packageValue,

          signType: 'MD5',

  paySign:sign,

          success: function (resp) {

            console.log('success:' + JSON.stringify(resp));

            uni.showToast({

              title: '支付成功',

              icon: 'none',

              duration: 2000

            });

            const params = {

              outTradeNo: this.toClass.orderId + '',

            };

            getwxorder(params).then(orderStatus => {

              console.log(orderStatus);

              setTimeout(function () {

                uni.navigateTo({

                  url: '/pages/course/order?item=2'

                });

              }, 0);

            });

          },

          'fail': function (resp) {

            console.log('fail:' + JSON.stringify(resp));

            uni.showToast({

              title: '支付失败',

              icon: 'none'

            });

          },

          'complete': function (resp) {

            console.log('complete:' + JSON.stringify(resp));

            // 在此处执行支付完成后的回调操作

          }

        });

      } else {

        console.log('Failed to get payment parameters from the server.');

      }

输出:

以下是后端回调地址代码(node.js)

exports.notify = (req, res) => {

console.log(req.body);

  var jsonData = req.body.xml;

  if (jsonData.return_code == 'SUCCESS') {

    var key = "我的key";

console.log(jsonData);

    if (true) { //sign == jsonData.sign

      console.log('yes')

      // 在这里添加数据到数据库

      //json转xml

      var json2Xml = function (json) {

        let _xml = '';

        Object.keys(json).map((key) => {

          _xml += `<${key}>${json[key]}</${key}>`

        })

        return `<xml>${_xml}</xml>`;

      }

      var sendData = {

        return_code: 'SUCCESS',

        return_msg: 'OK'

      }

      res.end(json2Xml(sendData));

    }

  }

};

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

1 个回答

  • 默
    2023-08-03

    你在微信网页内使用小程序的支付API ?

    微信内网页支付参考:https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_1_4.shtml

    2023-08-03
    有用
    回复 2
    • 唐俊伟
      唐俊伟
      2023-08-07
      非常感谢您的回答,我今天拿到对应的私钥,但是在调起支付接口时提示支付验证签名失败,然后我查询相关问题,可能是因为在创建微信支付订单时使用的加密方式与调起支付使用的加密方式不同,对数据使用私钥进行签名似乎是微信支付v
      3版本所特有的,在v2版本的加密方式中仅有MD5和HMAC-SHA256,其中HMAC-SHA256采用商户key对数据进行的加密,因此我依旧无法成功支付。不知道v2版本下是否有相关问题的解决方案,若还是不行我只能重头至尾重新尝试一下v3版本的支付。谢谢!!!
      2023-08-07
      回复
    • 唐俊伟
      唐俊伟
      2023-08-08
      十分感谢,我解决问题了,还是因为总金额存在问题,因为在之前遇到过报错提示总金额需要使用有符号整数,然后看到有人说需要在总金额前添加一个加号,添加之后报错解决了。然后在刚刚我删除加号后支付成功了。
      2023-08-08
      回复
登录 后发表内容