Быстрый старт
API Яндекс.Кассы позволяет принимать платежи онлайн — в вебе и на мобильных устройствах. Эта статья поможет вам принять первый платеж, при этом вашим покупателям будут доступны все способы оплаты, которые вы подключили.
 Подготовка
Чтобы начать работать с Яндекс.Кассой, вам нужно зарегистрироваться и получить доступ к личному кабинету. Для аутентификации запросов в API вам потребуется секретный ключ и идентификатор магазина из личного кабинета.
Вы можете провести этот платеж в тестовом магазине. У тестового магазина свой идентификатор (начинается с префикса test_) и секретный ключ (можно посмотреть в личном кабинете). При оплате в тестовом магазине все проходит, как при настоящих платежах, но деньги никуда не переводятся. Протестировать можно только два способа оплаты: банковские карты и Яндекс.Деньги.
 Шаг 1. Создайте платеж
Платеж — главная сущность API Яндекс.Кассы. Чтобы его создать, вам понадобятся сумма платежа и URL, на который пользователь вернется после оплаты. Также вам нужно передать параметр
capture
со значением
true
. Это значит, что вы получите деньги сразу после оплаты (при значении
false
нужная сумма заблокируется на счете пользователя, и после этого вы можете ее списать в удобное вам время).
Если хотите добавить описание платежа, которое вы увидите в личном кабинете, а пользователь — при оплате, передайте его в параметре
description
. Описание должно быть не более 128 символов.
Отправьте Яндекс.Кассе запрос и передайте в нем данные для создания платежа, данные для аутентификации (идентификатор магазина и секретный ключ) и ключ идемпотентности (подойдет любое случайное значение).
Все запросы к API Яндекс.Кассы необходимо отправлять с вашего сервера. Для взаимодействия с Яндекс.Кассой вы можете использовать готовые серверные SDK.
Пример запроса на создание платежа
cURL
PHP
Python
curl https://payment.yandex.net/api/v3/payments \
  -X POST \
  -u <Идентификатор магазина>:<Секретный ключ> \
  -H 'Idempotence-Key: <Ключ идемпотентности>' \
  -H 'Content-Type: application/json' \
  -d '{
        "amount": {
          "value": "100.00",
          "currency": "RUB"
        },
        "capture": true,
        "confirmation": {
          "type": "redirect",
          "return_url": "https://www.merchant-website.com/return_url"
        },
        "description": "Заказ №1"
      }'
 Шаг 2. Отправьте пользователя на страницу оплаты
В теле ответа от Яндекс.Кассы вы получите созданный объект платежа  в статусе
pending
. Для оплаты перенаправьте пользователя на
confirmation_url
.
Redirect — это основной сценарий подтверждения платежа пользователем. В некоторых случаях подтверждение пользователем не требуется или может проходить по другому сценарию.
Пример созданного объекта платежа
JSON
{
  "id": "23d93cac-000f-5000-8000-126628f15141",
  "status": "pending",
  "paid": false,
  "amount": {
    "value": "100.00",
    "currency": "RUB"
  },
  "confirmation": {
    "type": "redirect",
    "confirmation_url": "https://money.yandex.ru/api-pages/v2/payment-confirm/epl?orderId=23d93cac-000f-5000-8000-126628f15141"
  },
  "created_at": "2019-01-22T14:30:45.129Z",
  "description": "Заказ №1",
  "metadata": {},
  "recipient": {
    "account_id": "100001",
    "gateway_id": "1000001"
  },
  "refundable": false,
  "requestor": {
    "type": "merchant",
    "account_id": "100001"
  },
  "test": false
}
Если вы создаете платеж для тестового магазина, для оплаты используйте одну из тестовых карт, например 5555555555554444 (подойдет любой код CVC и дата из будущего).
После успешной оплаты (и если что-то пойдет не так) Яндекс.Касса вернет пользователя на
return_url
, который вы передали при создании платежа.
 Шаг 3. Дождитесь успешного выполнения платежа
Платеж можно считать успешным, как только он перешел в статус
succeeded
. Если пользователь передумает платить или что-то пойдет не так, платеж перейдет в статус
canceled
.
Чтобы узнать статус платежа, подпишитесь на уведомления от Яндекс.Кассы.
Также вы можете следить за статусом, запрашивая информацию о платеже  с удобной для вас периодичностью (например, после того, как пользователь вернулся на
return_url
). Для этого вам понадобится идентификатор платежа (значение параметра
id
в созданном объекте платежа).
Ура, вы приняли первый платеж!
В этом примере пользователь выбирал способы оплаты и вводил данные на стороне Яндекс.Кассы. Этот сценарий называется Умный платеж. Если для ваших задач он не подходит, вы можете выбрать другой сценарий интеграции.
Помните, что для приема реальных платежей нужно использовать идентификатор и секретный ключ настоящего магазина.
 Что почитать еще
Сценарии интеграцииНеуспешные платежиСпособы оплатыОплата по 54-ФЗВходящие уведомления