В приложении покупки механизм отзыва для Android и iOS - PullRequest
0 голосов
/ 26 февраля 2020

Я должен реализовать общую политику отзыва c для покупок как для android, так и iOS.

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

Я также хочу убрать любые вопросы, которые могут появиться.
Обе Android и iOS приложение имеет общий бэкэнд, который будет использоваться для следующих целей:

  • Сохранение баланса пользователей
  • Внесение определенной суммы V C или ее возврат
  • Выполнение проверки покупки, выданной приложениями

Один из возможных вариантов, о которых я могу подумать:

Пользователь открывает приложение (iOS или Android это не имеет значения) и запускает процесс покупки. Вводит свои платежные реквизиты и нажимает кнопку отправить Это создает транзакцию в соответствующем App Store. Затем приложение отправляет подробности транзакции на сервер. Сервер отвечает за проверку транзакции и после успешной проверки зачисление V C на баланс пользователя.

Возможные проблемы:

  1. Через несколько дней пользователь возвращает свою транзакцию. Как сервер получит уведомление?

    1.1. Согласно документам Google, они предоставляют Void API и Server Push-уведомления , но только для подписок и одноразовых покупок, а не для обычных покупок. То же самое относится к серверным API Apple, которые также имеют Server Pu sh Уведомления , которые предназначены только для подписок и Проверка получения . Эти API не подходят для реализации механизма отзыва покупок. Также имейте в виду, что в день совершаются сотни тысяч покупок, и API должен соответствовать этому объему.

  2. Что если по какой-то причине сервер успешно выполнит проверку покупки, но не сможет предоставить V C из-за некоторых бизнес-правил? В этом случае деньги пользователя будут забраны в App Store, и он не получит товары, за которые заплатил.

    2.1. Я понимаю, что после проверки покупки на бэкэнде приложение должно завершить / подтвердить транзакцию в App Store. Но в этом случае транзакция не должна быть подтверждена, поскольку она не может быть выполнена на основании некоторых бизнес-правил. Пользователь не должен быть обвинен в этом случае. Документы для iOS и Android неясно, как этого можно достичь.

Помощь по следующим вопросам будет высоко оценена:

  • Реализация такого механизма, который подходит для обеих мобильных платформ (или для каждой платформы в отдельности)
  • Пролить свет на крайние случаи платежной транзакции для Android и iOS
...