更新记录

1.0.5(2026-05-15)

修改文档。

1.0.4(2026-05-15)

修复鸿蒙打包

1.0.3(2026-05-15)

修复鸿蒙打包

查看更多

平台兼容性

uni-app(5.01)

Vue2 Vue3 Vue3插件版本 Chrome Safari app-vue app-vue插件版本 app-nvue app-nvue插件版本 Android iOS iOS插件版本 鸿蒙
- 1.0.0 × × 1.0.0 1.0.0 × 1.0.0 ×
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
× × × × × × × × × × × ×

uni-app x(5.01)

Chrome Safari Android iOS iOS插件版本 鸿蒙 微信小程序
- - - 1.0.0 - -

jt-ios-iap

基于 UTS + Swift StoreKit1 的 iOS 内购插件,适合需要兼容低版本 iOS 的 App 内虚拟商品支付场景。

项目背景

1.为什么有官方的内购支付、市场也有其他内购插件还需要再发布一个?

一句话当你用其他方案不满意再用这个,比如丢单什么的。本插件是自己用于生产环境的,会持续跟进。同时本插件是使用原生Swift语言和uts混编的,也就是说和原生一样是直接走的原生sdk那套逻辑,底层不是plus api封装。

2.为什么底层还使用storeKit1而不用storeKit2?

为了兼容低版本。storeKit2最低兼容ios15,而真实情况是ios 10的平板满地都是,目前还不适合使用storeKit2。

提供能力

  • buyProduct(options, callback):拉取商品并发起购买,成功后回调 receipt 的 base64 字符串。
  • completeTransactions(callback):补偿处理中断的未完成订单。
  • restoreCompletedTransactions(callback):恢复非消耗型商品。

使用示例

//这里必须加条件编译,因为鸿蒙不会用到这个,不然鸿蒙云打包报错。后续用到这些方法的时候也需要加条件编译。
// #ifdef APP-PLUS
    import { buyProduct, completeTransactions } from '@/uni_modules/jt-ios-iap'
// #endif

buyProduct({
  productId: 'your.product.id',
  //可以为空字符串
  userId: 'user-1001',
  quantity: 1
}, (res) => {
  console.log('buyProduct', res)
  if (res.code === 'success') {
    // res.data 就是 receipt 的 base64,可直接发给服务端验单
  }
})

//非消耗商品可以调用这个恢复购买。实际上本人实测,消耗型如果错误了调用这个可以重新返回票据。
//也就是说你可以在进入商品页面的时候调用一下这个方法,如果有返回票据就直接发给服务器,避免丢单。
completeTransactions((res) => {
    if (res && res.code === 'success') {
        //票据
        let receipt = res.data
        if (receipt) {
            uni.showLoading({
                title: '开始恢复上次未完成订单...'
            })
            setTimeout(() => {
                //上传receipt给服务器
            }, 1000);
        }
    }
    //、失败,基本可以不用管
    if (res && res.code === 'fail') {
        console.log("恢复购买失败!");
    }
});

返回结构

type IapResult = {
  code: string
  data: string
  message: string
  productId: string
  transactionId: string
  originalTransactionId: string
}

说明:

  • code === 'success' 时,data 为 App Store receipt 的 base64。
  • paymentCancelled 表示用户取消支付。
  • productNotFound 表示商品未在 App Store Connect 中命中。
  • deferred 表示交易处于待审批状态。

其他:

购买后可以提供免费技术支持,保证接入成功。但只保证前端拿到票据,后端部分由于各种语言不一样,需要自行实现。

隐私、权限声明

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

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

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

暂无用户评论。