微信支付 调用支付JSAPI缺少参数:total_fee,支付失败

14

微信支付 调用支付JSAPI缺少参数:total_fee,支付失败

微信支付调用的问题解决

在微信支付的沙箱环境中,我们经常会遇到一些奇怪的问题。最近,我遇到了一个这样的问题:微信支付统一下单接口调用成功,但是微信端支付时JSAPI调用报错,提示缺少参数:total_fee,支付失败。

问题描述

在我们的项目中,我们使用微信支付的JSAPI来实现微信端的支付功能。我们先通过微信支付的统一下单接口(Unified Order Interface)来生成一个预付订单,然后再通过JSAPI来完成支付。

但是,在沙箱环境中,尽管我们成功地调用了统一下单接口,但是当我们尝试通过JSAPI进行支付时,却会报错,提示缺少参数:total_fee。这个问题让我们很头疼,因为我们已经检查过所有的参数了。

原因分析

经过一番调研,我们发现,这个问题是由于微信端的JSAPI接口有一个特殊的要求:必须传递一个名为“total_fee”的参数,表示支付金额。这个参数在我们的统一下单接口中已经包含了,但是在JSAPI接口中却没有被自动传递过去。

解决方案

为了解决这个问题,我们需要在JSAPI接口中手动传递这个“total_fee”参数。具体的步骤如下:

1. 在微信端的JSAPI接口中,添加一个名为“total_fee”的参数,值为支付金额。

2. 确保这个参数的值与统一下单接口中的“total_fee”参数值保持一致。

示例代码

以下是示例代码:

```javascript// 统一下单接口wx.request({

url: ' data: {

appid: 'your_app_id',

mch_id: 'your_mch_id',

nonce_str: wx.generateNonceStr(),

body: '测试支付',

out_trade_no: 'your_out_trade_no',

total_fee:1,

spbill_create_ip: '127.0.0.1',

notify_url: ' trade_type: 'JSAPI'

},

method: 'POST',

success: function(res) {

// 获取预付订单号 var prepay_id = res.data.prepay_id;

// JSAPI接口 wx.request({

url: ' data: {

appid: 'your_app_id',

mch_id: 'your_mch_id',

nonce_str: wx.generateNonceStr(),

prepay_id: prepay_id,

package: 'prepay_id=' + prepay_id,

sign_type: 'HMAC-SHA256',

pay: {

total_fee:1 // 添加total_fee参数 }

},

method: 'POST',

success: function(res) {

// 支付成功 console.log('支付成功');

},

fail: function(err) {

// 支付失败 console.error('支付失败', err);

}

});

},

fail: function(err) {

// 统一下单接口调用失败 console.error('统一下单接口调用失败', err);

}

});

```

结论

通过以上的分析和解决方案,我们可以看到,微信支付调用的问题主要是由于JSAPI接口中缺少“total_fee”参数导致的。通过手动添加这个参数,我们就可以成功地完成微信端的支付功能。

希望这篇文章能够帮助你解决类似的问题!

支付微信

版权声明:除非特别标注,否则均为网络文章,侵权请联系站长删除。

上一篇 银河麒麟系统+信创电脑微信登录失败的 解决办法

下一篇 微信小程序集合