【问题标题】:Apple In-App Purchase : How to detect the owner of the payment in an multi-user app?Apple In-App Purchase:如何在多用户应用程序中检测付款的所有者?
【发布时间】:2016-04-24 15:28:30
【问题描述】:

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

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

在这里,我找不到一些属性来提供用户定义的数据,例如用户帐号,applicationUsername 仅用于检测Apple服务器的异常活动,并且不能在事务完成时插入receipt .

User1 将在交易完成时收到通知。

-(void)paymentQueue:(SKPaymentQueue )queue updatedTransactions:(NSArray )transactions{
    //...
}

但是如果由于某些网络原因或任何其他原因导致Apple无法通知交易,并且我**关闭我的应用程序**然后重新启动应用程序并使用User2登录。 Apple 将通知我的应用最后一次交易。

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


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

我该怎么办?谢谢。

【问题讨论】:

  • 通过下面的答案,可能会对你有所帮助。 stackoverflow.com/questions/25480869/…
  • 非常感谢,它有帮助。
  • 如果您可以投票或接受我的回答,我会很高兴。 :)
  • 嗨 Vikas,当我尝试在服务器上存储但当时网络(互联网)消失并且服务器存储失败时。一段时间后网络(互联网)来了。任何其他用户尝试恢复。但是我们不能区分用户,因为我们在服务器上没有“transaction.transactionIdentifier”。那么我们做什么呢?可以分享一下吗?

标签: ios in-app-purchase


【解决方案1】:

我不确定它是否会起作用,但是可以在支付回调中检索 SKPayment 对象上的applicationUsername 属性。您只需在付款时设置属性即可。

SKMutablePayment property: applicationUsername

上述链接中的问题表明它是在支付对象中检索到的。我自己没有测试过。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-05
    • 1970-01-01
    • 1970-01-01
    • 2012-03-13
    • 2012-02-01
    • 2014-02-13
    • 1970-01-01
    相关资源
    最近更新 更多