6

我正在尝试根据original_purchase_date和/或original_transaction_id使用 iOS 商店收据来区分购买和重新下载。无论交易是新购买还是重新下载,商店收据总是返回一个新的original_purchase_date,它等于purchase_date值。

这是我收到的真实商店收据(这是对现有应用内购买的重新下载 - 因为我目前不得不依靠 UDID 跟踪来区分它们)

{
  "product_id": "com.myproduct.id",
  "original_purchase_date_ms": "1329825956382",
  "purchase_date_ms": "1329825956382",
  "original_purchase_date": "2012-02-21 12:05:56 Etc/GMT",
  "purchase_date":          "2012-02-21 12:05:56 Etc/GMT",
  "bvrs": "1.0",
  "original_purchase_date_pst": "2012-02-21 04:05:56 America/Los_Angeles",
  "purchase_date_pst":          "2012-02-21 04:05:56 America/Los_Angeles",
  "original_transaction_id": "1000000028387131",
  "transaction_id":          "1000000028387131",
  "item_id": "452671574",
  "quantity": "1",
  "bid": "com.mybundle.id"
}

无论我是使用沙盒 URL 并使用测试 iTunes 连接帐户进行测试,还是使用实时 URL 进行收据验证的实时购买,这些值始终相同:

original_purchase_date_ms  ==  purchase_date_ms
original_purchase_date == purchase_date
original_purchase_date_pst == purchase_date_pst
original_transaction_id == transaction_id

我认为这些是您应该用来区分新购买和重新下载相同购买的区别,我错了吗?显然跟踪设备的UDID/制作应用程序GUID并跟踪它是一种方法,但不够准确(例如拥有多个设备的用户)

在这些值始终相同的情况下,还有其他人有这个问题吗?

非常感谢您对此的任何帮助!我已经用尽了所有其他路线,希望这里有人知道答案。

4

1 回答 1

1

这取决于您所说的“重新下载”是什么意思。

original_purchase_date应该与purchase_date仅在您恢复购买时有所不同,因此 SKPaymentTransaction 返回您SKPaymentTransactionStateRestored。如果是这样,那就有问题了。

否则,例如,如果您正在重新购买消耗品,这些日期将始终相同,并且一切正常。

于 2012-04-03T04:26:36.843 回答