Прикрепить дополнительные данные к расходным материалам - PullRequest
0 голосов
/ 23 января 2019

Я создаю приложение, которое позволяет покупать цифровые товары. Поскольку у нас есть много доступных предметов, мы не можем использовать расходные материалы, поэтому мы определяем расходные материалы для различных ценовых категорий (2 €, 3 € и т. Д.).

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

Вот где я не уверен, как это реализовать. Чтобы получить квитанцию ​​о транзакции, мне нужно прослушать PaymentQueue, поэтому я получаю квитанцию ​​асинхронно и без контекста из фактической покупки.

Как связать квитанцию ​​с предметом, приобретенным пользователем?

Из того, что я знаю, есть два варианта:

  1. Прикрепите данные к моей покупке, которые я могу прочитать из квитанции. Это возможно? Это был бы идеальный сценарий.
  2. Сохраните список идентификаторов товаров, которые пользователь начал покупать, и когда я получаю квитанцию ​​(или много квитанций) из своей очереди, я просто просматриваю идентификаторы товаров и отправляю их на свой сервер. Когда покупка завершена, я удаляю идентификатор товара из своего списка. Это жизнеспособное решение? Может ли быть проблема с несколькими устройствами, когда устройство получает квитанцию, хотя оно не инициировало платеж?

1 Ответ

0 голосов
/ 29 января 2019

Я только что столкнулся с той же проблемой в моем приложении. Вот как я справился с этим:

  1. Прикрепите данные к моей покупке, которые я могу прочитать из квитанции. Это возможно? Это был бы идеальный сценарий.

Как вы, наверное, узнали, это невозможно.

  1. Сохраните список идентификаторов товаров, которые пользователь начал покупать, и когда я получаю квитанцию ​​(или много квитанций) из своей очереди, я просто ищу товар идентификаторы и отправьте их на мой сервер. Когда покупка закончена, Я удаляю идентификатор элемента из своего списка. Это жизнеспособное решение? Можно Там может быть проблема с несколькими устройствами, где устройство получает квитанция, хотя она не инициировала платеж?

Это очень похоже на то, что я сделал. Всякий раз, когда пользователь совершает покупку, я создаю свой собственный объект покупки, который добавляется в массив в пользовательских настройках по умолчанию. Мой платежный объект содержит идентификатор продукта App Store Connect, а также информацию о продукте для моего приложения.

Когда поступает квитанция в PaymentQueue, я делаю следующее:

  1. Найдите первый платежный объект в пользовательских настройках по умолчанию, который имеет совпадающий идентификатор продукта.
  2. Удалить объект (ы) оплаты из PaymentQueue. Обратите внимание, что PaymentQueue может принимать массив транзакций.
  3. Для каждой пары объект / транзакция отправьте на мой сервер для проверки и обработки
  4. Если все прошло хорошо, завершите транзакцию
  5. Если с моей стороны что-то не так, я снова добавляю объект платежа в настройки пользователя по умолчанию и не завершаю транзакцию

Я испытал странное поведение при тестировании в Sandbox, где я видел, что старые квитанции также появляются в PaymentQueue. В этом случае в пользовательских настройках по умолчанию отсутствует соответствующий объект, поэтому я все равно завершаю транзакцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...