Автообновляемые подписки iOS veirfyReceipt возвращает квитанции base64, отличные от устройства

Я пытаюсь реализовать автоматически возобновляемые подписки. Мое приложение можно использовать на разных устройствах (Android, Web), поэтому мне нужно было внедрить метод опроса состояния, чтобы подтвердить мой сервер, когда App Store удается продлить подписку с истекшим сроком действия. Квитанция проверяется на моем сервере в соответствии с здесь. При каждой транзакции, выполненной на устройстве, я обновляю запись пользователя в базе данных для поля last_receipt_base64 в процессе проверки квитанции.

При каждом опросе статуса я хочу обновить поля last_receipt_base64 и expired_date, поэтому я беру last_receipt_base64 и отправляю его на маршрут Apple /verifyReceipt. Но каждый раз он помещает другую квитанцию ​​​​(base64) под ключ «latest_receipt». Более того, длина возвращенной (от /verifyReceipt) базы 64 квитанции, как ни странно, намного короче, чем квитанция, отправленная с устройства (35 000 символов квитанции от устройства, 6000 символов квитанции, возвращенной из /verifyReceipt). Почему это?

Я хочу обновить записи в моей базе данных на каждом столбце состояния, если есть изменения, но данные продолжают меняться! Кроме того, крайняя разница в длине между квитанциями с устройства и /verifyReceipt заставляет меня беспокоиться о том, что квитанция может быть когда-нибудь отклонена, если пользователь не будет входить в приложение iOS в течение длительного времени. Во всяком случае, я немного запутался, и документы не очень хороши... Некоторые рекомендации будут полезны.


person Gal Shahar    schedule 17.10.2019    source источник


Ответы (1)


Галь Шахар! Мы также используем уведомления сервера Apple для обновления статуса подписки на нашей платформе управления подписками.

Квитанция в уведомлениях о статус-опросе не та, которую вы ищете. Вы должны хранить квитанции, которые отправляются непосредственно с устройства.

Вы должны полагаться только на original_transaction_id и находить своего клиента по этому идентификатору.

И, кстати, нет необходимости обновлять квитанцию ​​base64, так как она всегда будет давать вам последние транзакции.

Я мог бы порекомендовать вам прочитать эту статью из нашего блога: https://blog.apphud.com/subscriptions-notifications/

Дайте нам знать, если вам нужна помощь. Спасибо!

person apphud    schedule 17.10.2019
comment
Ничего себе, вы не можете поверить, сколько вопросов вы помогли мне решить... Отличный учебник! Там написано, что Apple рекомендует использовать опрос статуса в дополнение к уведомлениям о подписках, почему это так? - person Gal Shahar; 17.10.2019
comment
@GalShahar Я полагаю, это потому, что уведомления ненадежны и у них нет реальной квитанции base64. Тем не менее, мы еще не сталкивались с проблемами с получением уведомлений, и Apple заявила на WWDC, что скоро добавят унифицированную квитанцию ​​base64. - person apphud; 18.10.2019