发布于 

小程序支付代码实现

这里只是写一下小程序相关的js代码吧,wxss和wxml代码就自行调试吧

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// app.js
App({
globalData: {
openid:'',
payapiUrl:'https://pay-api.example.com',
wxapiUrl:'https://wx-api.example.com'

},
onLaunch() {
console.log(this.globalData)
var _this =this;
// 登录
wx.login({
success: res => {
//console.log(res.code)
wx.request({
url: this.globalData.wxapiUrl + '/login',
method:"POST",
data:{
code:res.code
},
dataType:"json",
header: {
"Content-Type": "application/x-www-form-urlencoded"
}
,success:function(result){
// console.log(result.data.openid)
_this.globalData.openid = result.data.openid
}
})
}
})
}
})
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
// pages/orderPay/orderPay.js
var app = getApp();
Page({
data: {
orderNo:"",
payMoney:"",
name:"",
merchant:""
},
onLoad: function (options) {
if(options.q){
var _this=this;
var link = decodeURIComponent(options.q);
var paramArr = link.split('=');
this.setData({
orderNo:paramArr[1]
})
wx.request({
url: app.globalData.apiUrl + '/order/getinfo',
data:{
id:paramArr[1]
},
success:function(e){
console.log(e.data)
if(!e.data.amt){
wx.redirectTo({
url: '/pages/info/error',
})
return;
}
//订单状态为已经支付或者已经扫码
//TODO:具体订单报错信息
if(e.data.status != 0){
wx.redirectTo({
url: '/pages/info/error',
})
return;
}
_this.setData({
payInfo:{
payMoney:e.data.amt,
name:e.data.name,
merchant:e.data.merchant
}
})
}
})
}else{
wx.redirectTo({
url: '/pages/info/error',
})
}

},
//支付函数
handlePay() {
var _this = this;
const {
payMoney
} = this.data
if (payMoney === ''|| payMoney ==0) return
wx.showLoading({
title: '加载中',
})
wx.request({
url: app.globalData.apiUrl + '/newpay/wechatPay',
dataType: "json",
header: {
"Content-Type": "application/x-www-form-urlencoded"
},
method: "POST",
data: {
openid: app.globalData.openid,
orderNo:_this.data.orderNo
},
success: function (e) {
wx.hideLoading()
var rst = e.data.data;
// var rst = JSON.parse(firstRst);
wx.requestPayment({
timeStamp: rst.timeStamp,
nonceStr: rst.nonceStr,
package: rst.package,
signType: rst.signType,
paySign: rst.paySign,
success: function (res) {
wx.redirectTo({
url: '/pages/result/success',
})
return;
},
fail: function (res) {
_this.setData({
showNotice: true
})
},
complete: function (res) {}
})
}
})
}
})