更新记录
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表示交易处于待审批状态。
其他:
购买后可以提供免费技术支持,保证接入成功。但只保证前端拿到票据,后端部分由于各种语言不一样,需要自行实现。

收藏人数:
购买源码授权版(
试用
赞赏(0)
下载 9
赞赏 0
下载 12288880
赞赏 1922
赞赏
京公网安备:11010802035340号