更新记录
1.0.0(2024-03-23) 下载此版本
初始版,只有订阅测试过
平台兼容性
Android | iOS |
---|---|
× | 适用版本区间:11 - 17 |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios
注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择
- 引入插件
const IAPSdk = uni.requireNativePlugin('IAPPlugin')
- 写插件回掉的方法和注册监听
listenBack(arr) {
if (typeof arr === 'string') {
// 如果这个恢复购买出错了,那么久走这里
if (this.requestPaymentType === 'paymentResumeSub') {
this.requestPaymentType = 'payment'
IAPSdk.requestPayment({productid: productId})
} else {
uni.showModal({
title: '查询订单失败',
content: '获取订单失败,请点击恢复购买重试',
confirmText: '恢复购买',
cancelText: '联系客服',
})
}
return
}
if (arr.length === 0) {
// restore在没得订单情况下报错了,在这个立里面返回,在processingRestore里传入【】执行没得订单情况处理
this.processingRestore(arr)
return
}
for (let i = 0; i < arr.length; i++) {
switch (arr[i].transactionState) {
case 0:
console.log('正在支付中')
break
case 1:
console.log('支付成功')
if (this.requestPaymentType === 'payment') {
// 验证订单
verifyAndUpadte({
orderId: this.saveOrderId,
productId: this.productId || arr[i].payment.productid,
transaction: arr[i]
})
}
this.loading = false
break
case 2:
console.log('支付失败')
if (arr[i].error === 'cancel') {
uni.showToast({
icon: 'none',
title: '取消支付'
})
} else if (arr[i].error !== 'repeatable') {
uni.showModal({
content: arr[i].error,
showCancel: false
})
}
// 关闭订单和移除监听
IAPSdk.finishTransaction()
IAPSdk.removeObserver()
break
case 3:
console.log('恢复购买')
this.processingRestore(arr)
i = arr.length
break
}
}
},
IAPSdk.initializingAndRegisteringListeners(this.listenBack)
- 调用支付方法前,先检查订单
IAPSdk.restoreCompletedTransactions()
- processingRestore 中检查传回来的订单,对订单关系验证,成功后支付订单
processingRestore(){
// 一些其他验证
// ...
IAPSdk.requestPayment({productid: productId})
}
- 支付成功走 verifyAndUpadte 方法向后台验证
verifyAndUpadte(){
// 向后台验证
// ...
// 关闭订单和移除监听
IAPSdk.finishTransaction()
IAPSdk.removeObserver()
}