Apple和Google内购之订阅型

2024-11-12  本文已影响0人  雨泽Sunshine

一、有关Apple订阅

1.自动续订型方案和订阅群组

Auto-renewable Subscriptions自动续订型方案,就是在用户取消订阅之前,每次订阅周期期满时自动续订,款项由Apple收取。

App Store Connect里设置自动订阅型方案时,每个订阅项目一定要属于某个订阅群组Subscription Group,并且要设定在改群组内的Service Level

Subscription

订阅群组是订阅项目的集合,有三点要注意:

2.自动续订

自动续订产品的续订日期快到了,苹果会自动扣款续费,若续费成功,会生成一笔新的交易订单保存在事务机制里面。如果App在前台状态,此时会在观察者队列里面监听到该笔交易订单的更新状态。

3.恢复购买

对于自动续订型订阅,需要提供恢复购买的功能restoreCompletedTransactions,例如创建一个恢复按钮,不然审核很可能会被拒绝。

"消耗型产品"和"非自动续订订阅"苹果不会提供恢复的接口,不要调用restoreCompletedTransactions方法去恢复,否则有可能会被拒。非自动续订订阅也是跨设备同步的,所以原则上来说也需要提供恢复购买的功能,但需要依靠App自建的账户体系恢复,不能用苹果的恢复接口。

恢复已完成的交易会为用户进行的每笔已完成的交易创建一个新的交易,本质上就是为交易队列观察者重播历史记录,改交易的状态变为restored

4.在客户端处理交易

There is a pending transaction for the same product identifier. Please either wait for it to be finished or finish it manually using `completePurchase` to avoid edge cases

购买时报上述错误,是因为发起的购买交易没有调用finishTransaction结束交易,无法对同一产品再次发起购买。

二、有关Google订阅

1. 上传aab包

新增BILING权限,然后上传aab包到封闭测试才可新增产品

<uses-permission android:name="com.android.vending.BILLING"/>

2.建立产品

Google Play Console --> 产品 --> 订阅 --> 建立订阅项目

建立订阅项目

例如你有包月、包季、包年三个产品, 你只需要创建一个订阅产品,在该订阅产品里面再创建三个基本方案。

3.在后端处理购买交易

对于订阅产品首先需确保购买交易是否被确认,查看APIPurchases.subscriptions调用结果中的acknowledgementState,若未被确认必须调用APIPurchases.subscriptions.acknowledge进行确认。

4. 在客户端处理购买交易

服务端必须在发送产品后进行确认,由于确认请求偶尔会失败,所以可能会出现漏单的情况。防止服务端出现验证错误的情况,需要在App每次重启的时候使用queryPurchasesAsync查询有效订阅产品,并向服务器重新验证该笔购买交易。

queryPurchasesAsync方法不需要网络,每次查询都会返回有效订阅产品,所以若订阅型产品订阅成功后,每次查询都会返回,即使该产品已经确认。

上一篇 下一篇

猜你喜欢

热点阅读