在对接项目时候
有个钉钉支付需求:在这里也是查了很多文档
其实小程序引入sdk包后里面是封装好了支付方式,
小程序直接调用方法:
这里的token是后端加了权限验证拦截器
topay(){
let _this = this;
console.log("11111",)
let params = {
totalAmount: 1,
subject: '积分',
body: '购物积分'
}
const userToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjcmVhdGVfdGltZSI6MTcwMjg3ODU4NCwicGFzc3dvcmQiOiJtYXBsZSIsInVzZXJpZCI6ImUwN2NmY2ZjLWEwN2QtNDBkOC04ODI4LWJmNWEyNjc5ZTM0MyIsInVzZXJuYW1lIjoibWFwbGUifQ.SAu7bNca0LC2w7pfhUJJQrdcE-QClPgf8H1GF_BkJ1A";
uni.request({
url: _this.$server.payBaseUrl + '/pay/orderin',
method: 'POST',
data: params,
header:{"content-type":"application/x-www-form-urlencoded","Token":userToken},
dataType: 'json',
success: (res) => {
let info = res.data.msg
dd.pay({
info:info,
has_alipay:false,
success: res => {
uni.showToast({
title:'支付成功'+res
})
console.log("支付结果",res)
},
fail: err =>{
dd.alert({
content:JSON.stringify(err)
})
}
})
},
fail: (err) => {
console.log("错误返回",err)
this.$u.toast("支付失败!"+JSON.stringify(err))
reject(err)
}
})
},
uniapp安卓调用
submitpay(){
let _this = this;
console.log("11111",)
let params = {
totalAmount: _this.fifter.money,
subject: '积分',
body: '购物积分'
}
// _this.$u.api.orderin(params).then(res => {
// // _this.numdata = res.data;
// console.log("返回数据",res)
// })
const userToken = db.get("userToken");
uni.request({
url: 'http://'+apiBaseUrl + '/pay/orderin',
// url: "http://192.168.100.143:8081" + '/pay/orderin',
method: 'POST',
data: params,
header:{"content-type":"application/x-www-form-urlencoded","Token":userToken},
dataType: 'json',
success: (res) => {
let info = res.data.msg
//支付
var orderInfo = info; //从服务器获取的订单
uni.getProvider({
service: 'payment',
success: function (res) {
console.log(res.provider)
if (~res.provider.indexOf('alipay')) {
uni.requestPayment({
"provider": "alipay", //固定值为"alipay"
"orderInfo": orderInfo, //此处为服务器返回的订单信息字符串
success: function (res) {
var rawdata = JSON.parse(res.rawdata);
this.testendget = rawdata;
console.log("支付成功");
this.$u.toast("支付成功"+res.rawdata)
},
fail: function (err) {
this.$u.toast("支付失败!"+JSON.stringify(err))
console.log('支付失败:' + JSON.stringify(err));
}
});
}
}
});
},
fail: (err) => {
console.log("错误返回",err)
this.$u.toast("支付失败!"+JSON.stringify(err))
reject(err)
}
})
},
这个需要后端接口,这里我后端接口是用go语言写的,返回的字符串拼接数据,这里最重要的一个点就是
手机网站和电脑网站,以及小程序app支付的区别,
手机网站支付
必传不同点:method=alipay.trade.wap.pay,product_code=QUICK_WAP_WAY。
详情可查看 手机网站支付产品。
电脑网站支付
必传不同点:method=alipay.trade.page.pay,product_code=FAST_INSTANT_TRADE_PAY。
详情可查看 电脑网站支付产品。
APP 支付
必传不同点:method=alipay.trade.app.pay,product_code=QUICK_MSECURITY_PAY。
详情可以看看这个
最后就是实际的业务需求