Комментарии 4
По схеме возможна ситуация:
П.1 и 2 корректно отработали - пользователь выбрал товар, перешел на платформу, оплатил.
П.3 не отработал (по какой-то причине) - бэкенд вообще не узнает о попытке оплаты и ее результате со всеми вытекающими.
На схеме просто не отражено, или вы такие ситуации не учитываете?
Без выполнения пункта 3 пользователь просто не получит товар. Если он каким-то образом не сработал, пользователь может попробовать купить товар ещё раз, не обращаясь к серверу платформы, так как у него уже должен быть чек покупки в локальной бд.
И в Google Play и в AppStore прекрасно работают схемы с подписями чеков приватным ключом стора и проверкой их без непосредственного обращения к самому стору со стороны бэкенда. Это в некоторых случаях, правда, добавляет других проблем.
Подключаем RuStore оплаты для вашего Ruby-приложения