更换苹果支付模式
This commit is contained in:
@@ -234,117 +234,120 @@
|
||||
}
|
||||
// console.log(this.radioValue)
|
||||
},
|
||||
async iphonepay() {
|
||||
const that = this
|
||||
// 如果ios已经绑定支付信息,就直接支付,如果没有绑定,就需要先绑定
|
||||
uni.showLoading({
|
||||
title: '检测支付环境'
|
||||
})
|
||||
plus.payment.getChannels(async (channels) => {
|
||||
// console.log(channels, 'channels')
|
||||
for (var i in channels) {
|
||||
// 判断是否苹果支付1
|
||||
if (channels[i].id === 'appleiap') {
|
||||
that.iapChannel = channels[i]
|
||||
uni.showLoading({
|
||||
title: '检测历史订单'
|
||||
getProvider() {
|
||||
return new Promise((resolve, reject) => {
|
||||
uni.getProvider({
|
||||
service: 'payment',
|
||||
success: (res) => {
|
||||
const iapChannel = res.providers.find((channel) => {
|
||||
return (channel.id === 'appleiap')
|
||||
})
|
||||
await that.restoreComplateRequest()
|
||||
var timer = setInterval(() => {
|
||||
console.log('检测历史订单数量');
|
||||
that.iapChannel.restoreComplateRequest({
|
||||
manualFinishTransaction: true
|
||||
}, function(results) {
|
||||
if (results.length > 0) {
|
||||
console.log('未处理订单还存在,继续轮询...');
|
||||
} else {
|
||||
console.log('没有历史订单,开始请求新订单..');
|
||||
that.requestOrder();
|
||||
clearInterval(timer)
|
||||
console.log('timer清除了吗', timer);
|
||||
}
|
||||
})
|
||||
}, 1000)
|
||||
resolve(iapChannel);
|
||||
// 如果 iapChannel 为 null,说明当前包没有包含iap支付模块。注意:HBuilder基座不包含 iap 通道
|
||||
}
|
||||
// else{
|
||||
// uni.showToast({
|
||||
// title:'支付环境不支持IAP',
|
||||
// icon:'none'
|
||||
// })
|
||||
// }
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
},
|
||||
requestPayment(orderInfo) {
|
||||
let that = this
|
||||
return new Promise((resolve, reject) => {
|
||||
uni.requestPayment({
|
||||
provider: 'appleiap',
|
||||
orderInfo: orderInfo,
|
||||
success: (res) => {
|
||||
that.iapCheck(res);
|
||||
resolve(res);
|
||||
},
|
||||
fail: (err) => {
|
||||
uni.hideLoading()
|
||||
// console.log('其他支付错误', err);
|
||||
that.restoreComplateRequest()
|
||||
if (err.code == 2) {
|
||||
uni.showToast({
|
||||
title: '取消支付,内购订单即将关闭',
|
||||
icon: 'none'
|
||||
})
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: '支付失败,内购订单即将关闭',
|
||||
icon: 'none'
|
||||
})
|
||||
|
||||
}
|
||||
reject(err);
|
||||
}
|
||||
});
|
||||
})
|
||||
},
|
||||
async iphonepay() {
|
||||
const that = this;
|
||||
uni.showLoading({
|
||||
title:"检测支付环境"
|
||||
})
|
||||
console.log("检测支付环境...");
|
||||
this.iapChannel = await this.getProvider()
|
||||
console.log('that.iapChannel',this.iapChannel);
|
||||
if(this.iapChannel){
|
||||
this.requestOrder();
|
||||
}else{
|
||||
uni.hideLoading()
|
||||
uni.showToast({
|
||||
title:'不支持内购支付',
|
||||
icon:'none'
|
||||
})
|
||||
console.log("获取iap支付通道失败:" + e.message, that.iapChannel);
|
||||
}
|
||||
},
|
||||
requestOrder() {
|
||||
uni.showLoading({
|
||||
title: '获取商品信息',
|
||||
mask: true
|
||||
})
|
||||
const that = this
|
||||
console.log(that.stepsCj.priceTypeId, 88888888)
|
||||
// ['xxxxx'] 是平台申请拿到的内购商品的id
|
||||
let IAPOrders = []
|
||||
title: "获取商品信息",
|
||||
mask: true,
|
||||
});
|
||||
const that = this;
|
||||
console.log(that.stepsCj.priceTypeId, 88888888);
|
||||
// ['xxxxx'] 是平台申请拿到的内购商品的id
|
||||
let IAPOrders = [];
|
||||
IAPOrders.push(that.stepsCj.priceTypeId+'');
|
||||
console.log(IAPOrders, 'IAPOrders')
|
||||
// console.log(IAPOrders, "IAPOrders");
|
||||
// 新建订单
|
||||
uni.showLoading({
|
||||
title: "正在创建订单",
|
||||
mask: true,
|
||||
});
|
||||
that.iapChannel.requestOrder(IAPOrders, function(event) {
|
||||
// uni.hideLoading()
|
||||
console.log(event, 'event')
|
||||
for (var index in event) {
|
||||
var OrderItem = event[index]
|
||||
// console.log(OrderItem, 'OrderItem')
|
||||
console.log(OrderItem.productid, 'OrderItem.productid')
|
||||
that.topay(OrderItem.productid)
|
||||
that.iapChannel.requestProduct(
|
||||
IAPOrders,
|
||||
function(event) {
|
||||
// uni.hideLoading()
|
||||
console.log(event, "event");
|
||||
for (var index in event) {
|
||||
var OrderItem = event[index];
|
||||
// console.log(OrderItem, 'OrderItem')
|
||||
console.log(OrderItem.productid, "OrderItem.productid");
|
||||
that.topay(OrderItem.productid);
|
||||
}
|
||||
},
|
||||
function(erroemsg) {
|
||||
uni.showToast({
|
||||
title: "商品获取失败",
|
||||
icon: "none",
|
||||
});
|
||||
}
|
||||
}, function(erroemsg) {
|
||||
uni.showToast({
|
||||
title: "商品获取失败",
|
||||
icon: 'none'
|
||||
})
|
||||
})
|
||||
);
|
||||
},
|
||||
topay(id) {
|
||||
const that = this
|
||||
async topay(id) {
|
||||
const that = this;
|
||||
uni.showLoading({
|
||||
title: "正在支付",
|
||||
mask: true,
|
||||
});
|
||||
// this.setUserInfo({
|
||||
// restoreFlag: true
|
||||
// });
|
||||
// console.log(this.userInfo, '更新后的用户信息')
|
||||
plus.payment.request(that.iapChannel, {
|
||||
productid: id,
|
||||
username: that.orderSn, // 用户标识/订单标识
|
||||
manualFinishTransaction: true // 3.5.1+ 支持,设置此参数后需要开发者主动关闭订单,参见下面的关闭订单方法 finishTransaction()
|
||||
|
||||
}, function(result) {
|
||||
// restoreFlag = false; // 支付成功清除标记 restoreFlag = false
|
||||
that.transaction = result
|
||||
// 支付成功,result 为 IAP商品交易信息对象 IAPTransaction 需将返回的支付凭证传给后端进行二次认证
|
||||
that.iapCheck(result)
|
||||
}, function(e) {
|
||||
uni.hideLoading()
|
||||
console.log('错误回调', e)
|
||||
if (e.code == 2) {
|
||||
uni.showToast({
|
||||
title:'取消支付,内购订单即将关闭',
|
||||
icon:'none'
|
||||
})
|
||||
}else {
|
||||
uni.showToast({
|
||||
title:'支付失败,内购订单即将关闭',
|
||||
icon:'none'
|
||||
})
|
||||
console.log('其他支付错误',e);
|
||||
});
|
||||
let orderInfo = {
|
||||
productid: id,
|
||||
username: that.orderSn, // 用户标识/订单标识
|
||||
quantity:1,
|
||||
manualFinishTransaction: true, // 3.5.1+ 支持,设置此参数后需要开发者主动关闭订单,参见下面的关闭订单方法 finishTransaction()
|
||||
}
|
||||
that.restoreComplateRequest()
|
||||
});
|
||||
this.transaction = await this.requestPayment(orderInfo)
|
||||
console.log('支付后的that.transaction',this.transaction);
|
||||
},
|
||||
iapCheck(result) {
|
||||
let that = this
|
||||
|
||||
Reference in New Issue
Block a user