Разработчикам

Сайт подключается к Paymatic один раз. Дальше банки, способы оплаты и правила маршрутизации меняются в кабинете, и код сайта переписывать не нужно.

POST/v1/payments
{
  "amount": 249000,
  "currency": "RUB",
  "routing_group": "cards_ru",
  "product_type": "digital_goods",
  "order_id": "A_10473",
  "return_url": "https://shop.example.com/done"
}

С чего начать

Выберите строку, которая описывает вашу задачу. Дальше страница ведёт только по ней.

Порядок подключения

Сроков мы не обещаем, они зависят от банка и от вашей стороны. Обещание здесь другое. Девять шагов, и ни одного скрытого.

  1. 1 Договор с банкомЗаключаете договоры с банками-эквайерами, если их ещё нет. Расчёты идут между вами и банком напрямую. Бизнес
  2. 2 Согласование софтаСогласуете с банком работу стороннего платёжного софта. Процедура штатная, банки её знают. Бизнес
  3. 3 Проект в кабинетеПолучаете доступ, создаёте проект, указываете сайт и способы оплаты. Бизнес
  4. 4 Ключи тестовой средыЗабираете идентификатор проекта и ключ подписи для тестового контура. Бизнес
  5. 5 Подпись запросаСчитаете подпись на своей стороне и проверяете её готовым набором запросов. Первый рабочий ответ приходит здесь. Разработчик
  6. 6 Платёжная сессияСоздаёте сессию, передаёте признаки маршрутизации и уводите покупателя на платёжную страницу. Разработчик
  7. 7 УведомленияПринимаете уведомление о статусе, отвечаете на него и перепроверяете статус запросом. Разработчик
  8. 8 ЧекиПодключаете свою кассу или кассу Paymatic и задаёте состав чека. Разработчик
  9. 9 Боевые ключиПроходите проверку на тестовом контуре, получаете боевые ключи и переключаете адрес. Вместе

Маршрутизация в запросе

Правила маршрутизации живут не в презентации, а в полях запроса. Вы передаёте признаки платежа, платформа сверяет их с правилами, которые вы задали в кабинете, и выбирает банк. При смене банка на стороне сайта не меняется ничего.

POST/v1/payments
// признаки, по которым выбирается банк
{
  "amount": 249000,
  "currency": "RUB",
  "routing_group": "cards_ru",
  "product_type": "digital_goods",
  "order_id": "A_10473",
  "customer_ref": "u_884213",
  "return_url": "https://shop.example.com/done",
  "webhook_url": "https://shop.example.com/pmc"
}
200ответ платформы
// видно, куда ушёл запрос и по какому правилу
{
  "payment_id": "pm_8f3c21a0",
  "status": "pending",
  "routed_to": "acquirer_2",
  "matched_rule": "cards_ru_70_30",
  "attempt": 1,
  "payment_url": "https://pay.example.com/8f3c21a0"
}
routing_group

Группа маршрутизации, которую вы завели в кабинете. Внутри неё лежат банки, доли потока между ними и порядок запасных вариантов.

product_type

Тип товара. Разные категории уходят в разные банки, потому что банки принимают их на разных условиях.

currency

Валюта операции. Она сразу отсекает банки, которые эту валюту не принимают, и сужает выбор до пригодных.

Банк не ответил из-за технического сбоя, значит запрос уходит следующему банку группы в рамках той же попытки оплаты, а поле attempt в ответе растёт. Покупатель вводит данные один раз и ничего не повторяет.

Пример показывает принцип и состав признаков. Точные имена полей и форматы будут в документации.

Тестовая среда

Тестовый контур отделён от боевого. У него свой адрес, свои ключи и свои уведомления, деньги в нём не двигаются. Один и тот же код работает в обоих контурах, меняется только адрес и ключ.

Номер для оплатыПодтверждение кодомЧто произойдёт
4111 1111 1111 1111Не запрашиваетсяОплата проходит успешно
5555 5555 5555 4444Код 111111Оплата проходит после верного кода
4000 0000 0000 0119Код 000000Неверный код подтверждения
4000 0000 0000 9995Не запрашиваетсяНедостаточно средств
4000 0000 0000 0002Не запрашиваетсяОтказ банка без пояснения причины
4000 0000 0000 0069Не запрашиваетсяСрок действия истёк
4000 0000 0000 3220Код не приходитТаймаут и отмена по истечении времени

Оплата через систему быстрых платежей проверяется в том же контуре тестовым приложением банка. Там же проверяются отказ покупателя и возврат по завершённой операции.

Уведомления о статусе платежа

Платформа сама сообщает вашему серверу, чем закончилась операция. Опрашивать её в цикле не нужно.

Что настроить

Адрес уведомлений задаётся в кабинете проекта или полем в запросе. Адрес должен быть доступен снаружи, отвечать быстро и принимать повторные доставки того же события без двойного списания в вашей системе.

Что ответить

В ответ платформа ждёт код 200 и короткое тело. Любой другой код, обрыв связи или медленный ответ считаются недоставкой, и попытка повторяется.

Если не доставлено

Отправка повторяется по расписанию с растущим промежутком, а все попытки видны в кабинете. Пока уведомление не дошло, статус вернее забрать отдельным запросом по номеру платежа.

Ответ со статусом «успех» не всегда означает, что платёж завершён. Проверять надо и статус операции, и её тип.

Фискализация чеков

При расчёте покупателю нужен кассовый чек, а сведения о расчёте уходят в налоговую. Порядок задан Федеральным законом № 54-ФЗ. Для разработчика это не отдельная интеграция, а состав чека в том же запросе на оплату.

Своя касса

Касса уже есть, значит её данные вносятся в настройки проекта. При оплате сведения уходят в вашу кассу автоматически, чек формирует она.

Касса Paymatic

Своей кассы нет, значит чек формирует платформа. Покупать кассу и фискальный накопитель не потребуется, условия смотрите на странице облачной кассы.

Состав чека передаётся вместе с платежом. Наименования позиций, количество, цена, ставка НДС и признак расчёта. Что именно попадёт в чек, решает ваша сторона, платформа ничего не додумывает.

Готовые модули для магазинов

Модуль ставится в административную часть магазина, ключи проекта вводятся в его настройках. Писать код при этом не нужно. Мы готовим модули под движки, которые чаще всего встречаются в российских магазинах.

  • 1С-Битрикс
  • InSales
  • Tilda
  • WooCommerce
  • OpenCart
  • CS-Cart
  • PrestaShop
  • Webasyst
  • Magento
  • ModX

Вашего движка в списке нет, значит напишите нам. Мы ответим, что с ним сейчас, и подскажем, как подключиться запросами, пока модуля нет.

Поддержка интеграции

На подключении рядом с вашим разработчиком стоит инженер платформы. Разбор идёт по журналам вашего проекта, поэтому вопрос «почему вернулся этот ответ» закрывается номером платежа, а не пересказом.

Доступ к тестовой среде