苹果内购+订单结算页面条件编译
This commit is contained in:
117
utils/myIapCheck.js
Normal file
117
utils/myIapCheck.js
Normal file
@@ -0,0 +1,117 @@
|
||||
import store from '@/store/index.js'
|
||||
import $http from '@/config/requestConfig.js';
|
||||
// #ifdef APP-PLUS
|
||||
const iapChannel = null;
|
||||
const checking = false
|
||||
const ComplateRequestArr = []
|
||||
// #endif
|
||||
// #ifdef H5
|
||||
// const bgm = {};
|
||||
// #endif
|
||||
|
||||
|
||||
var iap = {
|
||||
// 检测支付通道
|
||||
getChannels(){
|
||||
const that = this;
|
||||
console.log('检测支付通道')
|
||||
plus.payment.getChannels(async (channels) => {
|
||||
for (var i in channels) {
|
||||
// 判断是否苹果支付1
|
||||
if (channels[i].id === "appleiap") {
|
||||
console.log("存在苹果内购channels",channels, );
|
||||
that.iapChannel = channels[i];
|
||||
// 先检测有没有未完成的订单
|
||||
that.restoreComplateRequest()
|
||||
}else{
|
||||
console.log('安卓客户端');
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
// 检测是否有未关闭订单
|
||||
restoreComplateRequest() {
|
||||
let that = this
|
||||
console.log('检测未完成订单')
|
||||
this.iapChannel.restoreComplateRequest({
|
||||
manualFinishTransaction: true
|
||||
}, function(results) {
|
||||
if (!that.checking) {
|
||||
that.checking = true
|
||||
// results 格式为数组存放恢复的IAP商品交易信息对象 IAPTransaction,通用需将返回的支付凭证传给后端进行二次认证
|
||||
that.ComplateRequestArr = results
|
||||
console.log('未完成订单数组共有:=》',that.ComplateRequestArr.length ,that.ComplateRequestArr)
|
||||
|
||||
if (that.ComplateRequestArr.length > 0) {
|
||||
that.ComplateRequestArr.map((item, index) => {
|
||||
// "0"为正在支付;"1"为支付成功;"2"为支付失败;"3"为支付已恢复。
|
||||
if (item.transactionState == '1') {
|
||||
console.log('待验证订单,即将进入后台验证:=>', item)
|
||||
// return false
|
||||
// 已经支付,但是没有走逻辑的内购订单 就发给后台做验证
|
||||
that.iapCheck(item, index)
|
||||
// that.finishTransaction(item)
|
||||
} else {
|
||||
// 其他状态的内购订单
|
||||
that.finishTransaction(item)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
// 关闭订单
|
||||
finishTransaction(trans) {
|
||||
this.iapChannel.finishTransaction(
|
||||
trans,
|
||||
(success) => {
|
||||
console.log("关闭订单成功");
|
||||
that.checking = false
|
||||
},
|
||||
(fail) => {
|
||||
console.log("关闭订单失败");
|
||||
that.checking = false
|
||||
}
|
||||
);
|
||||
},
|
||||
iapCheck(result) {
|
||||
let that = this;
|
||||
console.log("进入后台验证");
|
||||
let data = {
|
||||
transactionId: result.transactionIdentifier, // 支付交易id
|
||||
customerOid: store.state.userInfo.id,
|
||||
productId: result.payment.productid.slice(1), // 产品id
|
||||
orderId: result.payment.username, // 系统订单号
|
||||
receiptData: result.transactionReceipt, // 苹果返回收据
|
||||
// isSandBox:true
|
||||
// body: that.stepsCj.priceTypeId // 充值类型id
|
||||
};
|
||||
console.log("提交给后台的数据=>", data);
|
||||
// return false
|
||||
$http
|
||||
.request({
|
||||
url: "/Ipa/veri",
|
||||
method: "POST", // POST、GET、PUT、DELETE,具体说明查看官方文档
|
||||
data,
|
||||
header: {
|
||||
//默认 无 说明:请求头
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
})
|
||||
// $http.post('Ipa/veri', data)
|
||||
.then((res) => {
|
||||
// console.log(JSON.stringify(res));
|
||||
if (res.code == 0) {
|
||||
// uni.hideLoading()
|
||||
console.log("充值订单已处理....");
|
||||
// 服务器验证票据有效后在客户端关闭订单 (iapChannel.finishTransaction)
|
||||
that.finishTransaction(result);
|
||||
}
|
||||
})
|
||||
.catch((e) => {
|
||||
console.log('后台验证失败=>',e);
|
||||
});
|
||||
},
|
||||
}
|
||||
module.exports = {iap}
|
||||
|
||||
Reference in New Issue
Block a user