微信小程序支付及退款流程的介绍

1. 微信小程序支付流程

微信小程序支付包含以下步骤:

1.1 预支付

预支付指商户向微信支付后台提交支付单并进行支付参数签名的过程。在小程序中,可以通过wx.requestPaymentAPI实现。

以下是一个预支付的示例代码:

wx.requestPayment({

timeStamp: '',

nonceStr: '',

package: '',

signType: 'MD5',

paySign: '',

success: function(res) {

// 支付成功

},

fail: function(res) {

// 支付失败

}

})

其中,timeStampnonceStrpackagesignType以及paySign都是支付参数,需要商户在后台进行签名后生成。

1.2 支付结果查询

支付结果查询是指商户向微信支付后台查询支付结果的过程。在小程序中,可以通过wx.requestPayment API的success回调和fail回调来判断支付结果。

以下是一个支付结果查询的示例代码:

wx.requestPayment({

timeStamp: '',

nonceStr: '',

package: '',

signType: 'MD5',

paySign: '',

success: function(res) {

// 支付成功,查询支付结果

wx.request({

url: '',

data: {},

success: function(res) {

if (res.data.errcode === 0) {

// 支付成功

} else {

// 支付失败

}

}

})

},

fail: function(res) {

// 支付失败

}

})

1.3 交易结果通知

交易结果通知是指微信支付后台向商户后台发送支付结果通知的过程。在小程序中,需要在商户后台设置交易结果通知地址。

以下是一个交易结果通知的示例代码:

app.post('/notify', function(req, res) {

var body = req.body;

if (body.return_code === 'SUCCESS' && body.result_code === 'SUCCESS') {

// 支付成功

res.send('');

} else {

// 支付失败

res.send('');

}

});

2. 微信小程序退款流程

微信小程序退款包含以下步骤:

2.1 申请退款

申请退款指商户向微信支付后台提交退款单并进行退款参数签名的过程。在小程序中,可以通过wx.requestPayment API的fail回调中获取支付订单号,并通过wx.request API向商户后台提交退款请求。

以下是一个申请退款的示例代码:

wx.requestPayment({

timeStamp: '',

nonceStr: '',

package: '',

signType: 'MD5',

paySign: '',

success: function(res) {

// 支付成功,获取支付订单号

var outTradeNo = '';

// 提交退款请求

wx.request({

url: '',

data: {},

success: function(res) {

// 退款成功

}

})

},

fail: function(res) {

// 支付失败

}

})

2.2 退款结果查询

退款结果查询是指商户向微信支付后台查询退款结果的过程。在小程序中,可以通过wx.request API向商户后台提交退款结果查询请求。

以下是一个退款结果查询的示例代码:

wx.request({

url: '',

data: {},

success: function(res) {

if (res.data.errcode === 0) {

// 退款成功

} else {

// 退款失败

}

}

})

2.3 退款结果通知

退款结果通知是指微信支付后台向商户后台发送退款结果通知的过程。在小程序中,需要在商户后台设置退款结果通知地址。

以下是一个退款结果通知的示例代码:

app.post('/notify', function(req, res) {

var body = req.body;

if (body.return_code === 'SUCCESS' && body.result_code === 'SUCCESS') {

// 退款成功

res.send('');

} else {

// 退款失败

res.send('');

}

});