更新记录

1.0.0(2026-03-21)

正式版发布


平台兼容性

uni-app(3.7.1)

Vue2 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 × 12 1.0.0 ×
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
× × × × × × × × × × × ×

uni-app x(3.7.1)

Chrome Safari Android iOS iOS插件版本 鸿蒙 微信小程序
× × × 12 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):恢复非消耗型商品。

使用示例

import { buyProduct, completeTransactions } from '@/uni_modules/jt-ios-iap'

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. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无用户评论。