Описание
Сервис предоставляет возможность получать платный медиаконтент за разовую плату.
Оплата осуществляется через платежную систему stripe, после чего контент становится доступным в пользовательском каталоге.
В процессе тестовой оплаты, был исследован API-запрос инициализации платежа согласно документации.
{
...
"sepa_debit_info": null,
"session_id": "cs_live_n7RSUDnLkxw4vcxfSX6XOrGmPfHorRdYpziXltcPDUziqUVFsqjEtBTzNnUnqf9fLCRou0F",
"setup_future_usage": null,
"setup_future_usage_for_payment_method_type": {},
"setup_intent": null,
"shipping_address_collection": null,
"shipping_options": [],
"shipping_rate": null,
"shipping_tax_amounts": [],
"state": "active",
"status": "open",
"submit_type": "pay",
"subscription_data": null,
"subscription_settings": null,
"success_url": "https://example.com/api/stripe-success?session_id=cs_live_n7RSUDnLkxw4vcxfSX6XOrGmPfHorRdYpziXltcPDUziqUVFsqjEtBTzNnUnqf9fLCRou0F",
...
}
...
Здесь session_id - это id сессии, который отдает stripe при создании платежа, а success_url - это страница, на которую перебрасывает пользователя, в случае успешной оплаты.
При переходе по этой ссылке, сайт сообщает нам об успешной оплате и зачисляет контент в пользовальской каталог.
Как оказалось, на стороне сервера не правильно обрабатывался статус paid от stripe.
При переходе по этой ссылке, сайт сообщает нам об успешной оплате и зачисляет контент в пользовальской каталог.
Как оказалось, на стороне сервера не правильно обрабатывался статус paid от stripe.
Решение
Необходимо загружать контент в каталог пользователя только в том случае, когда есть подтверждение от самого stripe (статус - paid) по соответствующему session_id.