iOS收据不包括回购交易
iOS receipt does not include repurchased transaction
如果我擦除我的应用程序中的数据,然后重新购买一些我知道该帐户已经拥有的托管 IAP,iOS 会给我本机 "are you sure you wish to repurchase this item you will not be charged" 对话框。符合预期。
当购买 returns 到我的应用程序时,我收到带有 [[NSBundle mainBundle] appStoreReceiptURL]
的收据。然后我尝试通过我的服务器使用收据验证 SKPaymentTransaction 的 transactionIdentifier。
但是这个IAP的收据交易ID,因为我早就购买了,所以和SKPaymentTransaction不一样。
我应该如何验证这是一次有效的回购?我能以某种方式获得此回购的签名收据吗?
据我了解,您应该检查 originalTransaction
以检查这对 SKPaymentTransactionStateRestored
.
的交易是否有效
[[NSBundle mainBundle] appStoreReceiptURL]
是为了收到主申请,不是IAP。
您可以使用 RMStore 图书馆,并检查所有购买:
RMStoreAppReceiptVerificator *verificator = [[RMStoreAppReceiptVerificator alloc] init];
if ([verificator verifyAppReceipt])
{
NSArray *inAppPurchases = [RMAppReceipt bundleReceipt].inAppPurchases;
for (RMAppReceiptIAP *inAppPurchase in inAppPurchases)
{
NSLog(@"productIdentifier %@ originalPurchaseDate %@", inAppPurchase.productIdentifier, inAppPurchase.originalPurchaseDate);
}
}
如果您的收据为零,您可以刷新收据:
[[RMStore defaultStore] refreshReceiptOnSuccess:^{
//get purchases
} failure:^(NSError *error) {
}];
所有购买都将在一张收据中。您必须在那里检查所有 iAP 并寻找需要的 iAP。
如果要原始iAP交易的id,有Original Transaction Identifier
For a transaction that restores a previous transaction, the transaction identifier of the original transaction. Otherwise, identical to the transaction identifier.
此处提供有关收据字段的更多信息:https://developer.apple.com/library/prerelease/ios/releasenotes/General/ValidateAppStoreReceipt/Chapters/ReceiptFields.html
无论如何,这是原始购买还是回购真的很重要吗?我对此的检查通常是相同的。
如果我擦除我的应用程序中的数据,然后重新购买一些我知道该帐户已经拥有的托管 IAP,iOS 会给我本机 "are you sure you wish to repurchase this item you will not be charged" 对话框。符合预期。
当购买 returns 到我的应用程序时,我收到带有 [[NSBundle mainBundle] appStoreReceiptURL]
的收据。然后我尝试通过我的服务器使用收据验证 SKPaymentTransaction 的 transactionIdentifier。
但是这个IAP的收据交易ID,因为我早就购买了,所以和SKPaymentTransaction不一样。
我应该如何验证这是一次有效的回购?我能以某种方式获得此回购的签名收据吗?
据我了解,您应该检查 originalTransaction
以检查这对 SKPaymentTransactionStateRestored
.
[[NSBundle mainBundle] appStoreReceiptURL]
是为了收到主申请,不是IAP。
您可以使用 RMStore 图书馆,并检查所有购买:
RMStoreAppReceiptVerificator *verificator = [[RMStoreAppReceiptVerificator alloc] init];
if ([verificator verifyAppReceipt])
{
NSArray *inAppPurchases = [RMAppReceipt bundleReceipt].inAppPurchases;
for (RMAppReceiptIAP *inAppPurchase in inAppPurchases)
{
NSLog(@"productIdentifier %@ originalPurchaseDate %@", inAppPurchase.productIdentifier, inAppPurchase.originalPurchaseDate);
}
}
如果您的收据为零,您可以刷新收据:
[[RMStore defaultStore] refreshReceiptOnSuccess:^{
//get purchases
} failure:^(NSError *error) {
}];
所有购买都将在一张收据中。您必须在那里检查所有 iAP 并寻找需要的 iAP。
如果要原始iAP交易的id,有Original Transaction Identifier
For a transaction that restores a previous transaction, the transaction identifier of the original transaction. Otherwise, identical to the transaction identifier.
此处提供有关收据字段的更多信息:https://developer.apple.com/library/prerelease/ios/releasenotes/General/ValidateAppStoreReceipt/Chapters/ReceiptFields.html
无论如何,这是原始购买还是回购真的很重要吗?我对此的检查通常是相同的。