Без единой строчки кода
Платёжная ссылка и готовый модуль для магазина. Всё настраивается в кабинете, сайт трогать не нужно.
Сайт подключается к Paymatic один раз. Дальше банки, способы оплаты и правила маршрутизации меняются в кабинете, и код сайта переписывать не нужно.
{
"amount": 249000,
"currency": "RUB",
"routing_group": "cards_ru",
"product_type": "digital_goods",
"order_id": "A_10473",
"return_url": "https://shop.example.com/done"
}
Выберите строку, которая описывает вашу задачу. Дальше страница ведёт только по ней.
Платёжная ссылка и готовый модуль для магазина. Всё настраивается в кабинете, сайт трогать не нужно.
Покупатель уходит на платёжную страницу и возвращается к вам с результатом. Так подключаются чаще всего.
Покупатель остаётся на вашем сайте, вид и порядок шагов вы задаёте сами. Нужна сертификация по стандарту безопасности платёжных данных.
То, за чем возвращаются во время работы, а не на старте.
Сроков мы не обещаем, они зависят от банка и от вашей стороны. Обещание здесь другое. Девять шагов, и ни одного скрытого.
Правила маршрутизации живут не в презентации, а в полях запроса. Вы передаёте признаки платежа, платформа сверяет их с правилами, которые вы задали в кабинете, и выбирает банк. При смене банка на стороне сайта не меняется ничего.
// признаки, по которым выбирается банк
{
"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"
}
// видно, куда ушёл запрос и по какому правилу
{
"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"
}
Группа маршрутизации, которую вы завели в кабинете. Внутри неё лежат банки, доли потока между ними и порядок запасных вариантов.
Тип товара. Разные категории уходят в разные банки, потому что банки принимают их на разных условиях.
Валюта операции. Она сразу отсекает банки, которые эту валюту не принимают, и сужает выбор до пригодных.
Банк не ответил из-за технического сбоя, значит запрос уходит следующему банку группы в рамках той же попытки оплаты, а поле 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-ФЗ. Для разработчика это не отдельная интеграция, а состав чека в том же запросе на оплату.
Касса уже есть, значит её данные вносятся в настройки проекта. При оплате сведения уходят в вашу кассу автоматически, чек формирует она.
Своей кассы нет, значит чек формирует платформа. Покупать кассу и фискальный накопитель не потребуется, условия смотрите на странице облачной кассы.
Состав чека передаётся вместе с платежом. Наименования позиций, количество, цена, ставка НДС и признак расчёта. Что именно попадёт в чек, решает ваша сторона, платформа ничего не додумывает.
Модуль ставится в административную часть магазина, ключи проекта вводятся в его настройках. Писать код при этом не нужно. Мы готовим модули под движки, которые чаще всего встречаются в российских магазинах.
Вашего движка в списке нет, значит напишите нам. Мы ответим, что с ним сейчас, и подскажем, как подключиться запросами, пока модуля нет.
На подключении рядом с вашим разработчиком стоит инженер платформы. Разбор идёт по журналам вашего проекта, поэтому вопрос «почему вернулся этот ответ» закрывается номером платежа, а не пересказом.
Доступ к тестовой среде