Apple应用程序内购买:如何在多用户应用程序中检测付款所有者?

时间:2016-01-19 08:40:09

标签: ios in-app-purchase

我的应用是一款多用户应用,类似于微信或QQ。当User1开始付款时:

SKMutablePayment *payment = [SKMutablePayment paymentWithProduct:product];
payment.quantity = 1;
payment.applicationUsername = [self hashedValueForAccountName:accountName];
[[SKPaymentQueue defaultQueue]addPayment:payment];

在这里,我找不到一些属性来提供用户定义的数据,例如用户帐号,applicationUsername仅用于检测Apple服务器的不规则活动,不能插入{{1}当交易完成时。

交易完成后,

receipt会收到通知。

User1

但是如果Apple因为某些网络原因或任何其他原因无法通知交易,我**关闭我的应用程序**然后重新启动应用程序并使用-(void)paymentQueue:(SKPaymentQueue )queue updatedTransactions:(NSArray )transactions{ //... } 登录。 Apple将通过上次交易通知我的应用程序。

由于交易(收据)不包含“用户标识符”,我无法判断交易的所有权。

我已阅读Apple提供的几乎所有应用内购买文件,例如https://developer.apple.com/in-app-purchase/https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Introduction.html,但我找不到任何答案。

我该怎么办?谢谢。

1 个答案:

答案 0 :(得分:0)

我不确定是否可以使用,但是可以在付款回调中检索SKPayment对象的applicationUsername属性。您要做的就是在付款时设置属性。

SKMutablePayment property: applicationUsername

以上链接中的问题指出,它是在付款对象中检索到的。我还没有亲自测试过。

对于还原,您应该将购买的transaction.transactionId链接到应用程序用户,并在进行还原购买时使用transaction.original.transactionIdentifier

现在,这里最棘手的部分是您的应用中的多个帐户是否可以全部单独进行相同的购买(如果是订阅,则在订阅组中进行购买)。多个帐户如何将同一笔购买绑定到同一Apple ID。我不确定这是否可能。因为购买是针对一个App Store帐户而不是应用程序帐户进行的。