Инструкции
Помощь
Подключить ЮKassa
Автоплатежи
Вы можете сохранять некоторые способы оплаты (со всеми платежными данными) и использовать их для повторных списаний. В этом случае пользователю нужно подтвердить только первый платеж — последующие списания будут безакцептными. Пользователь в любой момент может отозвать свое разрешение на повторы платежей.
Особенности
Автоплатежи поддерживаются во всех сценариях интеграции.
Способы оплаты, которые можно сохранять для автоплатежей:
Пользователь в любой момент может отозвать свое разрешение на повторы платежей.
По умолчанию автоплатежи работают только в тестовом магазине. Если хотите использовать их в вашем реальном магазине, напишите менеджеру ЮKassa.
Если вы пополняете баланс телефонов, ознакомьтесь с особенностями передачи номера при автоплатежах
Для партнеров
Если вы партнер и для аутентификации запросов используете OAuth-токен, вы можете проводить автоплатежи от имени пользователей ЮKassa. Доступно только для сценариев интеграции Виджет ЮKassa и Умный платеж. Сохранить для автоплатежей можно только кошелек ЮMoney и произвольную банковскую карту.
Чтобы проводить автоплатежи от лица магазина:
  • сообщите магазину, что ему нужно обратиться к менеджеру ЮKassa, чтобы подключить автоплатежи;
  • запросите у магазина право на сохранение и использование способов оплаты для повторных платежей.
Порядок работы
Шаг 1. Сохраните способ оплаты — привяжите платежное средство пользователя к вашему магазину. Для этого проведите успешный платеж. После того, как пользователь разрешит вам привязать платежное средство к магазину и подтвердит списание денег, ЮKassa сохранит у себя данные, которые использовались при оплате. Идентификатором сохраненного способа оплаты станет идентификатор проведенного платежа.
Шаг 2. Проведите автоплатеж (повторный платеж) — реализуйте безакцептную оплату привязанным к магазину платежным средством.
Сохранение способа оплаты
Чтобы сохранить способ оплаты, создайте платеж и передайте в нём следующие параметры:
Далее проводите платеж как обычно.
cURL
PHP
Python
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.
JSON
{
  "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
PHP
Python
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 или периодически отправляйте запросы, чтобы получить информацию о платеже .
JSON
{
  "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.
JSON
{
    "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Проведение платежейСпособы оплаты