2014-02-02 3 views
4

Я выполнил Ray Wenderlich's tutorial, чтобы выполнить проверку чека в моем приложении. Код подключается к серверу проверки Apple непосредственно из моего приложения, а не через мой собственный сервер.iOS в подтверждении получения покупки приложения - песочница и номер продукта?

После того, как я отправил свой первый двоичный файл в AppStore, я протестировал свое приложение, а покупка в приложении не работала, потому что я переключил его с URL-адрес песочницы на рабочий URL.

Будет ли это также терпеть неудачу, если они проверяют это приложение AppStore и, следовательно, будут отклонены? Я читал this post, но я все еще очень смущен тем, относится ли это ко мне, если я не использую свой собственный сервер.

ответ

9

Решение довольно простое и объяснено на сессии 308 WWDC 2012 (видео доступно зарегистрированным разработчикам). Сессия была связана с подписками, но вы можете расширить ее для покупок приложений.

Что происходит, когда вы разрабатываете жесткий код своего приложения для проверки чека с помощью песочницы. Затем вы отправляете приложение для просмотра, вы явно жестко закодировали свое приложение, чтобы проверить получение с производственным сервером.

Но ничто не мешает вам делать проверку в два этапа:

  • всегда подтверждать получение с сервером производства первых, это будет претендовать на 99% от вашего приложения жизни. Если квитанция подтверждена, вы закончили.
  • Если предыдущая проверка не прошла, просто подтвердите получение с помощью сервера песочницы. Это должно охватывать ваши потребности в области развития, и, конечно же, поддельные квитанции также не подтвердятся.

Кстати, и это официально указано в документации ТОЛЬКО для подписки, если вы попытаетесь проверить получение почтовой программы на производственном сервере, вы получите конкретный код состояния; существует еще один код состояния, который охватывает случай получения продукции, подтвержденный сервером песочницы. Во всех случаях два мира, песочница и производство всегда разделяются.

Не забывайте также, что с iOS7 был добавлен новый безопасный способ управления проверкой квитанции непосредственно с устройства: на самом деле обратите внимание на то, что проверка чека напрямую от клиента (который вы не полностью контролируете, например, с помощью джейлбрейковых устройств) менее надежна, чем проверка подлинности, выполняемая через сервер, которым вы управляете.

+0

Спасибо за ваш ответ. Да, я предположил, что вы жестко закодировали приложение для проверки получения с производственным сервером, но я читал комментарии от людей, говорящих, что их приложение было отклонено после того, как рецензенты AppStore протестировали при покупке приложений с помощью песочницы. Во всяком случае, для моего первого релиза я решил удалить валидацию, так как хочу получить ее в прямом эфире, а затем рассмотрю метод iOS 7, который вы укажете для следующей версии. – fxfuture

1

Это может потерпеть неудачу. У меня было приложение с покупками приложений (но не на основе моего сервера, прямой код яблока), которые работают в разработке, но сбой, однажды выпущенный Apple. Он разбился, потому что я не сделал все необходимые шаги в iTunes Connect.

Удивительно, что рецензенты этого не заметили, предположительно, так как они также работали в изолированной среде.

Я не уверен, что это поможет вам, надеюсь, что это так.

+0

Какие шаги в подключении iTunes вы пропустили? У меня точно такая же проблема (приложение отлично работает в песочнице и каркасах из магазина) – dougis

3

Всегда проверяйте свою квитанцию ​​сначала с URL-адресом для производства; перейдите к проверке с URL-адресом песочницы, если вы получите код состояния 21007. Следуя этому подходу, вы не должны переключаться между URL-адресами, пока ваше приложение тестируется или просматривается в песочнице или находится в прямом эфире в App Store.

Примечание: Код состояния 21007 указывает, что это квитанция является чековой книжкой, но она была отправлена ​​в производственную службу для проверки.

Существует нет общедоступного API для вызова, чтобы отличать производственные и изолирующие среды, чтобы вы могли решить, какой сервер использовать раньше времени. Если вы внедрили рекомендованный процесс проверки поступления, исправление может быть реализовано на вашем сервере, который связывается с сервером StoreKit. Если код состояния для попытки проверки равен 21007, повторите попытку на сервере песочницы.

Смежные вопросы