Платежная квитанция о покупке iOS не возвращает исходную_покупку_даты для повторной загрузки - PullRequest
5 голосов
/ 22 февраля 2012

Я пытаюсь использовать квитанцию ​​магазина 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"
}

Независимо от того, использую ли яURL-адрес изолированной программной среды и тестирование с помощью тестовой учетной записи itunes connect, или является ли она реальной покупкой с использованием действующего 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 приложения и отслеживание этого - один из способов сделать это, но он недостаточно точен (например, пользователи, имеющие несколько устройств)

Есть ли у кого-нибудь еще эта проблема, когда эти значенияВСЕГДА идентичны?

Любая помощь по этому вопросу высоко ценится!Я исчерпал все остальные маршруты и надеюсь, что кто-то здесь знает ответ.

1 Ответ

1 голос
/ 03 апреля 2012

Это зависит от того, что вы подразумеваете под " redownload ".

original_purchase_date должно отличаться от purchase_date только тогда, когда вы восстанавливаете свою покупку, поэтому SKPaymentTransaction возвращает вам SKPaymentTransactionStateRestored. Если это так, значит что-то не так.

В противном случае, например, если вы выкупаете расходную покупку, эти даты будут все время одинаковыми, и все в порядке.

...