Доступ к квитанциям StoreKit напрямую с сервера

Я создаю приложение для iOS, которое предоставляет услугу, которую уже предоставляет наш веб-сайт. Это услуга на основе подписки, в которой все функции доступны после подписки. Чтобы люди подписывались на регулярные платежи в приложении, похоже, мне придется пройти через API Apple для покупки приложений с автоматическим продлением подписки. Это нормально, но проблема в том, что услуги, которые пользователи будут приобретать через приложение, также должны быть доступны на сайте. Но, читая пошаговые руководства и руководство для разработчиков, похоже, что единственный способ обработки транзакций — через само приложение, которое затем можно настроить для передачи информации на сервер. Но потом я представляю себе такой сценарий:

Пользователь покупает подписку в приложении для iOS, переключается между использованием сайта и приложения для iOS. В день, когда с пользователя взимается плата, а в последующие дни он использует только веб-сайт по какой-либо причине. Однако сервер не знает, что им был выставлен счет, поэтому функции отключены. Чтобы сервер узнал, что Apple выставила счет пользователю, пользователь должен открыть приложение на своем iphone или ipad и синхронизировать его как с Apple, так и с моим сервером.

Есть ли способ, которым мой сервер может напрямую пинговать Apple и получать информацию о покупках, сделанных для моего приложения для данного пользователя? я ничего не нашел; два предложенных макета, с сервером или без него, используют приложение iOS в качестве единственного коммуникатора с Apple, за исключением того, что сервер проверяет достоверность информации. Если сервер не может получить эту информацию из первых рук, какое другое возможное решение может быть?

  1. Старайтесь не использовать встроенную платежную систему Apple и рискуете получить отказ (с приложением, дублирующим услугу, которая была доступна в течение многих лет в Интернете, нам все равно больше не нужно использовать их систему покупки приложений?)
  2. Если пользователь платит через Apple, попросите сервер предоставить ему щедрый буфер между ожидаемыми датами оплаты и отключенными функциями (уменьшает вероятность возникновения проблемы, но не решает ее).
  3. Когда серверу кажется, что срок действия его учетной записи истек, но он этого не ожидает, отправьте пользователю электронное письмо с сообщением о том, что он должен открыть приложение, иначе его учетная запись не будет зачислена за купленное время (кажется странной и не очень хорошей вещью для должны попросить пользователя сделать, чтобы использовать услугу)

Это все, что я пока смог придумать. Кто-нибудь может посоветовать эти решения, или знает других, или знает, с кем я мог бы поговорить, чтобы попытаться понять это?


person scott_at_skritter    schedule 04.03.2012    source источник
comment
Слишком много информации здесь. Можешь немного отвеять? В противном случае Разработка программного обеспечения может быть лучше   -  person Caffeinated    schedule 04.03.2012
comment
Спасибо за ссылку! Я пошел и записался. В следующий раз я буду помнить о различных типах вопросов. Я оставлю это как есть, так как на него уже ответили.   -  person scott_at_skritter    schedule 07.03.2012


Ответы (1)


Да, вы можете проверить статус учетной записи пользователя с вашего сервера. Есть несколько предостережений:

  • Прежде всего, автоматически продлеваемые подписки зарезервированы для периодических изданий, таких как журналы и газеты. Если ваше приложение не похоже на них, Apple может отклонить его (как они сделали мое) и попросить вас использовать подписки без продления (читай: подписки с продлением вручную).
  • Во-вторых: в этом сценарии вам потребуется хранить все квитанции, которые вы получаете в приложении, на своем сервере.
  • Наконец: я не знаю, как работает ваша система имени пользователя/пароля, но пользователь должен будет войти в систему с теми же учетными данными в вашем приложении, что и на вашем веб-сайте.

Вот как вы проверяете состояние учетной записи пользователя: Храните на своем сервере как минимум одну квитанцию ​​для каждого пользователя. Если вы хотите проверить статус, следуйте процедуре Apple для Проверка квитанций App Store. Отправьте им эту квитанцию, и они ответят последней квитанцией и датой истечения срока действия. Теперь вы в любой момент будете знать, актуален ли счет человека или нет.

person Andrew    schedule 07.03.2012
comment
Спасибо, Андрей, это ответ на мой вопрос! Эта система будет работать нормально. Re: быть отвергнутым, это тоже проблема. Глядя на документ Apple, они говорят: подписки предоставляют доступ к контенту или услугам на расширенной основе. Например, ваше приложение может предлагать ежемесячный доступ к финансовой информации или к порталу онлайн-игр. Я прочитал это с надеждой, но я также слышал то, что вы говорите, и из других источников. Я думаю, единственное, что для этого нужно, это отправить приложение и посмотреть. Пункты 2 и 3 уже как строится. - person scott_at_skritter; 07.03.2012
comment
Да, о цитате из документа Apple, но я думаю, что это утверждение применимо к обоим типам подписки. Я не говорю, что они вообще не разрешат вам использовать подписки, я просто говорю, что они могут настоять на том, чтобы вы использовали непродлеваемый тип вместо автоматического продления. И это может быть благословением. Автоматическое продление подписки может быть головной болью: вы не можете отменить подписку со своей стороны, вы не можете определить, включено ли у пользователя «автоматическое» до тех пор, пока оно не будет продлено, и т. д. А с подписками без продления вы можете вручную продлить подписку. подписка пользователя в качестве бонуса, так как вы сами рассчитываете срок действия. - person Andrew; 08.03.2012
comment
Привет, ребята, Ссылка, опубликованная ранее, похоже, была удалена Apple. - person Heider Sati; 04.11.2016