调支付接口的时,先需要服务器先进行签名,签名中获取服务器地址时有个小坑,要注意!
1、前端会先调用微信的登录接口获取这些值:
把下面这些值给后台:
totalAmount:"",-----钱
description: "",------描述苹果辅助查询拼音
openid: "",----用户openid
2、后台调用 “统一下单” 接口要把下面的参数给前端:(需要写接口)
timeStamp、nonceStr、package、signType、 paySign、
out_trade_no
3、然后前端再掉支付的接口:(微信提供的requestPayment),(不用写接口)
4、成功之后:前端会调个(获取用户支付的信息)(不用写接口)
5、成功之后:
后台还需要做个统计支付过的订单:(需要统计什么这个接口随意)
姓名+货物+价格+openid
App({
onLaunch: function () {
},
globalData: {
code:
''
},
// 获取openid,inputStr => 传的值(可有可没有)
getopenid:
function (inputStr) {
console.log(inputStr, getPageID)
// 登录
wx.login({
success: res => {
if (res.errMsg ==
"login:ok") {
this.globalData.code = res.code;
// 发送 res.code 到后台换取 openId
wx.request({
url:
'**********/baima/api/weixin/getOpenid',
data: {
appNum:
'01',
code: res.code,
detailInfo:
false,
sign: signs
},
method:
'get',
success:
function (res) {
if (res.data.status ==
200) {
// fee正整数,以分为单位,官方文档规定
wx.request({
url:
'***********/pay/****',
data: {
body:
'随意',
fee:
0.01 *
100,
openid: res.data.data,
sign: signs,
},
// 统一下单成功
success:
function (res) {
console.log(res);
// fee正整数,以分为单位,官方文档规定 (timeStamp、nonceStr、package、signType、paySign) 成功之后返回
//!!!!!!!!!!!!!注意后台签名用到的(商户Key)一定要是自动生成32位的,不然后台签名会一直失败!!!!!!!!!!!!!!
//paySign可以自己签,也可以让后台给你签
// var singn = 'appId=' + '*******' + '&nonceStr=' + dataAll.nonceStr + '&package=' + dataAll.packageData + '&signType=' + dataAll.signType + '&timeStamp=' + dataAll.timeStamp + '&key=' + '*******';
// var paySign = md5(singn);
// paySign = paySign.toUpperCase();
// console.log(paySign);
wx.requestPayment({
timeStamp:
'',
nonceStr:
'',
package:
'',
signType:
'',
paySign:
'',
success:
function (res) {
},
fail:
function (res) {
}
})
},
// 调用统一下单失败
fail:
function (res) {
console.log(
'统一下单失败' + res);
}
})
}
},
// 获取openid失败
fail:
function (res) {
console.log(
'获取openid失败' + res);
}
})
// 用户拒绝,或者登陆失败之后
}
else {
console.log(
'调用登陆接口,失败返回的信息' + res);
}
},
// 登陆失败之后
fail:
function () {
console.log(
'登陆失败,失败的错误信息' + res);
}
})
}
})