Итак, у меня есть установка автоматической подписки на обновление для моего приложения с периодом 1 месяц, что равно 5 минут или около того в песочнице. В клиентском приложении я подписываюсь, отправляю квитанцию на свой сервер, он проверяется, и я помещаю запись в свою базу данных, что у этого пользователя есть подписка.
Мой вопрос: как проверить, обновлена ли эта подписка? Я прочитал документы и не могу понять, что мне делать.
Вот где я до сих пор:
- Исходная квитанция, отправленная на мой сервер, проверяется со статусом
0
, отлично. Я также получаюlatest_receipt
, который я заменяю в своей базе данных самой старой квитанцией. - Через 6 минут, когда я пытаюсь проверить
latest_receipt
, я получаю статус21006
(expired receipt) и это:
{ receipt:
{ original_purchase_date_pst: '2013-08-06 11:58:04 America/Los_Angeles',
unique_identifier: '------------',
original_transaction_id: '----------',
expires_date: '1376129825000',
transaction_id: '------------',
quantity: '1',
product_id: 'subscription',
item_id: '--------',
bid: 'com.--------',
unique_vendor_identifier: '---------',
web_order_line_item_id: '---------',
bvrs: '2.0',
expires_date_formatted: '2013-08-10 10:17:05 Etc/GMT',
purchase_date: '2013-08-10 10:12:05 Etc/GMT',
purchase_date_ms: '1376129525000',
expires_date_formatted_pst: '2013-08-10 03:17:05 America/Los_Angeles',
purchase_date_pst: '2013-08-10 03:12:05 America/Los_Angeles',
original_purchase_date: '2013-08-06 18:58:04 Etc/GMT',
original_purchase_date_ms: '1375815484000' },
latest_expired_receipt_info:
{ original_purchase_date_pst: '2013-08-06 11:58:04 America/Los_Angeles',
unique_identifier: '-------',
original_transaction_id: '-',
expires_date: '1376129825000',
transaction_id: '-',
quantity: '1',
product_id: 'subscription',
item_id: '-',
bid: 'com.-',
unique_vendor_identifier: '--',
web_order_line_item_id: '-',
bvrs: '2.0',
expires_date_formatted: '2013-08-10 10:17:05 Etc/GMT',
purchase_date: '2013-08-10 10:12:05 Etc/GMT',
purchase_date_ms: '1376129525000',
expires_date_formatted_pst: '2013-08-10 03:17:05 America/Los_Angeles',
purchase_date_pst: '2013-08-10 03:12:05 America/Los_Angeles',
original_purchase_date: '2013-08-06 18:58:04 Etc/GMT',
original_purchase_date_ms: '1375815484000' },
status: 21006 }
Второй элемент в массиве использовался latest_receipt_info
, но теперь он latest_EXPIRED_receipt_info
. Вот что говорят документы:
В дополнение к полю receipt_data ответ может также включать два новых поля. Если подписка пользователей активна и обновлено транзакцией, произошедшей после получения вашего сервер, отправленный в App Store, поле
latest_receipt
содержит base-64 для последнего обновления для этой подписки. Декодированные данные для этой новой квитанции также представлены вlatest_EXPIRED_receipt_info
поле. Ваш сервер может использовать этот новый квитанция для ведения записи о последнем обновлении.
Итак, если Sub был обновлен с момента последнего проверки моего сервера, декодированный квитанция для обновления должна быть в latest_EXPIRED_receipt_info
. В этом объекте expires_date
совпадает с исходной квитанцией expires_date
.
Что, черт возьми? Я просто хочу проверить, активен ли sub. Может ли кто-нибудь объяснить простыми словами, как мне это сделать?
Спасибо!