Самый гибкий способ интеграции с ЮKassa: вы самостоятельно выбираете, какие способы оплаты отобразить пользователю, как их отсортировать, как пользователю подтвердить платеж.
При самостоятельной интеграции вы максимально контролируете взаимодействие с пользователем: ЮKassa берёт на себя только взаимодействие с платежными системами и сервисами. Вам необходимо самостоятельно реализовать следующие шаги процесса оплаты:
- выбор способа оплаты (если у вас несколько способов оплаты);
- получение от пользователя данных для оплаты выбранным способом (для некоторых способов оплаты);
- объяснение пользователю, как подтвердить платеж (для некоторых способов оплаты);
- сообщение пользователю результатов проведения платежа.
Шаг 1. Когда пользователь перейдет к оплате, отобразите ему вашу платежную форму. Дождитесь, когда пользователь выберет в вашем интерфейсе способ оплаты, при необходимости введет свои платежные данные (например, логин в интернет-банке) и подтвердит готовность продолжить оплатить (например, нажмет кнопку Заплатить).
Шаг 2. Создайте платеж , передайте в запросе объект
payment_method_data
с выбранным способом оплаты и платежными данными и при необходимости объект confirmation
с информацией о сценарии подтверждения. В запросе можно передать дополнительные параметры, кроме payment_token
, payment_method_id
.Пример запроса при оплате банковской картой
curl https://api.yookassa.ru/v3/payments \ -X POST \ -u <Идентификатор магазина>:<Секретный ключ> \ -H 'Idempotence-Key: <Ключ идемпотентности>' \ -H 'Content-Type: application/json' \ -d '{ "amount": { "value": "2.00", "currency": "RUB" }, "payment_method_data": { "type": "bank_card" }, "confirmation": { "type": "redirect", "return_url": "https://www.example.com/return_url" }, "description": "Заказ №72" }'
Шаг 3. Реализуйте нужный сценарий подтверждения, например перенаправьте пользователя на
confirmation_url
, который придет в объекте платежа .Пример созданного объекта платежа
{ "id": "22c5d173-000f-5000-9000-1bdf241d4651", "status": "pending", "paid": false, "amount": { "value": "2.00", "currency": "RUB" }, "confirmation": { "type": "redirect", "return_url": "https://www.example.com/return_url", "confirmation_url": "https://yoomoney.ru/payments/external/confirmation?orderId=22c5d173-000f-5000-9000-1bdf241d4651" }, "created_at": "2021-04-12T13:59:33.681Z", "description": "Заказ №72", "metadata": {}, "payment_method": { "type": "bank_card", "id": "22c5d173-000f-5000-9000-1bdf241d4651", "saved": false }, "recipient": { "account_id": "100500", "gateway_id": "100700" }, "refundable": false, "test": false }
Шаг 4. Дождитесь успешного завершения платежа: подождите, когда придет уведомление от ЮKassa, или периодически отправляйте запросы, чтобы получить информацию о платеже .
Шаг 5. Сообщите пользователю результат оплаты.
Шаг 6. Если вы проводите платеж в две стадии, подтвердите списание оплаты или отмените платеж. И сообщите пользователю финальный результат платежа.
Готово!
Выберите подходящие вам варианты интеграции способа оплаты в зависимости от сценария подтверждения платежа пользователем и необходимости собирать платежные данные на вашей стороне. Если указано, что сбор платежных данных не нужен, то в
payment_method_data
необходимо передать только код способа оплаты.Сценарии интеграцииОтправка чеков в налоговуюНеуспешные платежиВходящие уведомления