更新记录

1.0.0(2024-03-23) 下载此版本

初始版,只有订阅测试过


平台兼容性

Android iOS
× 适用版本区间:11 - 17

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
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()
}

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

作者未提供license.md

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问