Я должен реализовать общую политику отзыва c для покупок как для android, так и iOS.
Вот что я имею в виду под политикой отзыва:
Пользователю предоставляется возможность купить виртуальную валюту (V C) в приложении. Когда пользователь успешно завершит транзакцию, баланс пользователя будет увеличен на сумму V C, которую он приобрел. Если позже он вернет / отменит транзакцию, то необходимо вычесть баланс пользователя (возврат депозита).
Я также хочу убрать любые вопросы, которые могут появиться.
Обе Android и iOS приложение имеет общий бэкэнд, который будет использоваться для следующих целей:
- Сохранение баланса пользователей
- Внесение определенной суммы V C или ее возврат
- Выполнение проверки покупки, выданной приложениями
Один из возможных вариантов, о которых я могу подумать:
Пользователь открывает приложение (iOS или Android это не имеет значения) и запускает процесс покупки. Вводит свои платежные реквизиты и нажимает кнопку отправить Это создает транзакцию в соответствующем App Store. Затем приложение отправляет подробности транзакции на сервер. Сервер отвечает за проверку транзакции и после успешной проверки зачисление V C на баланс пользователя.
Возможные проблемы:
Через несколько дней пользователь возвращает свою транзакцию. Как сервер получит уведомление?
1.1. Согласно документам Google, они предоставляют Void API и Server Push-уведомления , но только для подписок и одноразовых покупок, а не для обычных покупок. То же самое относится к серверным API Apple, которые также имеют Server Pu sh Уведомления , которые предназначены только для подписок и Проверка получения . Эти API не подходят для реализации механизма отзыва покупок. Также имейте в виду, что в день совершаются сотни тысяч покупок, и API должен соответствовать этому объему.
Что если по какой-то причине сервер успешно выполнит проверку покупки, но не сможет предоставить V C из-за некоторых бизнес-правил? В этом случае деньги пользователя будут забраны в App Store, и он не получит товары, за которые заплатил.
2.1. Я понимаю, что после проверки покупки на бэкэнде приложение должно завершить / подтвердить транзакцию в App Store. Но в этом случае транзакция не должна быть подтверждена, поскольку она не может быть выполнена на основании некоторых бизнес-правил. Пользователь не должен быть обвинен в этом случае. Документы для iOS и Android неясно, как этого можно достичь.
Помощь по следующим вопросам будет высоко оценена:
- Реализация такого механизма, который подходит для обеих мобильных платформ (или для каждой платформы в отдельности)
- Пролить свет на крайние случаи платежной транзакции для Android и iOS