iOS应用内购买收据未返回original_purchase_date进行重新下载

时间:2012-02-22 15:11:11

标签: iphone ios validation in-app-purchase receipt

我正在尝试使用iOS商店收据来区分购买和重新下载,具体取决于 original_purchase_date 和/或 original_transaction_id 。无论交易是新购买还是重新下载,商店收据始终会返回新 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"
}

无论我是使用沙箱网址并使用测试itunes connect帐户进行测试,还是使用实时网址进行实时购买以进行收据验证,这些值始终相同:

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并跟踪它,是一种方法,但它不够准确(例如,拥有多个设备的用户)

有没有其他人在这些值总是相同的情况下遇到这个问题?

对此有任何帮助非常感谢!我已经筋疲力尽了所有其他路线,希望有人知道答案。

1 个答案:

答案 0 :(得分:1)

这取决于“重新下载”的含义。

仅当您恢复您的购买时,original_purchase_date应与purchase_date不同,因此SKPaymentTransaction会向您返回SKPaymentTransactionStateRestored。如果是这样的话,就会出现问题。

否则,例如,如果您要重新购买消费品,那么theese的日期将始终相同,一切正常。