Пополнение баланса телефонов
Только для тех, у кого MCC-код – 4814 (телекоммуникационные услуги).
Если через вашу систему можно пополнить баланс мобильного или стационарного телефона, то по требованию НСПК при платеже необходимо дополнительно передавать номер пополняемого телефона.
В этой статье описано, как это сделать по API ЮKassa при проведении обычных платежей и автоплатежей.
Как это работает
Если вы пополняете баланс мобильного или стационарного телефона, вам нужно в запросе на создание платежа дополнительно передавать номер пополняемого телефона. Номер нужно передавать для любого сценария интеграции.
При подтверждении и отмене платежа номер телефона передавать не нужно.
Если у вас подключены автоплатежи, при пополнении баланса тоже нужно передавать номер телефона. Подробнее об особенностях проведения автоплатежей при пополнении баланса телефона
Создание платежа
Создайте платеж 
: отправьте ЮKassa запрос с данными для аутентификации, ключом идемпотентности, суммой и валютой платежа и данными для оплаты выбранным способом. Дополнительно в объекте
fraud_data
, в параметре
topped_up_phone
, передайте номер телефона, который вы хотите пополнить. Пример:
79110000000
Пример запроса на создание платежа с передачей пополняемого номера телефона (на примере оплаты банковской картой)
cURL
curl https://api.yookassa.ru/v3/payments \
  -X POST \
  -u <Идентификатор магазина>:<Секретный ключ> \
  -H 'Idempotence-Key: <Ключ идемпотентности>' \
  -H 'Content-Type: application/json' \
  -d '{
        "amount": {
          "value": "100.00",
          "currency": "RUB"
        },
        "payment_method_data": {
          "type": "bank_card"
        },
        "confirmation": {
          "type": "redirect",
          "return_url": "https://www.example.com/return_url"
        },
        "description": "Пополнение баланса телефона",
        "fraud_data": {
          "topped_up_phone": "79000000000"
        }
      }'
В объекте платежа  объект
fraud_data
с номером телефона не возвращается.
Передача номера телефона при автоплатежах
Если у вас подключены автоплатежи, вы можете сохранять способ оплаты и использовать его при пополнении баланса телефона.
Есть два варианта, как сохранить способ оплаты:
  • Только для пополнения телефонов — вы можете использовать сохраненный способ оплаты для пополнения баланса телефонов. Для других операций сохраненный способ оплаты не подойдет.
  • Для любых операций — вы можете использовать сохраненный способ оплаты для любых операций, в том числе для пополнения телефонов.
Пополнение баланса телефонов
При создании платежа с сохранением способа оплаты передайте номер пополняемого телефона.
Пример запроса на создание платежа с сохранением способа оплаты для пополнения баланса телефонов (на примере оплаты банковской картой)
cURL
curl https://api.yookassa.ru/v3/payments \
  -X POST \
  -u <Идентификатор магазина>:<Секретный ключ> \
  -H 'Idempotence-Key: <Ключ идемпотентности>' \
  -H 'Content-Type: application/json' \
  -d '{
        "amount": {
          "value": "100.00",
          "currency": "RUB"
        },
        "payment_method_data": {
          "type": "bank_card"
        },
        "confirmation": {
          "type": "redirect",
          "return_url": "https://www.example.com/return_url"
        },
        "description": "Пополнение баланса телефона",
        "save_payment_method": "true",
        "fraud_data": {
          "topped_up_phone": "79000000000"
        }
      }'
При повторных платежах номер можно не передавать. Если вы передадите другой номер при повторном платеже, то ЮKassa отправит в НСПК его, а не тот номер, который вы передавали при сохранении способа оплаты.
Пример запроса на создание повторного платежа сохраненным способом оплаты для пополнения баланса телефонов
cURL
curl https://api.yookassa.ru/v3/payments \
  -X POST \
  -u <Идентификатор магазина>:<Секретный ключ> \
  -H 'Idempotence-Key: <Ключ идемпотентности>' \
  -H 'Content-Type: application/json' \
  -d '{
        "amount": {
          "value": "100.00",
          "currency": "RUB"
        },
        "capture": true,
        "payment_method_id": "<Идентификатор сохраненного способа оплаты>",
        "payment_method_data": {
          "type": "bank_card"
        },
        "confirmation": {
          "type": "redirect",
          "return_url": "https://www.example.com/return_url"
        },
        "description": "Пополнение баланса телефона",
        "save_payment_method": "true",
        "fraud_data": {
          "topped_up_phone": "79111111111"
        }
      }'
Проведение любых операций
При создании платежа с сохранением способа оплаты не передавайте номер пополняемого телефона.
Пример запроса на создание платежа с сохранением способа оплаты для проведения любых операций (на примере оплаты банковской картой)
cURL
curl https://api.yookassa.ru/v3/payments \
  -X POST \
  -u <Идентификатор магазина>:<Секретный ключ> \
  -H 'Idempotence-Key: <Ключ идемпотентности>' \
  -H 'Content-Type: application/json' \
  -d '{
        "amount": {
          "value": "100.00",
          "currency": "RUB"
        },
        "payment_method_data": {
          "type": "bank_card"
        },
        "confirmation": {
          "type": "redirect",
          "return_url": "https://www.example.com/return_url"
        }
      }'
При повторных платежах передавайте номер телефона только в случае, если вы проводите операцию по пополнению баланса.
Пример запроса на создание повторного платежа сохраненным способом оплаты для пополнения баланса телефонов
cURL
curl https://api.yookassa.ru/v3/payments \
  -X POST \
  -u <Идентификатор магазина>:<Секретный ключ> \
  -H 'Idempotence-Key: <Ключ идемпотентности>' \
  -H 'Content-Type: application/json' \
  -d '{
        "amount": {
          "value": "100.00",
          "currency": "RUB"
        },
        "capture": true,
        "payment_method_id": "<Идентификатор сохраненного способа оплаты>",
        "payment_method_data": {
          "type": "bank_card"
        },
        "confirmation": {
          "type": "redirect",
          "return_url": "https://www.example.com/return_url"
        },
        "description": "Пополнение баланса телефона",
        "save_payment_method": "true",
        "fraud_data": {
          "topped_up_phone": "79000000000"
        }
      }'
Что почитать еще
Сценарии интеграцииСоздание платежа в справочнике API ЮKassaОтправка чеков в налоговую