根据 Apple 指南,自动续订订阅是可恢复的-& gt;设备可以将restoreCompletedTransactions
发送到 Apple 服务器,Apple 将回复所有已完成交易的列表。
我的问题是,苹果是否会发送所有已完成的交易?(仅与购买非消耗性产品和自动续订订阅有关,ofc)
例如:我的应用有月度自动续费,用户在 2012 年 1 月安装我的应用,2012 年 5 月停用订阅自动续费,xx年后 2013 年 1 月再次订阅,2013 年 3 月再次停用订阅自动续费,最后 2013 年 6 月再次订阅,2013 年 7 月尝试使用“恢复购买”功能,苹果会发送什么信息?
Apple 会向该设备发送哪些信息?Apple 会发送有关所有订阅的信息,甚至是那些过期的订阅吗?
P.S.问题的意义是获得使用自动可再生订阅并恢复有关它们的信息的真实经验。在沙箱中进行测试有时会返回非常奇怪的结果。
编辑:好的,所以我有足够的测试说,是,苹果发送所有完成的交易,包括与过期订阅相关的交易,即使之后有另一个订阅。
“Store Kit 提供了内置功能来恢复非消耗性产品、自动续订订阅和免费订阅的交易。要恢复交易,您的应用程序调用支付队列的 restoreCompletedTransactions 方法。支付队列向 App Store 发送请求以恢复交易。作为回报,App Store 为以前完成的每笔交易生成一个新的恢复交易。恢复交易对象的 originalCompletedDoctransaction 属性通过以下方式将
好吧,是的,你会得到所有的购买绑定到该苹果 ID(包括过期的)。您可以在委托回调中过滤掉它们,只将最近的一个发送到您的服务器。
- (void)handleRestoredTransaction:(SKPaymentTransaction *)transaction
{
NSLog(@"Somew a transaction was restored.");
NSDate* receiptPurchaseDate = transaction.transactionDate;
NSDate* currentDate = [NSDate date];
NSTimeInterval daysPedSincePurchase = [currentDate timeIntervalSinceDate: receiptPurchaseDate] / SECONDS_PER_DAY;
if ([transaction.originalTransaction.payment.productIdentifier isEqualToString: monthlySubscriptionProductIdentifier])
{
if (daysPedSincePurchase <= DAYS_PER_MONTH)
{
// send the transaction receipt to your servers.
[self handlePurchasedTransaction: transaction];
}
}
else if ([transaction.originalTransaction.payment.productIdentifier isEqualToString: yearlySubscriptionProductIdentifier])
{
if (daysPedSincePurchase <= DAYS_PER_YEAR)
{
[self handlePurchasedTransaction: transaction];
}
}
}
本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处
评论列表(14条)