uniapp H5调取微信支付流程
uni-app H5 调取微信支付流程
在 uni-app H5项目中,调取微信支付流程是一个常见的需求。下面是详细的步骤和代码示例。
1. 微信支付配置
首先,我们需要在微信开放平台上创建一个应用,并且配置好支付相关信息,如商户 ID、密钥等。
微信支付接口
我们需要使用微信支付提供的接口来完成支付流程。主要涉及以下几个步骤:
* 预支付订单(Unified Order):生成一个预付款单,用于保存交易信息。
* 关闭订单(Close Order):如果用户取消了支付,需要关闭该订单。
* 查询订单(Query Order):用于获取订单的状态。
2. uni-app H5项目配置
在 uni-app H5项目中,我们需要配置好微信支付相关信息,如 AppID、密钥等。
uni-app H5项目目录结构
我们需要在项目根目录下创建一个 `wx.config.js` 文件,用于存储微信支付相关配置信息。
```javascript// wx.config.jsmodule.exports = {
appId: 'your_app_id',
mchId: 'your_mch_id',
key: 'your_key'
}
```
3. 订单 ID 重定向
在 uni-app H5项目中,我们需要将订单 ID 重定向到当前页面路径上,用于获取预付款单。
uni-app H5 页面代码
我们需要在 uni-app H5 页面中添加一个函数来重定向到当前页面路径,并传递订单 ID。
```javascript// pages/index.jsPage({
data: {},
onLoad() {
// 重定向到当前页面路径 wx.redirectTo({
url: '/pages/pay/index?orderId=' + orderId,
})
}
})
```
4. 预付款单生成
在 uni-app H5项目中,我们需要使用微信支付接口来生成预付款单。
uni-app H5 页面代码
我们需要在 uni-app H5 页面中添加一个函数来生成预付款单,并传递订单 ID。
```javascript// pages/pay/index.jsPage({
data: {},
onLoad(options) {
const orderId = options.orderId;
//生成预付款单 wx.request({
url: ' method: 'POST',
header: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data: {
appid: getApp().globalData.appId,
mch_id: getApp().globalData.mchId,
nonce_str: Math.random().toString(36).substr(2,15),
body: '测试订单',
out_trade_no: orderId,
total_fee:1,
spbill_create_ip: '192.168.0.1',
notify_url: ' },
success(res) {
console.log(res)
}
})
}
})
```
5. 支付结果处理
在 uni-app H5项目中,我们需要根据微信支付接口返回的结果来处理支付结果。
uni-app H5 页面代码
我们需要在 uni-app H5 页面中添加一个函数来处理支付结果,并更新订单状态。
```javascript// pages/pay/index.jsPage({
data: {},
onLoad(options) {
const orderId = options.orderId;
//生成预付款单 wx.request({
url: ' method: 'POST',
header: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data: {
appid: getApp().globalData.appId,
mch_id: getApp().globalData.mchId,
nonce_str: Math.random().toString(36).substr(2,15),
body: '测试订单',
out_trade_no: orderId,
total_fee:1,
spbill_create_ip: '192.168.0.1',
notify_url: ' },
success(res) {
console.log(res)
// 支付成功 wx.showToast({
title: '支付成功',
icon: 'success',
duration:2000 })
// 更新订单状态 updateOrderStatus(orderId, 'paid')
}
})
}
})
```
6. 关闭订单
在 uni-app H5项目中,我们需要根据微信支付接口返回的结果来关闭订单。
uni-app H5 页面代码
我们需要在 uni-app H5 页面中添加一个函数来关闭订单,并更新订单状态。
```javascript// pages/pay/index.jsPage({
data: {},
onLoad(options) {
const orderId = options.orderId;
//生成预付款单 wx.request({
url: ' method: 'POST',
header: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data: {
appid: getApp().globalData.appId,
mch_id: getApp().globalData.mchId,
nonce_str: Math.random().toString(36).substr(2,15),
body: '测试订单',
out_trade_no: orderId,
total_fee:1,
spbill_create_ip: '192.168.0.1',
notify_url: ' },
success(res) {
console.log(res)
// 支付失败 wx.showToast({
title: '支付失败',
icon: 'error',
duration:2000 })
// 关闭订单 closeOrder(orderId)
}
})
}
})
```
7. 查询订单
在 uni-app H5项目中,我们需要根据微信支付接口返回的结果来查询订单。
uni-app H5 页面代码
我们需要在 uni-app H5 页面中添加一个函数来查询订单,并更新订单状态。
```javascript// pages/pay/index.jsPage({
data: {},
onLoad(options) {
const orderId = options.orderId;
// 查询订单 wx.request({
url: ' method: 'POST',
header: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data: {
appid: getApp().globalData.appId,
mch_id: getApp().globalData.mchId,
nonce_str: Math.random().toString(36).substr(2,15),
out_trade_no: orderId },
success(res) {
console.log(res)
// 更新订单状态 updateOrderStatus(orderId, res.result.status)
}
})
}
})
```
以上就是 uni-app H5 调取微信支付流程的详细步骤和代码示例。