Описание

Сервис предоставляет возможность получать платный медиаконтент за разовую плату.

Оплата осуществляется через платежную систему 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",
  "tax_context": {
    "automatic_tax_address_source": null,
    "automatic_tax_enabled": false,
    "automatic_tax_error": null,
    "automatic_tax_exempt": "none",
    "customer_tax_country": null,
    "dynamic_tax_enabled": false,
    "has_maximum_tax_ids": false,
    "tax_id_collection_enabled": false
    ...
  }

Здесь session_id - это id сессии, который отдает stripe при создании платежа, а success_url - это страница, на которую перебрасывает пользователя, в случае успешной оплаты.

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

Как оказалось, на стороне сервера не правильно обрабатывался статус paid от stripe.

Решение

Необходимо загружать контент в каталог пользователя только в том случае, когда есть подтверждение от самого stripe (статус - paid) по соответствующему session_id.