uniapp-ios内购
2022-06-09 本文已影响0人
养樂多_566c
首先
猛戳这边→→ → ios内购 按照其中步骤配置好各项参数(一定是需要添加商品和测试账号)
HBuilderX里面apple内支付选中
配置完成后直接上代码
// data里面放入必要的参数
current: 0,// 商品列表选中的下标
iap: null, // 支付通道
ids: [], // 应用内购项目产品 ID 数组
product_list: [], // 应用内购项目列表
// 首先初始化获取支付通道 - *放在unload里面(根据自己的需求来,环境监测之后需要获取商品列表)*
// #ifdef APP-PLUS
plus.payment.getChannels(res => {
let channel = res.find(i => i.id === 'appleiap')
this.iap = channel ? channel : null
this.requestOrder()
}, function(e) {
plus.nativeUI.alert("获取支付通道失败,请稍后重试。", function() {}, "提示");
})
// #endif
获取内购商品列表-主要是获取商品id
// 获取内购项目列表
requestOrder() {
uni.showLoading({
title: '检测支付环境...'
})
// #ifdef APP-PLUS
this.iap.requestOrder(
this.ids,
res => {
uni.hideLoading()
this.product_list = res;
},
(errormsg) => {
uni.hideLoading()
plus.nativeUI.alert("获取应用内购项目失败,请稍后重试。1", function(e) {}, "提示");
console.log(JSON.stringify(errormsg))
}
)
// #endif
}
调用支付
/* ios内购 */
requestPayment(out_trade_no) {
let self = this;
uni.showLoading({
title: '支付中请勿关闭...'
})
uni.requestPayment({
provider: 'appleiap',
orderInfo: {
productid: this.ids[this.current]
},
success: (e) => {
console.log(out_trade_no, '交易单号');
console.log(e, '支付成功');
uni.hideLoading()
if (e.errMsg == 'requestPayment:ok') {
self.$u.api.membercard_membercard_ios_pay_success({
out_trade_no,
receipt_data: e.transactionReceipt
}).then(res => {
console.log(res);
uni.showModal({
content: "支付成功",
showCancel: false
})
})
}
},
fail: (e) => {
uni.hideLoading()
console.log(e);
uni.showModal({
content: "支付失败,原因为: " + e.errMsg,
showCancel: false
})
},
complete: () => {
uni.hideLoading()
console.log("payment结束")
this.loading = false;
}
})
},
END