船新版本苹果内购,uts版本,接口更简洁,使用更方便。本内购插件可以不用服务器

更新记录

1.2.0(2025-09-19)

修复一些问题

1.1.0(2025-09-12)

测试完成,放心购买

1.0.0(2025-09-11)

uts版本第一版,还在测试中。

查看更多

平台兼容性

uni-app(3.6.9)

Vue2

Vue3

Chrome

Safari

app-vue

app-nvue

Android

iOS

鸿蒙

×

×

×

×

×

×

×

12

×

微信小程序

支付宝小程序

抖音小程序

百度小程序

快手小程序

京东小程序

鸿蒙元服务

QQ小程序

飞书小程序

快应用-华为

快应用-联盟

×

×

×

×

×

×

×

×

×

×

×

其他

多语言

暗黑模式

宽屏模式

船新版本苹果内购,uts版本,接口更简洁,使用更方便。本内购插件可以不用服务器

如果你想使用原生语言插件,前往原生语言插件。

特别注意,验证购买和订阅的sandBox参数上线一定要写成false

特别注意,验证购买和订阅的sandBox参数上线一定要写成false

特别注意,验证购买和订阅的sandBox参数上线一定要写成false

内购是苹果应用内购买,包括订阅或者各种vip解锁功能除去广告等

内购类型说明

内购大致分为订阅型和非订阅型,订阅型又分为自动续期和不续期;非订阅型就是那些一次性购买的,比如一次购买永久解锁,或者6元购买100个金币这种。

completeTransactions 这个方法需要在应用启动的时候去调用,因为可能存在没有完成的交易,防止漏掉一些单子

App.vue

// #ifdef APP-IOS

import { HXRPurchase } from '@/uni_modules/hxr-purchase-uts'

// #endif

onLaunch: function () {

// #ifdef APP-IOS

HXRPurchase.completeTransactions((productId: string) => {

//如果需要传服务器,就获取票据上传

HXRPurchase.getReceiptString((code: string, msg: string) => {

if(code == "ok") {

//msg就是票据信息

} else {

console.log(msg);

}

});

//本地验证购买

// HXRPurchase.verifyBuy()

// HXRPurchase.verifySubscription()

});

// #endif

console.log('App Launch')

}

使用实例

// #ifdef APP-IOS

import { HXRPurchase } from '@/uni_modules/hxr-purchase-uts'

// #endif

buy() {

//productId 商品id

//count 购买数量

//applicationUsername 用户id,服务器可以根据这个把单子和人关联,没有用户系统或者没服务器可以不管

HXRPurchase.buyProduct("product.unique.id", 1, "", (code : string, msg : string) => {

if (code == "purchased") {

//这种情况其实就已经购买成功了。为了保险需要验证票据

//如果你需要同步票据到服务器就获取票据上传

HXRPurchase.getReceiptString((code : string, msg : string) => {

if (code == "ok") {

//msg就是票据信息

} else {

console.log(msg);

}

});

//如果没有服务器,或不需要上传就直接验证就可以了。根据购买的是不是续费选择调用一个即可

// HXRPurchase.verifyBuy()

// HXRPurchase.verifySubscription()

} else if (code == "deferred") {

/*

//仅表示交易暂未完成,可能后续转为成功或失败‌

//家庭共享‌: 当用户通过家庭共享购买订阅时,需主账号成员授权,此时交易状态会变为deferred‌

‌//儿童账户或家长控制‌: 若购买涉及儿童账户,需家长同意(如输入Apple ID密码验证),交易会延迟至授权完成‌*/

} else {

//出错的各种场景,有很多错误code

if (code == "paymentCancelled") {

//用户取消购买

} else {

console.log(`code: ${code}, msg: ${msg}`);

/*

case unknown = 0

case clientInvalid = 1

case paymentCancelled = 2

case paymentInvalid = 3

case paymentNotAllowed = 4

case storeProductNotAvailable = 5

case cloudServicePermissionDenied = 6

case cloudServiceNetworkConnectionFailed = 7

case cloudServiceRevoked = 8

case privacyAcknowledgementRequired = 9

case unauthorizedRequestData = 10

case invalidOfferIdentifier = 11

case invalidSignature = 12

case missingOfferParams = 13

case invalidOfferPrice = 14

case overlayCancelled = 15

case overlayInvalidConfiguration = 16

case overlayTimeout = 17

case ineligibleForOffer = 18

case unsupportedPlatform = 19

case overlayPresentedInBackgroundScene = 20

*/

}

}

});

},

getReceipt() {

HXRPurchase.getReceiptString((code : string, msg : string) => {

if (code == "ok") {

//msg就是票据信息

} else {

console.log(msg);

}

});

},

verifyBuy() {

//注意sandBox参数,测试阶段是true,上线一定要改成false

//productId 商品id

//sharedSecret appstoreconnect上面设置的秘钥,没设置可以不填

//sandbox 是否测试环境,测试阶段是true,上线一定要改成false

HXRPurchase.verifyBuy("product.unique.id", "", true, (code : string, msg : string) => {

if(code == "purchased") {

//已经购买,可以解锁功能了

} else if(code == "notPurchased") {

//没有购买

} else {

console.log(`code: ${code}, msg: ${msg}`);

//noReceiptData 没有票据信息

//networkError

//error 其他问题

}

});

},

verifySubscription() {

//注意sandBox参数,测试阶段是true,上线一定要改成false

//注意sandBox参数,测试阶段是true,上线一定要改成false

//productId 商品id

//sharedSecret appstoreconnect上面设置的秘钥,没设置可以不填。自动续费的必须要设置这个秘钥才能验证票据

//sandbox 是否测试环境,测试阶段是true,上线一定要改成false

//isRenew 是否是自动续期的订阅

// duration 这个字段是非自动续费项目的时长,单位为秒,比如购买一个月vip这种

HXRPurchase.verifySubscription("product.unique.id", "", true, true, 3600*24*30, (code : string, msg : string) => {

if(code == "purchased") {

//已经购买,此时msg是订阅到期时间的时间戳

} else if(code == "notPurchased") {

//没有购买

} else if(code == "expired") {

//订阅已经到期,msg是订阅到期时间的时间戳

} else {

console.log(`code: ${code}, msg: ${msg}`);

//noReceiptData 没有票据信息

//networkError

//error 其他问题

}

});

},

restorePurchases() {

HXRPurchase.restorePurchases((products: string[]) => {

if(products.length > 0) {

//products 就是恢复的已购买的商品ids

//如果是订阅,验证一下订阅到期没有。

//如果是一次性购买,不用验证,直接是成功

} else {

//没得可恢复的购买

}

});

}

[an error occurred while processing the directive]