Вы можете сохранять некоторые способы оплаты (со всеми платежными данными) и использовать их для повторных списаний. В этом случае пользователю нужно подтвердить только первый платеж — последующие списания будут безакцептными. Пользователь в любой момент может отозвать свое разрешение на повторы платежей.
Автоплатежи поддерживаются во всех сценариях интеграции.
Способы оплаты, которые можно сохранять для автоплатежей:
- кошелек ЮMoney (кроме банковских карт, привязанных к кошельку);
- произвольная банковская карта;
- Mir Pay;
- SberPay;
- СБП (есть особенности).
Пользователь в любой момент может отозвать свое разрешение на повторы платежей.
По умолчанию автоплатежи работают только в тестовом магазине. Если хотите использовать их в вашем реальном магазине, напишите менеджеру ЮKassa.
Если вы пополняете баланс телефонов, ознакомьтесь с особенностями передачи номера при автоплатежах
Если вы партнер и для аутентификации запросов используете OAuth-токен, вы можете проводить автоплатежи от имени пользователей ЮKassa. Доступно только для сценариев интеграции Виджет ЮKassa и Умный платеж. Сохранить для автоплатежей можно только кошелек ЮMoney и произвольную банковскую карту.
Чтобы проводить автоплатежи от лица магазина:
- сообщите магазину, что ему нужно обратиться к менеджеру ЮKassa, чтобы подключить автоплатежи;
- запросите у магазина право на сохранение и использование способов оплаты для повторных платежей.
Шаг 1. Сохраните способ оплаты — привяжите платежное средство пользователя к вашему магазину. Для этого проведите успешный платеж. После того, как пользователь разрешит вам привязать платежное средство к магазину и подтвердит списание денег, ЮKassa сохранит у себя данные, которые использовались при оплате. Идентификатором сохраненного способа оплаты станет идентификатор проведенного платежа.
Шаг 2. Проведите автоплатеж (повторный платеж) — реализуйте безакцептную оплату привязанным к магазину платежным средством.
Чтобы сохранить способ оплаты, создайте платеж и передайте в нём следующие параметры:
save_payment_method
со значениемtrue
;type
с кодом способа оплаты, который поддерживает автоплатежи.
Далее проводите платеж как обычно.
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" }, "capture": true, "description": "Заказ №72", "save_payment_method": "true" }'
Чтобы получить идентификатор сохраненного способа оплаты:
Шаг 1. Дождитесь, когда пользователь подтвердит оплату, и платеж перейдет в статус
succeeded
(или waiting_for_capture
, если это платеж в две стадии). Чтобы узнать статус платежа, подождите, когда придет уведомление от ЮKassa, или периодически отправляйте запросы, чтобы получить информацию о платеже .Шаг 2. Убедитесь, что способ оплаты сохранен: в объекте платежа значение
payment_method.saved
изменилось на true
.{ "id": "22e18a2f-000f-5000-a000-1db6312b7767", "status": "succeeded", "paid": true, "amount": { "value": "2.00", "currency": "RUB" }, "authorization_details": { "rrn": "10000000000", "auth_code": "000000", "three_d_secure": { "applied": true } }, "captured_at": "2018-07-18T17:20:50.825Z", "created_at": "2018-07-18T17:18:39.345Z", "description": "Заказ №72", "metadata": {}, "payment_method": { "type": "bank_card", "id": "22e18a2f-000f-5000-a000-1db6312b7767", "saved": true, "card": { "first6": "555555", "last4": "4444", "expiry_month": "07", "expiry_year": "2022", "card_type": "MasterCard", "issuer_country": "RU", "issuer_name": "Sberbank" }, "title": "Bank card *4444" }, "refundable": true, "refunded_amount": { "value": "0.00", "currency": "RUB" }, "recipient": { "account_id": "100500", "gateway_id": "100700" }, "test": false }
Шаг 3. Сохраните идентификатор способа оплаты
payment_method.id
. Его нужно будет использовать в качестве идентификатора сохраненного способа оплаты при последующих платежах.Готово!
Теперь вы можете проводить автоплатежи. Также идентификатор сохраненного способа оплаты можно использовать для проведения выплат (только для банковских карт).
С помощью сохраненного способа оплаты вы можете проводить автоплатежи, например регулярно списывать абонентскую плату за подписку или моментально списывать оплату за покупки в вашем магазине, без необходимости вводить платежные данные.
Чтобы провести автоплатеж, создайте платеж и передайте в нём сумму, описание транзакции и параметр
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" }, "capture": true, "payment_method_id": "<Идентификатор сохраненного способа оплаты>", "description": "Заказ №105" }'
При успешной оплате в объекте
payment_method
будет отображаться информация о платежных данных сохраненного способа, который вы использовали при платеже.Если вы используете решение ЮKassa для работы по 54-ФЗ и сценарий Сначала чек, потом платеж, то платеж может вернуться в статусе
pending
. Это значит, что ЮKassa дожидается от онлайн-кассы результатов формирования чека. Чтобы узнать об успешной или неуспешной регистрации чека и статусе платежа, дождитесь уведомления от ЮKassa или периодически отправляйте запросы, чтобы получить информацию о платеже .{ "id": "255350c9-000f-5000-a000-1f211b3ea0a7", "status": "succeeded", "paid": true, "amount": { "value": "2.00", "currency": "RUB" }, "authorization_details": { "rrn": "10000000000", "auth_code": "000000", "three_d_secure": { "applied": true } }, "captured_at": "2018-07-18T17:20:50.825Z", "created_at": "2018-07-18T17:18:39.345Z", "description": "Заказ №72", "metadata": {}, "payment_method": { "type": "bank_card", "id": "22e18a2f-000f-5000-a000-1db6312b7767", "saved": true, "card": { "first6": "555555", "last4": "4444", "expiry_month": "07", "expiry_year": "2022", "card_type": "MasterCard", "issuer_country": "RU", "issuer_name": "Sberbank" }, "title": "Bank card *4444" }, "refundable": true, "refunded_amount": { "value": "0.00", "currency": "RUB" }, "recipient": { "account_id": "100500", "gateway_id": "100700" }, "test": false }
Если пользователь отозвал свое разрешение на повторные списания из кошелька ЮMoney, платеж не пройдет. В объекте
cancellation_details
будет указана причина отмены — permission_revoked
.{ "id": "24a40656-000f-5000-9000-134108dd5325", "status": "canceled", "paid": false, "amount": { "value": "10.00", "currency": "RUB" }, "created_at": "2019-06-25T10:08:22.531Z", "metadata": {}, "payment_method": { "type": "yoo_money", "id": "249ea698-000f-5000-9000-1200128b882c", "saved": true }, "recipient": { "account_id": "100500", "gateway_id": "100700" }, "refundable": false, "test": false, "cancellation_details": { "party": "yoo_money", "reason": "permission_revoked" } }
Тестирование автоплатежейУниверсальный токен для платежей и выплатВиджет ЮKassaПроведение платежейСпособы оплаты