#ios #app-store #in-app-subscription #receipt-validation
#iOS #app-store #in-app-подписка #квитанция-проверка
Вопрос:
Я хочу отправить квитанцию, полученную из AppStore после подписки в приложении, на сервер, чтобы проверить ее (потому что Apple рекомендует проверять с сервера, а не из приложения). Квитанция содержит такие символы, как » «, «/» и «=». Поскольку я не мог отправить с этими символами, я изменил их, например, заменив на «+» и так далее. Но даже после этого я могу получить только часть квитанции на своем сервере. Отправка его в виде сериализованного JSON также не помогла. (Мне нужно отправить больше данных вместе с квитанцией на сервер, поэтому я не могу передать квитанцию без преобразования в NSString) Как я могу решить эту проблему?
Ответ №1:
Есть несколько вещей, которые приходят на ум.
-
Проверьте свой сервер на наличие ограничений по размеру тела запроса и убедитесь, что то, что вы отправляете, не превышает этого предела.
-
Вы никогда не должны изменять квитанцию, поскольку она криптографически подписана Apple, и любые изменения в ней просто сделают ее недействительной, если вы пытаетесь проверить подпись и т. Д.
-
Вы можете попросить Apple уведомлять ваш сервер о любых покупках в приложении.
Можно ввести URL-адрес webhook / обратного вызова, по которому Apple будет нажимать.
-
Перейдите к https://itunesconnect.apple.com
-
Выберите свое приложение
-
Выберите «Информация о приложении»
Найдите «URL статуса подписки» в правом нижнем углу экрана. Если у вас есть соответствующие разрешения, вы можете задать URL-адрес для сервера Apple, на который будет отправляться сообщение при совершении новой покупки.
Комментарии:
1. Большое вам спасибо. Что касается уведомлений от сервера к серверу; Я добавил URL-адрес статуса подписки, и когда я проверяю безопасное соединение ATS по умолчанию с помощью команды «nscurl —ats-diagnostics <URL статуса подписки>», оно передается. Но я не получал никаких уведомлений на свой сервер nginx из Appstore. Есть идеи о том, как отладить эту проблему? (URL-адрес, который я дал, указывает на файл PHP)
2. Вы можете прочитать больше об уведомлениях сервера app Store здесь developer.apple.com/documentation/appstoreservernotifications /…
3. Я прочитал это и попробовал метод с сервера на сервер, прежде чем пытаться отправить квитанцию на сервер и проверить ее как обходной путь. Понятия не имею, почему уведомления не работают. Конфигурации соответствуют их рекомендациям. В любом случае спасибо за помощь 🙂
4. существует разница между песочницей и производством. Если вы совершаете покупки в процессе разработки, это должно указывать на их среду изолированной среды, и для реальных покупок в приложении Apple автоматически переключит его на использование своих производственных серверов. Посмотрите, как протестировать это в песочнице, поскольку в вашем случае, похоже, что-то пошло не так.
5. Вы имеете в виду URL подтверждения получения?