我正在我的应用中实施In App Purchases,而我正在使用非耗材产品。 我在我的应用程序中有用户登录,并防止使用 applicationUsername 属性的不正常活动,因此我可以将付款用户的用户名发送给我。
一切正常,我可以设置 payment.applicationUsername 属性,我可以在 SKPaymentTransactionStatePurchased 状态购买完成后将其恢复。
问题在于,当我尝试使用 restoreCompletedTransactionsWithApplicationUsername :方法 还原 我的事务时,applicationUsername属性返回NULL。
你能帮我吗?
答案 0 :(得分:13)
经过大量研究后发现我们无法将 applicationUsername 用于此目的。
对于restoreCompletedTransaction,您可以使用 transaction.originalTransaction.transactionIdentifier 属性 (并且它在新购买下是等价的 - transaction.transactionIdentifier)。
这是与恢复记录中找到的购买本身和iTunes帐户关联的唯一标识符。
<强> 1。如何使用它:
将服务器上的原始transactionIdentifier记录为 与用户A的原始购买相关联。
<强> 2。检测不规则活动
如果其他用户尝试恢复购买检查以确定 transactionIdentifier尚未在不同的情况下使用 用户名。
如果您的所有用户均未使用此transactionIdentifier,则表示还原成功。如果transactionIdentifier已经被其他用户使用,那么解释用户无法进行恢复的原因。
这基本上等同于使用 &#39; transaction.transactionIdentifier&#39;作为&#39; applicationUsername&#39;。