NAV Navbar

Введение

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

Что дальше:

  1. Подключите свое ПО к нашей демо-зоне
  2. Проведите несколько тестовых платежей
  3. Выводите свое ПО в боевой режим

Основные понятия

Мерчант - получатель платежа. Например, в схеме подключения “Оплата поездки на виртуальную карту Лайт” мерчантом будет выступать водитель.

Рекуррентный платеж - платеж, созданный по ранее сохраненным данным банковской карты.

Поставщик услуг (Принципал, ПУ, провайдер услуг) - юридическое лицо или индивидуальный предприниматель, получающие денежные средства Плательщика за реализуемые Поставщиком Услуги, а также органы государственной власти и местного самоуправления, бюджетные учреждения, получающие денежные средства Плательщика в рамках выполнения ими функций, установленных законодательством РФ.

Общество - юридическое лицо, действующее по поручению Поставщика, являющееся посредником между Поставщиком и конечным потребителем услуги (Плательщиком).

Банк - эмитент - банк, выпускающий в обращение (эмитирующий) денежные знаки или ценные бумаги и платёжно-расчётные документы (банковские карты, чековые книжки). В нашем случае, говоря простыми словами, это банк, имеющий доступ к денежным средствам на счете клиента.

Холд (Предзаморозка, Предавторизация средств) - это предварительная блокировка средств на счете карты банка-эмитента для последующего списания. Применима в схемах оплаты поездки такси - после заказа такси средства холдируются, а после успешного совершения поездки производится списание средств.

Интернет эквайринг - технология, позволяющая принимать к оплате банковские карты, виртуальные карты и электронные кошельки.

Агрегатор - компании, предоставляющие программное обеспечение Поставщикам Услуг. Фактически, интеграция происходит в программном обеспечении Агрегатора.

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

Процессинг - это деятельность по обработке информации, используемой при совершении платёжных операций. Такую деятельность осуществляют процессинговые центры.

ОП - отдел продаж

Процесс интеграции

Общие требования:

Тестовые параметры:

Тестовые карты

Вы можете проверить сценарий оплаты банковскими картами разных типов с разными результатами:

pan (номер карты) срок CVV ожидаемый результат RC Платёжная система Актуальная
5479 2700 0000 0000 03/22 123 Успех с 3ds 12345678 00 MASTER CARD Да
4111 1111 1111 1111 12/24 123 Успех с 3ds 12345678 00 VISA Да
2201 3820 0000 0013 12/24 123 Успех с 3ds 12345678 00 МИР Да
2201 3820 0000 0062 12/24 123 Успех с 3ds 12345678 00 МИР Да
2201 3820 0000 0039 12/24 123 Успех с 3ds 12345678 00 МИР Да
-Для получения RC=05 необходимо ввести неверный код cvc2.

Shop name - любой

shopToken - 1a4c0d33-010c-4365-9c65-4c7f9bb415d5

secKey - 6a7abaad-2147-4646-b91a-435b5d97527b

Тестовый код услуги для оплаты поездок:

Code serviceCode Тип услуги
17526 1000-13864-2 Зачисление на р/с без комиссии

Реквизиты для параметра properties по услуге 1000-13864-2:

Боевые параметры

Теперь, чтоб перейти в боевой режим, необходимо создать боевой магазин

Для этого авторизуемся в личном кабинете

Платеж с 3ds

Некоторые рекуррентные платежи невозможны без данной технологии. При этом будет сгенерировано исключение NeedPass3dsException (смотри код 2365 в разделе Разбор ошибок), которое содержит номер платежа regPayNum и securePageURL (URL - тот, на который необходимо перенаправить пользователя для прохождения 3ds методом GET)

Ислючение может быть получено на этапе создания рекуррента (описан в разделе "создание платежа"), а так же на этапе проверки статуса платежа (описан в разделе "Получение статуса платежа")

Параметр needRegCard

Используется только для рекуррентных платежей без параметра cardToken, необходим для привязки карты к пользователю после успешно оплаты

Данный парамер определяет необходимость принудительного 3ds для платежа

Задается при Создании рекуррентного платежа

Значения для данного параметра следующие:

Параметр enableSMSConfirm

Тэги для работы с 3ds в мобильном приложении

Фрагмент HTML разметки с блоком успеха



<div id="endpoint_result">
    <div class="success" id="endpoint_success">
        <img class="success__img" src="/site/img/svg/success.svg">
        <span class="success__title" th:text="#{text.paymentSuccess}">Успешная оплата</span>
        <span class="success__text"><span th:text="${modelResult.orderDescription}"></span></span>
    </div>
</div>


Фрагмент HTML разметки с блоком ошибки



<div th:case="*" id="endpoint_result">
    <div class="error" id="endpoint_error"><img class="error__img" src="/site/img/svg/error213.svg">
        <input id="error_code" type="hidden" th:value="${modelResult.resultCode}">
        <span class="error__title" th:text="#{errorUnknown.text.heading}" id="error_title">Ошибка проведения платежа</span>
        <span class="error__text" th:utext="#{errorUnknown.text.subtitle}" id="error_text">Обратитесь в нашу поддержку <a href="mailto:support@ckassa.ru" class="error__link" target="_blank">support@ckassa.ru</a></span>
    </div>
</div>


Общая логика

При работе с 3дс приложение загружает страницы в WebView. Каждая загруженная страница парсится в html документ с помощью JSOUP. Выполняется поиск идентификаторов, которые используются для того, чтобы можно было определить что загруженная страница - последняя, больше редиректов не будет и можно закрывать WebView.

Страница успеха

Содержит html тэг с идентификатором endpoint_result, внутри которого должен находиться тэг с идентификатором endpoint_success.

Страница ошибки

Содержит html тэг с идентификатором endpoint_result, внутри которого должен находиться тэг с идентификатором endpoint_error.

На основе содержимого этих тэгов создастся исключение, которое будет позже показано пользователю в виде AlertDialog

error_title - Заголовок ошибки. Отображается как заголовок диалога. Если error_title не будет найден, по умолчанию используется текст Ошибка проведения платежа

error_text - Детальное описание (причина) ошибки. Отображается как сообщение диалога. Если error_text не будет найден, используется текст Обратитесь в нашу поддержку

Параметр shopLogin

Пример тела запроса


{
    "login": "79029991515",
    "shopLogin": true,
    "serviceCode": "XXX-XXXXX-X",
    "amount": "1000",
    "comission": "40",
    "properties": [
        {
            "name": "ПОЗЫВНОЙ",
            "value": "12345"
        }
    ]
}

Пример тела ответа


{
    "sign": "SIGN",
    "userToken": "USER_TOKEN",
    "shopToken": "SHOP_TOKEN",
    "regPayNum": "REG_PAY_NUM",
    "payUrl": "ССЫЛКА НА ОПЛАТУ",
    "methodType": "GET",
    "payUrlImg": null

}

Данный метод служит для авторегестрации пользователя после создания платежа

Доступен для методов do/payment и do/payment-rezerv

Работает следующим образом:

  1. Пользователь зарегистрирован на одном из магазинов методом user/registration для этого обязательно необходимо добавлять параметр shopLogin со значением true
  2. Пользователь где-либо нажимает оплатить, при этом отправляется запрос на создание платежа с его логином и параметром shopLogin со значением true
  3. Пользователь при создании платежа и дальнейшней оплате привязывается к новому shopToken, получая уже другой userTokenuserToken

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

Параметр fiscalType

Значение данной опции определяет нужно ли отправлять фискальный чек. Возможные значения:

а) email - отправить фискальный чек на почту

б) none (по умолчанию) - фискальный чек не нужен

Если значение fiscalType - email, то добавляется следующий параметр userEmail - e-mail для отправки фискального чека

Параметр payType

Создан для того, чтоб указать тип оплаты в запросах. Возможные значения поля:

Параметр payTypeVisible

Устанавливает очередность и скрытие способов оплаты на платежной форме. Возможные значения :

Параметр orderBestBefore

Данным параметром можно передать время истечения жизни заказа (в секундах). Время, до которого нужно оплатить заказ.

Значение параметра - абсолютная дата UTC, в секундах (сформировать абсолютную дату). Например:

По умолчанию срок жизни заказа 72 часа

Параметр orderItems

Пример запроса на создание платежа с указанием пользовательской корзины


{
    "serviceCode": "100-5333-1",
    "amount": 4500,
    "comission": 5,
    "payType": "card",
    "userPhone": "79504609010",
    "fiscalType": "none",
    "properties": [
        {
            "name": "Л/СЧЕТ",
            "value": "9503006477"
        },
        {
            "name": "ФИО",
            "value": "Иванов Н П"
        },
        {
            "name": "АДРЕС",
            "value": "Ленина 10"
        },
        {
            "name": "МЕСЯЦ",
            "value": "05.2015"
        },
        {
            "name": "СУММА_ПЕНИ",
            "value": "10000"
        }
    ],
    "orderItems": [
        {
            "num": 1,
            "name": "name1",
            "quantity": 2,
            "price": 100,
            "tax": "vat0",
            "methodType": "advance",
            "subjectType": "job",
            "nomenclatureCode": "lottery"
        },
        {
            "num": 2,
            "name": "name2",
            "quantity": 5,
            "price": 50,
            "tax": "vat110",
            "methodType": "advance",
            "subjectType": "job",
            "nomenclatureCode": "lottery"
        }
    ]
}

Пример ответа


{
'regPayNum':'1234567890',
'methodType':'GET',
'payUrl':'https://autopays.ru/payment/#!search_payment',
}

orderItems - Описание предметов расчета (тег 1059 в фискальном чеке).

Параметр - public class OrderItems

Сумма товаров в корзине должна равняться сумме платежа

Структура данных:

"orderItems":[{"num":1,"name":"name1","quantity":2,"price":100,"tax":"vat0"},{"num":2,"name":"name2","quantity":5,"price":50,"tax":"vat110"},{...}]

Описание данных:

Параметр clientAuInfo

Пример заполнения параметра clientAuInfo


{
   "ipAddress": "xxx.xxx.xxx.xxx",
    "agentName": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:80.0) Gecko/20100101 Firefox/80.0",
    "authenticationInfo": "e2RldmljZS5icm93c2VyQWNjZXB0SGVhZGVyPXRleHQvaHRtbA0KZGV2aWNlLmJyb3dzZXJJUD05NC4xMzguMTQ5LjM0DQpicm93c2VySmF2YUVuYWJsZWQ6IGZhbHNlDQpicm93c2VyTGFuZ3VhZ2U6ICJydS1SVSINCmJyb3dzZXJDb2xvckRlcHRoOiAyNA0KYnJvd3NlclNjcmVlbkhlaWdodDogMTA4MA0KYnJvd3NlclNjcmVlbldpZHRoOiAxOTIwDQpicm93c2VyVFo6IC0zMDANCmJyb3dzZXJVc2VyQWdlbnQ6ICJNb3ppbGxhLzUuMCAoWDExOyBVYnVudHU7IExpbnV4IHg4Nl82NDsgcnY6ODAuMCkgR2Vja28vMjAxMDAxMDEgRmlyZWZveC84MC4wIn0="
}

Скрипт получения данных в браузере клиента


function getFingerprint() {
    return btoa(JSON.stringify({
        browserTZ: new Date().getTimezoneOffset(),
        browserColorDepth: window.screen.colorDepth,
        browserScreenHeight:  window.screen.height,
        browserScreenWidth: window.screen.width,
        browserLanguage: navigator.language,
        browserUserAgent: window.navigator.userAgent,
        browserJavaEnabled: window.navigator.javaEnabled()
    }));
}

В параметре clientAuInfo необходимо передавать данные для корректного прохождения 3ds v2.

Применимо только для методов рекуррентного платежа: Создание платежа, поездка, Создание платежа с бронированием суммы, поездка, Создание платежа, Лайт, Создание платежа с бронированием суммы, Лайт, Создание платежа, Лайт мерчант, Создание платежа с бронированием суммы, Лайт мерчант, Cоздание рекуррентного платежа

Для метода Анонимного платежа наша форма оплаты сама соберёт необходимые данные.

Описание данных:

Параметр orderNote

В параметре orderNote передаются дополнительные данные, которые будут отображаться на платёжной форме.

Доп. справочное поле для пользователя.

Применимо только для методов, когда используется форма для ввода данных карты: Создание платежа, анонимного платежа, Cоздание рекуррентного платежа с типом оплаты картой ("payType":"card") и без заполненного параметра cardToken

Описание:

В параметре также есть возможность передачи валюты. Для этого необходимо указать валюту в кодировке ISO 4217 (буквенной). На форме ввода данных карты валюта в кодировке ISO 4217 будет показа символьным эквивалентом. Передавать в параметр валюту необходимо в таком виде _RUB_ Список допустимых валют:

Буквенный код Цифровой код Валюта Разменная валюта Символ
RUB 643 российский рубль копейки (1⁄100)
KZT 398 тенге, Казахстан тиын(1⁄100)
USD 840 американский бакс цент (1⁄100) $
EUR 978 ойро евроцент (1⁄100)
GPB 826 фунт, Великобритания пе́нни (1⁄100) £
KGS 417 сом, Киргизия тыйын (1⁄100) с •
UZS 860 сум, узбекский тийин (1⁄100) So'm
AZN 944 азербайджанский манат гяпик (1⁄100)
GEL 981 лари, Грузия тетри (1⁄100)
TRY 949 турецкая лира куруш (1⁄100)
CNY 156 юань фынь (1⁄100) ¥
AMD 051 армянский драм лума (1⁄100) ֏

Статусы платежей

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

Cтатусы c неуспешным результатом (платеж не достиг состояния "оплачен"):

Получение статуса платежа

Пример запроса статуса платежа

{
  "regPayNum":"1310958041"
}

Пример ответа

{
  'errorCode':'1001',
  'provisionServices':'true',
  totalAmount':'100000',
  'serviceCode':'serviceCode',
  'providerName':'providerName',
  'state':'payed',
  'createdDate':'2012-10-06 03:02:01',
  'error':'error',
  'message':'message',
  'procDate':'2015-01-05 12:14:18'
}
{
"
"state":"holded",
"totalAmount":2575,
"createdDate":"2020-05-29 14:11:21",
"providerServCode":"1000-13864-3",
"providerName":"Тест ShopAPI",
"errorCode":null,
"error":null,
"message":null,
"provisionServices":false,
"procDate":null
}

Отправляется несколько попыток с нарастающим интервалом

Наш API позволяет отправлять повторные уведомления для одного платежа, в таких случаях ожидается успешный ответ

При оплате рекуррентом с обязательным вводом 3ds (раздел Рекуррент с 3ds ) в ответе будет получено исключение:NeedPass3dsException(смотри код 2365 в разделе Разбор ошибок)

Для прохождения 3ds проверки необходимо перенаправить пользователя по ссылке в параметре securePageURL методом GET

Параметры запроса

Обязательные Параметры ответа:

Необязательные параметры ответа:

Уведомление об оплате

Пример ответа

{
"regPayNum":"1310958041",
"property": {
    "IMEI": "86964005166061",
    "ЛИТР": "4"
    },
"rrn": "315659894693",
"irn": "f631e778-fs4d-dc19-sdc6-251e02666345",
"approvalCode": "123456789",
"cardPan": "411111*****1111",
"amount":"100000",
"state": "PAYED",
"result": {
    "code": "0",
    "message": "null",
    "details": "null"
    },
"created": "20-06-2023 17:56:36"
}


По умолчанию отправляются только успешные платежи

При неуспешном создании платежа уведомление не отправляется

Ckassa отправляет POST запросы с нарастающим интервалом

Ожидается ответ https - статусом 200

Также можно выбрать тип callback full3 для отправки дополнительных параметров описанных ниже (Обратите внимание, что при данном типе будет также отправляться callback при успешной регистрации карты).

Параметры ответа:

Параметр Обязательный Описание
regPayNum + Статус платежа. Подробнее тип String "^[0-9]{6,20}$";}
amount + Ссумма платежа в копейках тип String
state + Статус платежа. Подробнее
result + Результат Подробнее:
  • code - Код завершения
  • message - Текст завершения операции, отображаем пользователю
  • details - Детализация, для отладки
property/map - Список реквизитов, формат {"IMEI": "86964005166061", "ЛИТР": "4"}
  • При разных типах callback, название может быть property или map, точное название можно уточнить у техподдержки
rrn - Merchant bank’s Retrieval Reference Number (ISO-8583 Field 37) тип String
irn - Internal Reference Number тип String
approvalCode - Kод авторизации тип String
cardPan - Публичный номер карты, с которой совершалась оплата (первые 6 цифр, последние 4)
created - Время создания платежа по МСК Формат: dd-MM-yyyy HH:mm:ss тип String

Чек по 54ФЗ

Пример запроса


{
  "regPayNum":"1234567890"
}

Пример ответа


{
  "fiscalUrl":"https:\\ticket.ckassa.ru\jfnrei48jifmroggdfh4543her"
}

Процесс фискализации проходит в асинхронном режиме. Фискализация платежа может занимать от нескольких минут до часа

После отправки запроса вы получите ссылку на сервис ckassa. При переходе на данную ссылку, если платеж уже был фискализирован, проихойдет редирект клиента на сайт ФНС с фискальным чеком.

Если фискализация еще не была выполнена, то будет выведено сообщение: Ожидайте, скоро здесь появится фискальный чек. В таком случае запрашивать ссылк повторно не нужно, достаточно повторить переход через некоторое время.

Рекомендуемый алгоритм работы с методом:

Параметры запроса(все обязательные):

Параметры ответа(все обязательные):

Фискализация наличных

Пример запроса на фискализацию наличных

{
   "serviceCode":"15636-15727-1",
   "amount":"2500",
   "comission":"0",
   "payType":"fiscalCash",
   "properties":
    [
     { "name":"ТЕЛЕФОН",
       "value":"9555574499"},
     { "name":"ФИО",
       "value":"Тестов Тест Тестович"},
     { "name":"АДРЕС",
       "value":"Тестовый адрес"}
    ]
}
curl -X POST https://demo-api.ckassa.ru/api-shop/do/payment/anonymous --cert ./59-BS-TERM-Test_ShopApi-001.pem:e9shpkwgyc -H "Content-Type: application/json" -d
 '{
   "serviceCode":"15636-15727-1",
   "amount":"2500",
   "comission":"0",
   "payType":"fiscalCash",
   "properties":
    [
     {
       "name":"ТЕЛЕФОН",
       "value":"9555574499"
     },
     {
       "name":"ФИО",
       "value":"Тестов Тест Тестович"
     },
     {
       "name":"АДРЕС",
       "value":"Тестовый адрес"
     }
    ]

Пример ответа

{
  "regPayNum":"13894250926",
  "payUrl":"https://ckassa.ru/ticket/vy0RHMGco9IibfT7m4fKjKPTDonATcGie7fV6boo4KWuwTO_eokow13nfUjDeKkd",
  "methodType":"GET"
}
{
  "regPayNum":"13894250926",
  "payUrl":"https://ckassa.ru/ticket/vy0RHMGco9IibfT7m4fKjKPTDonATcGie7fV6boo4KWuwTO_eokow13nfUjDeKkd",
  "methodType":"GET"
}

Наше API позволяет не только провести платеж, но и создать информационный платеж чтобы зарегистрировать в ФНС принятые наличные

Для того, чтоб создать такой платеж укажите в параметре payType значение fiscalCash

Для тестирования механизма рекомендуем следующий алгоритм:

Проверка баланса на карте Лайт

Пример запроса


{
 "login":"79020000000",
}

С помощью данного метода можно проверить баланс у водителя на карте Лайт

Параметры запроса(все обязательные):

Параметры ответа(все обязательные):

Возврат платежа

Пример запроса


{
    "regPayNum": "13693892457",
    "note": "test",
    "refundAmount": "2400",
    "remainingAmount": "225"
    "shopToken": "SHOP_TOKEN"
}

С помощью данного метода можно можно отправлять заявки на возврат и частичный возврат. Метод доступен только для Магазин. Рекуррентный платёж или Магазин. Анонимный платеж.

Параметры запроса(все обязательные):

Параметры ответа(все обязательные):

Редирект

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

Пример:

Success url = http://acq.test.ru/success/

После совершения успешного платежа, номер которого 123456789, пользователь, после нажатия на кнопку "Вернуться в магазин", будет перенаправлен по ссылке http://acq.test.ru/success/?reg_pay_num=123456789

Заказ с оплатой на расчетный счет

В этом разделе мы рассмотрим поддерживаемые запросы для данного типа магазина, их назначение, параметры, а так же примеры использования.

Алгоритм работы

Пример создания объекта MainShop

только для библиотеки php
img_alg_rc

Регистрация карты

Пример запроса на регистрацию карты

{
"userToken":"USER_TOKEN",
"clientType":"web"
}

Пример ответа

{
'regPayNum':'1234567890',
'methodType':'GET',
'payUrl':'https://autopays.ru/payment/#!search_payment',
'userToken':'USER_TOKEN'	
"shopToken": "SHOP_TOKEN"
}

Во время регистрации карты будет списано до 5 рублей, после добавления карты деньги будут возвращены

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

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

В ответ на запрос приходит номер платежа, url регистрации и способ перехода.

Параметры запроса:

Параметр Обязательный Описание
clientType - тип клиента*
userToken + идентификатор пользователя
payType - Способ оплаты. Обязателен только для совершения рекуррентного платежа через SberPay** Подробнее о Функции payType

Параметры ответа (все параметры обязательные):

Регистрация пользователя

Пример запроса на регистрацию пользователя

{
"login":"Login",
"email":"Email",
"name":"Name",
"surName":"SurName",
"middleName":"MiddleName"
}

Пример ответа

{
"state":"active",
"login":"getLogin()",
"email":"getEmail()",
"name":"getName()",
"surName":"getSurName()",
"middleName":"getMiddleName()",
"userToken":"USER_TOKEN"
}

Параметры запроса:

Параметр Обязательный Описание
login + номер телефона с кодом, но без '+', например - 79020000000.
email - e-mail (на него отправляются чеки после оплаты)
name - имя
surName - фамилия
middleName - отчество

Параметры ответа:

Параметр Обязательный Описание
login + номер телефона с кодом, но без '+', например - 79020000000.
email - e-mail (на него отправляются чеки после оплаты)
name - имя
surName - фамилия
middleName - отчество
state + статус. Более подробно - Статус пользователя
userToken + идентификатор пользователя

Получение списка карт

Пример запроса списка карт

{
"userToken":"USER_TOKEN"
}

Пример ответа

{
"userToken":"USER_TOKEN",
"cards":[{"cardMask":"546949******9929","cardToken":"77a3adeb-1f50-400a-88a9-7127dc9ea9f3","cardType":"master_card","state":"active"}]
"shopToken":"SHOP_TOKEN"
}

Для того что бы карта появилась в списке нужно произвести регистрацию карты см. пункт Регистрация карты

Параметры запроса (все параметры обязательные):

Параметры ответа (все параметры обязательные):

Деактивация/удаление карты

Пример запроса удаления карты

{
"userToken":"USER_TOKEN",
"cardToken":"CARD_TOKEN"
}

Пример ответа

{
"resultState":"success",
"desc":"descSuccess",
"userToken":"USER_TOKEN"
}

После исполнения запроса состояние карты становится inactive и карта будет недоступна для оплаты (необходимо будет провести повторную привязку карты, см пункт Регистрация карты)

Параметры запроса (все параметры обязательные):

Параметры ответа (все параметры обязательные):

Уведомление о регистрации карты

Пример запроса создания уведомления

{
"userToken":"USER_TOKEN",
"cardMask":"546949******9929",
"cardToken":"77a3adeb-1f50-400a-88a9-7127dc9ea9f3",
"cardType":"master_card"
}

Параметры запроса:

Параметр Обязательный Описание
userToken + идентификатор пользователя
cardToken + токен карты
cardMask + маскированый номер карты
cardType + тип карты. Подробнее см. п. Получение списка карт

В ответ ожидается любой ответ со статусом 200

Создание платежа

Пример запроса создания платежа

{
    "serviceCode": "111-13658-1",
    "userToken": "a2ea360d-0af3-409f-87d0-4ea69ee077e6",
    "amount": "12000",
    "comission": "480",
    "cardToken": "00d7ec3b-403f-416b-80d9-83461f684701",
    "shopLogin": true,
    "enableSMSConfirm": "null",
    "payType": "null",
    "clientType": "null",
    "userPhone": "null",
    "userEmail": "null",
    "fiscalType": "null",
    "holdTtl": "null",
    "orderBestBefore": "1575362617720",
    "properties": [
        {
            "name": "ПОЗЫВНОЙ",
            "value": "7757513"
        },
        {
            "name": "ДОП_ИНФ",
            "value": "(1) предв 10 Сентября 01:35 Секрет магазин.. (2) Октябрьская 20. длина маршрута:4.0 км. "
        }
    ],
    "orderItems": [
        {
            "num": 1,
            "name": "name1",
            "quantity": 2,
            "price": 100,
            "tax": "vat0"
        },
        {
            "num": 2,
            "name": "name2",
            "quantity": 5,
            "price": 50,
            "tax": "vat110"
        }
    ]
}

Пример ответа

{
'regPayNum':'1234567890',
'methodType':'GET',
'payUrl':'https://autopays.ru/payment/#!search_payment',
'userToken':'USER_TOKEN'
 "shopToken": "SHOP_TOKEN",
}

В ответ приходит номер платежа, url для оплаты и способ перехода.

При рекурентном платеже - url со ссылкой на чек.

Параметры запроса:

Параметр Обязательный Описание
serviceCode + код провайдера
userToken + идентификатор пользователя
amount + сумма платежа в копейках, которая идет на счет пользователю
comission + комиссия платежа в копейках (при отсутствии комиссии передается 0)
needRegCard - Включает принудительный 3ds, более подробно: needRegCard
cardToken - идентификатор карты (для рекуррентного платежа), см. пункт Получение списка карт
gpayToken - Токен при оплате через Google Pay. Более подробно в разделе Google Pay
applePayToken - токен при оплате через Apple pay. Подробнее в разделе Apple Pay
mirPayToken - токен при оплате через Mir Pay. Подробнее в разделе Mir Pay
enableSMSConfirm - более подробно: EnableSMScnfirm
payType - способ оплаты подробнее в п. Параметр payType
payTypeVisible - используется если необходимо скрыть или скорректировать очередность способов оплаты
clientType - более подробно в п. Создание анонимного платежа
userEmail * e-mail для фискального чека, подробнее: Параметр fiscalType
fiscalType * отправлять ли фискальный чек. Подробнее: Параметр fiscalType
orderBestBefore - Время истечения срока жизни заказа в секундах. Подробнее
holdTtl - время заморозки средств (в секундах). Минимум 10 минут, максимум 4 дня. Если услуга не будет подтверждена, произойдет автоматический возврат средств на карту клиента.
successUrl - динамический url возврата клиента после успешной оплаты***
failUrl - динамический url возврата клиента после неуспешной оплаты***
cbUrl - динамический url для отправки уведомлений, более подробно: Уведомление об оплате
properties + массив реквизитов. Более подробно в п. Создание анонимного платежа
orderItems - Корзина для фискализации. Подробнее
clientAuInfo + Параметры браузера для прохождения 3ds v2. Подробнее
shopLogin - Для авторегистрации пользователя, после создания платежа Подробнее

Параметры ответа (все параметры обязательные):

Создание платежа с бронированием суммы

Пример запроса создания платежа

{
    "serviceCode": "111-13658-1",
    "userToken": "a2ea360d-0af3-409f-87d0-4ea69ee077e6",
    "amount": "12000",
    "comission": "480",
    "cardToken": "00d7ec3b-403f-416b-80d9-83461f684701",
    "shopLogin": true,
    "enableSMSConfirm": "null",
    "payType": "null",
    "clientType": "null",
    "userPhone": "null",
    "userEmail": "null",
    "fiscalType": "null",
    "holdTtl": "3600",
    "orderBestBefore": "1575362617720",
    "properties": [
        {
            "name": "ПОЗЫВНОЙ",
            "value": "7757513"
        },
        {
            "name": "ДОП_ИНФ",
            "value": "(1) предв 10 Сентября 01:35 Секрет магазин.. (2) Октябрьская 20. длина маршрута:4.0 км. "
        }
    ],
    "orderItems": [
        {
            "num": 1,
            "name": "name1",
            "quantity": 2,
            "price": 100,
            "tax": "vat0"
        },
        {
            "num": 2,
            "name": "name2",
            "quantity": 5,
            "price": 50,
            "tax": "vat110"
        }
    ]
}

Пример ответа

{
'regPayNum':'1234567890',
'methodType':'GET',
'payUrl':'https://autopays.ru/payment/#!search_payment',
'userToken':'USER_TOKEN'
 "shopToken": "SHOP_TOKEN",
}

В ответ приходит номер платежа, url для оплаты и способ перехода.

При рекурентном платеже - url со ссылкой на чек.

Для оплаты поездок рекомендуем указывать holdTtl не менее 30 минут (1800)

Параметры запроса:

Параметр Обязательный Описание
serviceCode + код провайдера
userToken + идентификатор пользователя
amount + сумма платежа в копейках, которая идет на счет пользователю
comission + комиссия платежа в копейках (при отсутствии комиссии передается 0)
needRegCard - Включает принудительный 3ds, более подробно: needRegCard
cardToken - идентификатор карты (для рекуррентного платежа), см. пункт Получение списка карт
gpayToken - Токен при оплате через Google Pay. Более подробно в разделе Google Pay
applePayToken - токен при оплате через Apple pay. Подробнее в разделе Apple Pay
mirPayToken - токен при оплате через Mir Pay. Подробнее в разделе Mir Pay
enableSMSConfirm - более подробно: EnableSMScnfirm
payType - способ оплаты подробнее в п. Параметр payType
payTypeVisible - используется если необходимо скрыть или скорректировать очередность способов оплаты
clientType - более подробно в п. Создание анонимного платежа
userEmail * e-mail для фискального чека, подробнее: Параметр fiscalType
fiscalType * отправлять ли фискальный чек. Подробнее: Параметр fiscalType
holdTtl - время заморозки средств (в секундах). Минимум 10 минут, максимум 4 дня. Если услуга не будет подтверждена, произойдет автоматический возврат средств на карту клиента.
successUrl - динамический url возврата клиента после успешной оплаты***
failUrl - динамический url возврата клиента после неуспешной оплаты***
cbUrl - динамический url для отправки уведомлений, более подробно: Уведомление об оплате
orderBestBefore - Время истечения срока жизни заказа в секундах. Подробнее
properties + массив реквизитов. Более подробно в п. Создание анонимного платежа
orderItems - Корзина для фискализации. Подробнее
clientAuInfo + Параметры браузера для прохождения 3ds v2. Подробнее
shopLogin - Для авторегистрации пользователя, после создания платежа Подробнее

Параметры ответа (все параметры обязательные):

Обновление получателя забронированных средств

Пример запроса

{
'regPayNum': '501063',
'value': '15'
}

Пример ответа


{
'resultState': 'success',
'desc': 'Success update persAcc ПОЗЫВНОЙ=15 for regPayNum:501064'
}

Метод сработает только если был использован метод Создание платежа с бронированием суммы

Для использования метода платеж должен быть в статусе holded. Рекомендуем к использованию метод Получение статуса платежа

Изменить получателя можно до того, как вы используете метод Подтверждение оказания услуги

Метод можно вызвать несколько раз

Чтобы обновить получателя денежных средств необходимо указать новый главный реквизит получателя (обычно этот реквизит называют 'лицевой счет'. Указывается в массиве реквизитов properties)

Рекомендуемый алгоритм использования:

1. Выполнить Создание платежа с бронированием суммы, указав в properties дефолтный лицевой счет. Он не обязательно должен быть рабочим, главное, чтобы он проходил под критерии проверки реквизита (размер, с чего начинается и т.д.)

2. После назначения машины выполнить обновление получателя денежных средств

3. По завершению поездки подтвердить заморозку

Параметры запроса:

Параметр Обязательный Описание
regPayNum + номер платежа
value + новое значение главного реквизита

Параметры ответа:

Параметр Обязательный Описание
resultState + результат (success / fail)
desc - пояснение

Подтверждение оказания услуги (заморозки)

Пример подтверждения оказания услуги

{
  "regPayNum":"1234567890",
  "orderId":"12345"
}

Пример ответа

{
  "resultState":"success",
  "desc":"Success update provision services to refund. RegPayNum:1234567890"
  "shopToken": "SHOP_TOKEN",
}

Необходимость подтверждения оказания услуги определяется настройками терминала с нашей стороны по вашему запросу

Подтвердить можно только платеж в статусе payed. Узнать статус платежа можно по запросу Получение статуса платежа

После получения подтверждения оказания услуги ckassa переводит денежные средства на кошелек мерчанта. Это значит, что услуга считается выполненной и оплаченной

В случае ошибки достаточно повторить запрос

Параметры запроса:

Параметр Обязательный Описание
regPayNum + номер платежа
orderId + уникальный номер заказа на стороне поставщика услуг
amount - Сумма платежа в копейках. Параметр только для платежей с бронированием суммы. Если передана сумма, менньшая чем в заморозке, то будет выполнен частичный возврат. По умолчанию подтверждается полная сумма

Параметры ответа:

Параметр Обязательный Описание
resultState + результат (success / fail)
desc - пояснение
ShopToken - Идентификатор магазина

Отмена замороженных средств

Пример отмены замороженных средств

{
  "regPayNum":"1234567890",
  "orderId":"12345"
}

Пример ответа

{
  "resultState":"success",
  "desc":"Success update provision services to refund. RegPayNum:1234567890"
   "shopToken": "SHOP_TOKEN",	

}

Отменить заморозку и вернуть деньги на карту клиента можно только если платеж находится в статусе hold (в котором заморозка денежных среств на карте клиента осуществлена, но еще не подтверждено оказание услуги)

После отмены заморозки ckassa откатывает деньги обратно на карту клиента

В случае ошибки достаточно повторить запрос

Параметры запроса (все обязательные):

Параметры ответа (все обязательные):

Заказ с оплатой на виртуальную карту Лайт

В этом разделе мы рассмотрим поддерживаемые запросы, их назначение, параметры, а так же примеры их использования.

Алгоритм работы

Блок-схемы проведения процессов:

Payment-lite

Lite-hold

Lite-reserv

Регистрация пользователя

Пример запроса на регистрацию пользователя

{
"login":"Login",
"email":"Email",
"name":"Name",
"surName":"SurName",
"middleName":"MiddleName"
}

Пример ответа

{
"state":"active",
"login":"getLogin()",
"email":"getEmail()",
"name":"getName()",
"surName":"getSurName()",
"middleName":"getMiddleName()",
"userToken":"USER_TOKEN"
}

Параметры запроса:

Параметр Обязательный Описание
login + номер телефона с кодом, но без '+', например - 79020000000.
email - e-mail (на него отправляются чеки после оплаты)
name - имя
surName - фамилия
middleName - отчество

Параметры ответа:

Параметр Обязательный Описание
login + номер телефона с кодом, но без '+', например - 79020000000.
email - e-mail (на него отправляются чеки после оплаты)
name - имя
surName - фамилия
middleName - отчество
state + статус. Более подробно - Статус пользователя
userToken + идентификатор пользователя

Регистрация карты плательщика

Пример запроса на регистрацию карты

{
"userToken":"USER_TOKEN",
"clientType":"web"
}

Пример ответа

{
'regPayNum':'1234567890',
'methodType':'GET',
'payUrl':'https://autopays.ru/payment/#!search_payment',
'userToken':'USER_TOKEN'
"shopToken": "SHOP_TOKEN"
}

Во время регистрации карты будет списано до 5 рублей, после добавления карты деньги будут возвращены

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

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

В ответ на запрос приходит номер платежа, url регистрации и способ перехода.

Параметры запроса:

Параметр Обязательный Описание
clientType - тип клиента*
userToken + идентификатор пользователя

Параметры ответа (все параметры обязательные):

Получение списка карт

Пример запроса списка карт

{
"userToken":"USER_TOKEN"
}

Пример ответа

{
"userToken":"USER_TOKEN",
"cards":[{"cardMask":"546949******9929","cardToken":"77a3adeb-1f50-400a-88a9-7127dc9ea9f3","cardType":"master_card","state":"active"}]
"shopToken":"SHOP_TOKEN"
}

Для того что бы карта появилась в списке нужно произвести регистрацию карты см. пункт Регистрация карты

Параметры запроса (все параметры обязательные):

Параметры ответа (все параметры обязательные):

Деактивация/удаление карты

Пример запроса удаления карты

{
"userToken":"USER_TOKEN",
"cardToken":"CARD_TOKEN"
}

Пример ответа

{
"resultState":"success",
"desc":"descSuccess",
"userToken":"USER_TOKEN"
}

После исполнения запроса состояние карты становится inactive и карта будет недоступна для оплаты (необходимо будет провести повторную привязку карты, см пункт Регистрация карты)

Параметры запроса (все параметры обязательные):

Параметры ответа (все параметры обязательные):

Уведомление о регистрации карты

Пример запроса создания уведомления

{
"userToken":"USER_TOKEN",
"cardMask":"546949******9929",
"cardToken":"77a3adeb-1f50-400a-88a9-7127dc9ea9f3",
"cardType":"master_card"
}

Параметры запроса:

Параметр Обязательный Описание
userToken + идентификатор пользователя
cardToken + токен карты
cardMask + маскированый номер карты
cardType + тип карты. Подробнее см. п. Получение списка карт

В ответ ожидается любой ответ со статусом 200

Проверка возможности оплаты p2p

Пример запроса регистрации мерчанта


{
 "login":"79020000000",
 "shopToken":"SHOP_TOKEN"
}

Пример ответа


{
  "enable":"true",
  "incomeTo":
   [
    {
      "enable":"false",
      "incomeTo":"WALLET",
      "desc":"Временно недоступен"
    },
    {
      "enable":"true",
      "incomeTo":"CARD_CUB_LITE"
    }
  ]
}

Проверка возможности оплаты на карту КУБ Лайт

Если проверка для карты КУБ Лайт прошла успешно, вызовите метод Создания платежа

При Создании платежа с бронированием суммы нужно проверять конечного получателя (если для него опалата не доступна - деньги будут возвращены клиенту)

Параметры запроса:

Параметр Обязательный Описание
login

+

номер телефона с кодом, но без '+'. Например: 79020000000

Параметры ответа:

Параметр Обязательный Описание
enable + true/false возможно или нет выполнить платеж
incomeToList + IncomeTo. список, расшифровка по иструментам зачисления
desc + пояснение

Параметры передаваемые в IncomeTo:

enable - true/false

incomeTo - доступные инструменты (куда пойдет зачисление денег)

Значения

Создание платежа

Пример запроса создания платежа

{
    "serviceCode": "111-13658-1",
    "userToken": "a2ea360d-0af3-409f-87d0-4ea69ee077e6",
    "amount": "12000",
    "comission": "480",
    "cardToken": "00d7ec3b-403f-416b-80d9-83461f684701",
    "shopLogin": true,
    "enableSMSConfirm": "null",
    "payType": "null",
    "clientType": "null",
    "userPhone": "null",
    "userEmail": "null",
    "fiscalType": "null",
    "holdTtl": "null",
    "orderBestBefore": "1575362617720",
    "properties": [
        {
            "name": "ПОЗЫВНОЙ",
            "value": "7757513"
        },
        {
            "name": "ДОП_ИНФ",
            "value": "(1) предв 10 Сентября 01:35 Секрет магазин.. (2) Октябрьская 20. длина маршрута:4.0 км. "
        }
    ],
    "orderItems": [
        {
            "num": 1,
            "name": "name1",
            "quantity": 2,
            "price": 100,
            "tax": "vat0"
        },
        {
            "num": 2,
            "name": "name2",
            "quantity": 5,
            "price": 50,
            "tax": "vat110"
        }
    ]
}

Пример ответа

{
'regPayNum':'1234567890',
'methodType':'GET',
'payUrl':'https://autopays.ru/payment/#!search_payment',
'userToken':'USER_TOKEN'
 "shopToken": "SHOP_TOKEN"
}

В ответ приходит номер платежа, url для оплаты и способ перехода.

При рекурентном платеже - url со ссылкой на чек.

Параметры запроса:

Параметр Обязательный Описание
serviceCode + код провайдера
userToken + идентификатор пользователя
amount + сумма платежа в копейках, которая идет на счет пользователю
comission + комиссия платежа в копейках (при отсутствии комиссии передается 0)
needRegCard - Включает принудительный 3ds, более подробно: needRegCard
cardToken - идентификатор карты (для рекуррентного платежа), см. пункт Получение списка карт
gpayToken - Токен при оплате через Google Pay. Более подробно в разделе Google Pay
applePayToken - токен при оплате через Apple pay. Подробнее в разделе Apple Pay
mirPayToken - токен при оплате через Mir Pay. Подробнее в разделе Mir Pay
enableSMSConfirm - более подробно: EnableSMScnfirm
payType - способ оплаты подробнее в п. Параметр payType
clientType - более подробно в п. Создание анонимного платежа
userEmail * e-mail для фискального чека, подробнее: Параметр fiscalType
fiscalType * отправлять ли фискальный чек. Подробнее: Параметр fiscalType
orderBestBefore - Время истечения срока жизни заказа в секундах. Подробнее
holdTtl - время заморозки средств (в секундах). Минимум 10 минут, максимум 4 дня. Если услуга не будет подтверждена, произойдет автоматический возврат средств на карту клиента.
successUrl - динамический url возврата клиента после успешной оплаты***
failUrl - динамический url возврата клиента после неуспешной оплаты***
cbUrl - динамический url для отправки уведомлений, более подробно: Уведомление об оплате
properties + массив реквизитов.
orderItems - Корзина для фискализации. Подробнее
clientAuInfo - Параметры браузера для прохождения 3ds v2. Подробнее
shopLogin - Для авторегистрации пользователя, после создания платежа Подробнее

Параметры ответа (все параметры обязательные):

Создание платежа с бронированием суммы

Пример запроса создания платежа

{
    "serviceCode": "111-13658-1",
    "userToken": "a2ea360d-0af3-409f-87d0-4ea69ee077e6",
    "amount": "12000",
    "comission": "480",
    "cardToken": "00d7ec3b-403f-416b-80d9-83461f684701",
    "shopLogin": true,
    "enableSMSConfirm": "null",
    "payType": "null",
    "clientType": "null",
    "userPhone": "null",
    "userEmail": "null",
    "fiscalType": "null",
    "holdTtl": "3600",
    "orderBestBefore": "1575362617720",
    "properties": [
        {
            "name": "ПОЗЫВНОЙ",
            "value": "7757513"
        },
        {
            "name": "ДОП_ИНФ",
            "value": "(1) предв 10 Сентября 01:35 Секрет магазин.. (2) Октябрьская 20. длина маршрута:4.0 км. "
        }
    ],
    "orderItems": [
        {
            "num": 1,
            "name": "name1",
            "quantity": 2,
            "price": 100,
            "tax": "vat0"
        },
        {
            "num": 2,
            "name": "name2",
            "quantity": 5,
            "price": 50,
            "tax": "vat110"
        }
    ]
}

Пример ответа

{
'regPayNum':'1234567890',
'methodType':'GET',
'payUrl':'https://autopays.ru/payment/#!search_payment',
'userToken':'USER_TOKEN'
 "shopToken": "SHOP_TOKEN"
}

В ответ приходит номер платежа, url для оплаты и способ перехода.

При рекурентном платеже - url со ссылкой на чек.

Для оплаты поездок рекомендуем указывать holdTtl не менее 30 минут (1800)

Параметры запроса:

Параметр Обязательный Описание
serviceCode + код провайдера
userToken + идентификатор пользователя
amount + сумма платежа в копейках, которая идет на счет пользователю
comission + комиссия платежа в копейках (при отсутствии комиссии передается 0)
needRegCard - Включает принудительный 3ds, более подробно: needRegCard
cardToken - идентификатор карты (для рекуррентного платежа), см. пункт Получение списка карт
gpayToken - Токен при оплате через Google Pay. Более подробно в разделе Google Pay
applePayToken - токен при оплате через Apple pay. Подробнее в разделе Apple Pay
mirPayToken - токен при оплате через Mir Pay. Подробнее в разделе Mir Pay
enableSMSConfirm - более подробно: EnableSMScnfirm
payType - способ оплаты подробнее в п. Параметр payType
payTypeVisible - используется если необходимо скрыть или скорректировать очередность способов оплаты
clientType - более подробно в п. Создание анонимного платежа
userEmail * e-mail для фискального чека, подробнее: Параметр fiscalType
fiscalType * отправлять ли фискальный чек. Подробнее: Параметр fiscalType
holdTtl - время заморозки средств (в секундах). Минимум 10 минут, максимум 4 дня. Если услуга не будет подтверждена, произойдет автоматический возврат средств на карту клиента.
successUrl - динамический url возврата клиента после успешной оплаты***
failUrl - динамический url возврата клиента после неуспешной оплаты***
cbUrl - динамический url для отправки уведомлений, более подробно: Уведомление об оплате
orderBestBefore - Время истечения срока жизни заказа в секундах. Подробнее
properties + массив реквизитов. Более подробно в п. Создание анонимного платежа
orderItems - Корзина для фискализации. Подробнее
clientAuInfo - Параметры браузера для прохождения 3ds v2. Подробнее
shopLogin - Для авторегистрации пользователя, после создания платежа Подробнее

Параметры ответа (все параметры обязательные):

Обновление получателя забронированных средств

Пример запроса

{
'regPayNum': '501063',
'value': '79021639435'
}

Пример ответа


{
'resultState': 'success',
'desc': 'Success update persAcc ТЕЛЕФОН=79021639435 for regPayNum:501064'
}

Метод сработает только если был использован метод Создание платежа с бронированием суммы

Для использования метода платеж должен быть в статусе holded. Рекомендуем к использованию метод Получение статуса платежа

Изменить получателя можно до того, как вы используете метод Подтверждение оказания услуги

Метод можно вызвать несколько раз

Чтобы обновить получателя денежных средств необходимо указать новый главный реквизит получателя (обычно этот реквизит называют 'лицевой счет'. Указывается в массиве реквизитов properties)

Рекомендуемый алгоритм использования:

1. Выполнить Создание платежа с бронированием суммы, указав в properties дефолтный лицевой счет. Он не обязательно должен быть рабочим, главное, чтобы он проходил под критерии проверки реквизита (размер, с чего начинается и т.д.)

2. После назначения машины выполнить обновление получателя денежных средств

3. По завершению поездки подтвердить заморозку

Параметры запроса:

Параметр Обязательный Описание
regPayNum + номер платежа
value + новое значение номера телефона водителя

Параметры ответа:

Параметр Обязательный Описание
resultState + результат (success / fail)
desc - пояснение

Подтверждение оказания услуги (заморозки)

Пример подтверждения оказания услуги

{
  "regPayNum":"1234567890",
  "orderId":"12345"
}

Пример ответа

{
  "resultState":"success",
  "desc":"Success update provision services to refund. RegPayNum:1234567890"
  "shopToken": "SHOP_TOKEN",
}

Необходимость подтверждения оказания услуги определяется настройками терминала с нашей стороны по вашему запросу

Подтвердить можно только платеж в статусе payed. Узнать статус платежа можно по запросу Получение статуса платежа

После получения подтверждения оказания услуги ckassa переводит денежные средства на кошелек мерчанта. Это значит, что услуга считается выполненной и оплаченной

В случае ошибки достаточно повторить запрос

Параметры запроса:

Параметр Обязательный Описание
regPayNum + номер платежа
orderId + уникальный номер заказа на стороне поставщика услуг
amount - Сумма платежа в копейках. Параметр только для платежей с бронированием суммы. Если передана сумма, менньшая чем в заморозке, то будет выполнен частичный возврат. По умолчанию подтверждается полная сумма

Параметры ответа:

Параметр Обязательный Описание
resultState + результат (success / fail)
desc - пояснение
ShopToken - Идентификатор магазина

Отмена замороженных средств

Пример отмены замороженных средств

{
  "regPayNum":"1234567890",
  "orderId":"12345"
}

Пример ответа

{
  "resultState":"success",
  "desc":"Success update provision services to refund. RegPayNum:1234567890"
  "shopToken": "SHOP_TOKEN",
}

Отменить заморозку и вернуть деньги на карту клиента можно только если платеж находится в статусе hold (в котором заморозка денежных среств на карте клиента осуществлена, но еще не подтверждено оказание услуги)

После отмены заморозки ckassa откатывает деньги обратно на карту клиента

В случае ошибки достаточно повторить запрос

Параметры запроса (все обязательные):

Параметры ответа (все обязательные):

Заказ с оплатой на виртуальную карту Лайт на основе методов api-merchant

В этом разделе мы рассмотрим поддерживаемые запросы, их назначение, параметры, а так же примеры их использования.

Алгоритм работы

Блок-схемы проведения процессов:

CrMerch

PaymentMerch

ReserveMerch

Регистрация мерчанта

Параметры запроса:

Параметр Обязательный Описание
phone

+

номер телефона с кодом, но без '+'. Например: 79020000000
email - e-mail
name - имя
surName - фамилия
middleName - отчество
callName - позывной
region - регион, либо город мерчанта
docList - список документов (используется для идентификации)

Если используется параметр docList, необходимо указать номера удостоверяющего документа (либо нескольких документов) в формате:

type - тип документа

Параметры ответа:

Параметр Обязательный Описание
merchantToken + идентификатор мерчанта
state + статус
phone + номер телефона

Возможные значения поля state:

Статус мерчанта

Если мерчант не зарегистрирован, то будет сгенерировано исключение MerchantNotRegisteredForShop (код 2709 в разделе Разбор ошибок)

Параметры запроса (все параметры обязательные):

Проверка возможности оплаты p2p

Пример запроса регистрации мерчанта


{
 "merchantToken": "0785de5b-f647-417e-b1ca-5f184e493545",
 "shopToken":"SHOP_TOKEN"
}

Пример ответа


{
  "enable":"true",
  "incomeTo":
   [
    {
      "enable":"false",
      "incomeTo":"WALLET",
      "desc":"Временно недоступен"
    },
    {
      "enable":"true",
      "incomeTo":"CARD_CUB_LITE"
    }
  ]
}

Проверка возможности оплаты на карту КУБ Лайт

Если проверка для карты КУБ Лайт прошла успешно, вызовите метод Создания платежа

При Создании платежа с бронированием суммы нужно проверять конечного получателя (если для него опалата не доступна - деньги будут возвращены клиенту)

Параметры запроса:

Параметр Обязательный Описание
merchantToken

+

идентификатор мерчанта

Параметры ответа:

Параметр Обязательный Описание
enable + true/false возможно или нет выполнить платеж
incomeToList + IncomeTo. список, расшифровка по иструментам зачисления
desc + пояснение

Параметры передаваемые в IncomeTo:

enable - true/false

incomeTo - доступные инструменты (куда пойдет зачисление денег)

Значения

Создание платежа с зачислением на карту Лайт

В ответ на данный запрос приходит номер платежа, URL со ссылкой на чек и способ перехода

Параметр Обязательный Описание
serviceCode + код провайдера
amount + сумма платежа в копейках, которая идет на счет пользователю. Должна быть минимум 1 рубль (значение - 100)
comission + комиссия платежа в копейках (при отсутствии комиссии передается 0)
orderId + уникальный номер заказа на стороне ПО заказчика (вас)
description + Информация о поездке в формате: "[тип заказа]","Заказ:"[номер заказа]"."[идентификатор города]":"[адрес от - до]"
userToken + идентификатор пользователя
cardToken + идентификатор карты
gpayToken - Токен при оплате через Google Pay. Более подробно в разделе Google Pay
applePayToken - Токен при оплате через Apple Pay. Подробнее в разделе Apple Pay
mirPayToken - токен при оплате через Mir Pay. Подробнее в разделе Mir Pay
enableSMSConfirm - см. раздел Параметр EnableSMScnfirm
merchantToken + идентификатор мерчанта
callName - позывной мерчанта (используется для дополнительной идентификации)
extraPhone - дополнительный телефон мерчанта (используется для дополнительной идентификации)
holdTtl - время заморозки средств (в секундах). Минимум 10 минут, максимум 4 дня. Если услуга не будет подтверждена, произойдет автоматический возврат средств на карту клиента.
successUrl - динамический url возврата клиента после успешной оплаты***
failUrl - динамический url возврата клиента после неуспешной оплаты***
cbUrl - динамический url для отправки уведомлений, более подробно: Уведомление об оплате
payType - Тип оплаты
fiscalType - нужно ли отправлять фискальный чек. Cмотри раздел Функция fiscalType
shopLogin - Для авторегистрации пользователя, после создания платежа Подробнее

Параметры ответа:

Параметр Обязательный Описание
userToken + идентификатор пользователя
regPayNum + номер платежа
payUrl + url на страницу с чеком
methodType + метод перехода по url для просмотра чека (GET/POST)
merchantToken + идентификатор мерчанта

Бронирование суммы

Этот запрос бронирует сумму на карте вашего клиента без установки конечного получателя. Удобно использовать, когда вы хотите исключить риски, связаные с тем, что заказ не может быть оплачен по причине недостатка средств на счете клиента и т.п.

Для того, чтобы платеж был проведен, необходимо задать получателя (мерчанта) и подтвердить оказание услуги.

В ответ на данный запрос приходит информация с номером платежа, url со ссылкой на чек и способ перехода (GET/POST)

Параметры запроса:

Параметр Обязательный Описание
serviceCode + код провайдера
amount + сумма платежа в копейках, которая идет на счет пользователю
comission + комиссия платежа в копейках (при отсутствии комиссии передается 0)
orderId + уникальный номер заказа на стороне магазина
description + Информация о поездке в формате: "[тип заказа]","Заказ:"[номер заказа]"."[идентификатор города]":"[адрес от - до]"
userToken + идентификатор пользователя
cardToken - идентификатор карты
gpayToken - токен при оплате через Google pay. Подробнее в разделе Google Pay
applePayToken - токен при оплате через Apple pay. Подробнее в разделе Apple Pay
mirPayToken - токен при оплате через Mir Pay. Подробнее в разделе Mir Pay
enableSMSConfirm - смотри Параметр EnableSMScnfirm
holdTtl - Время в секундах от исполнения заморозки. Минимум 10 минут, максимум 4 дня, по умолчанию 30 минут. Если услуга не будет подтверждена в заданный период времени, автоматически произойдет возврат средств на карту клиента.
successUrl - динамический url возврата клиента после успешной оплаты***
failUrl - динамический url возврата клиента после неуспешной оплаты***
cbUrl - динамический url для отправки уведомлений, более подробно: Уведомление об оплате
payType - смотри раздел Функция payType
userEmail - e-mail для отправки фискального чека
fiscalType + Нужно ли отправлять фискальный чек
shopLogin - Для авторегистрации пользователя, после создания платежа Подробнее

Параметры ответа

Все параметры ответа являются обязательными.

Обновление получателя забронированных средств

Параметры запроса

Параметр Обязательный Описание
regPayNum + номер платежа
merchantToken + идентификатор мерчанта
callName - позывной
extraPhone - дополнительный телефон мерчанта (используется для дополнительной идентификации)

Параметры ответа (все обязательные)

Подтверждение оказания услуги

Необходимость подтверждения оказания услуги определяется настройками терминала с нашей стороны по вашему запросу

Подтвердить можно только платеж в статусе holded. Узнать статус платежа можно по запросу Получение статуса платежа

После получения подтверждения оказания услуги ckassa переводит денежные средства на кошелек мерчанта. Это значит, что услуга считается выполненной и оплаченной

В случае ошибки достаточно повторить запрос

Параметры запроса:

Параметр Обязательный Описание
regPayNum + номер платежа
orderId + идентификатор заказа

Параметры ответа:

Параметр Обязательный Описание
resultState + результат (success / fail)
desc - пояснение
ShopToken - Идентификатор магазина

Отмена замороженных/забронированных средств

Отменить заморозку и вернуть деньги на карту клиента можно только если платеж находится в статусе hold (в котором заморозка денежных среств на карте клиента осуществлена, но еще не подтверждено оказание услуги)

После отмены заморозки ckassa откатывает деньги обратно на карту клиента

В случае ошибки достаточно повторить запрос

Параметры запроса (все обязательные):

Параметры ответа (все обязательные):

Магазин. Анонимный платеж

Онлайн магазин, в котором принимается к оплате банковская карта.

Под "Анонимным" платежом предполагается платеж без сохраненных ранее данных по банковской карте.

Алгоритм работы

img_magaz_anon

Создание анонимного платежа

Пример запроса на создание анонимного платежа


{
    "serviceCode": "111-11111-1",
    "amount": "5000",
    "comission": "0",
    "properties": [
        {
            "name": "НОМЕР_СЧЕТА",
            "value": "12345"
        }
    ]
}

Пример ответа

{
  'regPayNum':'1234567890',
  'methodType':'GET',
  'payUrl':'ССЫЛКА НА ФОРМУ ВВОДА ДАННЫХ КАРТЫ',
  'userToken':'USER_TOKEN',
 "shopToken": "SHOP_TOKEN"
}

Пример запроса на создание анонимного платежа с вызовом платежной формы, заместо формы ввода данных карты


{
    "serviceCode": "111-11111-1",
    "amount": "5000",
    "comission": "0",
    "pfPayLink": true,
    "properties": [
        {
            "name": "НОМЕР_СЧЕТА",
            "value": "12345"
        }
    ]
}

Пример ответа

{
    "sign": "9B43774C04EED49961A1474F1CB26367",
    "shopToken": "aa00***",
    "regPayNum": null,
    "payUrl": "ССЫЛКА НА ПЛАТЕЖНУЮ ФОРМУ",
    "methodType": "GET",
    "payUrlImg": null

}

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

В ответ приходит номер платежа, URL и способ перехода.

Параметры запроса:

Параметр Обязательный Описание
serviceCode + код провайдера
amount + сумма платежа в копейках (сумма которая идет на счет пользователю)
comission + комиссия платежа в копейках (если нет комиссии - передается 0)
gpayToken - Токен при оплате через Google Pay. Более подробно в разделе Google Pay
applePayToken - токен при оплате через Apple pay. Подробнее в разделе Apple Pay
mirPayToken - токен при оплате через Mir Pay. Подробнее в разделе Mir Pay
payType - способ оплаты Функция payType
clientType - тип клиента*
userPhone - Параметр для типа оплаты sberPay, номер телефона пользователя Сбербанка, с которого будет производится оплата
userEmail - e-mail для отправки фискального чека, доступен только при значении параметра fiscalType - email
fiscalType - Описание Параметра
orderBestBefore - Время истечения срока жизни заказа в секундах. Подробнее
holdTtl - время заморозки средств (в секундах). Минимум 10 минут, максимум 4 дня. Если услуга не будет подтверждена, произойдет автоматический возврат средств на карту клиента.
successUrl - динамический url возврата клиента после успешной оплаты***
failUrl - динамический url возврата клиента после неуспешной оплаты***
cbUrl - динамический url для отправки уведомлений, более подробно: Уведомление об оплате
properties + массив реквизитов**
orderItems - Корзина для фискализации. Подробнее
orderNote - Доп. справочное поле для пользователя. Подробнее
pfPayLink - Используется для создания ссылки на платежную форму, принимает значение true в ответе получаем ссылку на платежную форму, заместо формы ввода данных карты, по умолчанию false
payTypeVisible - используется если необходимо скрыть или скорректировать очередность способов оплаты

Параметры ответа (все обязательные):

Подтверждение оказания услуги (заморозки)

Пример ответа

{
  "resultState":"success",
  "desc":"Success update provision services to confirm. RegPayNum:1234567890"
  "shopToken": "SHOP_TOKEN",
}

Необходимость подтверждения оказания услуги определяется настройками терминала с нашей стороны по вашему запросу

Подтвердить можно только платеж в статусе holded. Узнать статус платежа можно по запросу Получение статуса платежа

После получения подтверждения оказания услуги ckassa переводит денежные средства на кошелек мерчанта/расчетный счет. Это значит, что услуга считается выполненной и оплаченной

В случае ошибки достаточно повторить запрос

Параметры запроса:

Параметр Обязательный Описание
regPayNum + номер платежа
orderId + уникальный номер заказа на стороне поставщика услуг
amount - Сумма платежа в копейках. Параметр только для платежей с бронированием суммы. Если передана сумма, менньшая чем в заморозке, то будет выполнен частичный возврат. По умолчанию подтверждается полная сумма

Параметры ответа:

Параметр Обязательный Описание
resultState + результат (success / fail)
desc - пояснение
ShopToken - Идентификатор магазина

Отмена замороженных средств

Пример отмены замороженных средств

{
  "regPayNum":"1234567890",
  "orderId":"12345"
}

Пример ответа

{
  "resultState":"success",
  "desc":"Success update provision services to refund. RegPayNum:1234567890"
 "shopToken": "SHOP_TOKEN",
}

Отменить заморозку и вернуть деньги на карту клиента можно только если платеж находится в статусе hold (в котором заморозка денежных среств на карте клиента осуществлена, но еще не подтверждено оказание услуги)

После отмены заморозки ckassa откатывает деньги обратно на карту клиента

В случае ошибки достаточно повторить запрос

Параметры запроса (все обязательные):

Параметры ответа (все обязательные):

Магазин. Рекуррентный платеж

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

Алгоритм работы

img_rek

Регистрация пользователя

Пример запроса на регистрацию пользователя

{
"login":"Login",
"email":"Email",
"name":"Name",
"surName":"SurName",
"middleName":"MiddleName"
}

curl -X POST https://demo-api.ckassa.ru/api-shop/user/registration --cert ./59-BS-TERM-Test_ShopApi-001.pem:e9shpkwgyc -H "Content-Type: application/json" -d
'{
"login":"79124933293"
}'

Пример ответа

{
"state":"active",
"login":"getLogin()",
"email":"getEmail()",
"name":"getName()",
"surName":"getSurName()",
"middleName":"getMiddleName()"
}

{
"
"login":"79124933293",
"email":null,
"name":"",
"surName":null,
"middleName":null,
"userToken":"cc507cb4-fe90-4cb4-af75-37b9b5b41387",
"state":"active"
}

Параметры запроса:

Параметр Обязательный Описание
login + номер телефона с кодом, но без '+', например - 79020000000.
email - e-mail (на него отправляются чеки после оплаты)
name - имя
surName - фамилия
middleName - отчество

Параметры ответа:

Параметр Обязательный Описание
login + номер телефона с кодом, но без '+', например - 79020000000.
email - e-mail (на него отправляются чеки после оплаты)
name - имя
surName - фамилия
middleName - отчество
state + статус. Более подробно - Статус пользователя
userToken + идентификатор пользователя

Статус пользователя

Пример запроса статуса пользователя

{
"login":"79150000000"
}

Пример ответа

{
"state":"active",
"login":"getLogin()",
"email":"getEmail()",
"name":"getName()",
"surName":"getSurName()",
"middleName":"getMiddleName()"
,"userToken":"USER_TOKEN"
}

Если пользователь не зарегистрирован, то будет сгенерировано исключение UserNotRegisteredForShop (см. Разбор ошибок)

Параметры запроса (все параметры обязательные):

Параметры ответа:

Параметр Обязательный Описание
login + номер телефона
email - e-mail
name - имя
surName - фамилия
middleName - отчество
state + статус*
userToken + идентификатор пользователя

Регистрация карты

Пример запроса на регистрацию карты

{
"userToken":"USER_TOKEN",
"clientType":"web"
}

curl -X POST https://demo-api.ckassa.ru/api-shop/card/registration --cert ./59-BS-TERM-Test_ShopApi-001.pem:e9shpkwgyc -H "Content-Type: application/json" -d
'{
"userToken":"cc507cb4-fe90-4cb4-af75-37b9b5b41387"
}'

Строка формирования подписи: cc507cb4-fe90-4cb4-af75-37b9b5b41387&1a4c0d33-010c-4365-9c65-4c7f9bb415d5&6a7abaad-2147-4646-b91a-435b5d97527b

Пример ответа

{
'regPayNum':'1234567890',
'methodType':'GET',
'payUrl':'https://autopays.ru/payment/#!search_payment',
'userToken':'USER_TOKEN'
"shopToken": "SHOP_TOKEN"
}

Во время регистрации карты будет списано до 5 рублей, после добавления карты деньги будут возвращены

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

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

В ответ на запрос приходит номер платежа, url регистрации и способ перехода.

Параметры запроса:

Параметр Обязательный Описание
clientType - тип клиента*
userToken + идентификатор пользователя
payType - Способ оплаты. Обязателен только для совершения рекуррентного платежа через SberPay** Подробнее о Функции payType

Параметры ответа (все параметры обязательные):

Получение списка карт

Пример запроса списка карт

{
"userToken":"USER_TOKEN"
}

curl -X POST https://demo-api.ckassa.ru/api-shop/ver3/get/cards --cert ./59-BS-TERM-Test_ShopApi-001.pem:e9shpkwgyc -H "Content-Type: application/json" -d
'{
"sign":"0D3039397B11326E941557CF0D897996",
"userToken":"cc507cb4-fe90-4cb4-af75-37b9b5b41387"
}'

Строка формирования подписи: cc507cb4-fe90-4cb4-af75-37b9b5b41387&1a4c0d33-010c-4365-9c65-4c7f9bb415d5&6a7abaad-2147-4646-b91a-435b5d97527b

Пример ответа

{
"userToken":"USER_TOKEN",
"cards":[{"cardMask":"546949******9929","cardToken":"77a3adeb-1f50-400a-88a9-7127dc9ea9f3","cardType":"master_card","state":"active"}]
"shopToken":"SHOP_TOKEN"
}

{

"userToken":"cc507cb4-fe90-4cb4-af75-37b9b5b41387"
"cards":
[{
"cardMask":"400000******0002",
"cardToken":"ae7f3942-4e7c-44d3-9ab9-8c84d118b5ed",
"cardType":"visa",
"state":"active"
}]
}

Для того что бы карта появилась в списке нужно произвести регистрацию карты см. пункт Регистрация карты

Параметры запроса (все параметры обязательные):

Параметры ответа (все параметры обязательные):

Деактивация/удаление карты

Пример запроса удаления карты

{
"userToken":"USER_TOKEN",
"cardToken":"CARD_TOKEN"
}

Пример ответа

{
"resultState":"success",
"desc":"descSuccess",
"userToken":"USER_TOKEN"
}

После исполнения запроса состояние карты становится inactive и карта будет недоступна для оплаты (необходимо будет провести повторную привязку карты, см пункт Регистрация карты

Параметры запроса (все параметры обязательные):

Параметры ответа (все параметры обязательные):

Cоздание рекуррентного платежа

Пример запроса создания рекуррентного платежа

{
  "cardToken": "CARD_TOKEN",
  "value": "10000",
  "clientType": "web",
  "payType": "card",
  "shopLogin": true,
  "properties": [
    {
      "name": "Л/СЧЕТ",
      "value": "9503006477"
    },
    {
      "name": "ФИО",
      "value": "Иванов Н П"
    },
    {
      "name": "АДРЕС",
      "value": "Ленина10"
    },
    {
      "name": "МЕСЯЦ",
      "value": "05.2015"
    },
    {
      "name": "СУММА_ПЕНИ",
      "value": "10000"
    }
  ],
  "orderItems": [
    {
      "num": 1,
      "name": "name1",
      "quantity": 2,
      "price": 100,
      "tax": "vat0"
    },
    {
      "num": 2,
      "name": "name2",
      "quantity": 5,
      "price": 50,
      "tax": "vat110"
    }
  ],
  "serviceCode": "109-5804-1",
  "userToken": "USER_TOKEN",
  "amount": "10000",
  "comission": "13300"
}

Пример ответа

{
'regPayNum':'1234567890',
'methodType':'GET',
'payUrl':'https://autopays.ru/payment/#!search_payment',
'userToken':'USER_TOKEN'
 "shopToken": "SHOP_TOKEN"
}

В ответ приходит номер платежа, url для оплаты и способ перехода.

При рекурентном платеже - url со ссылкой на чек.

Параметры запроса:

Параметр Обязательный Описание
serviceCode + код провайдера
userToken + идентификатор пользователя
amount + сумма платежа в копейках, которая идет на счет пользователю
comission + комиссия платежа в копейках (при отсутствии комиссии передается 0)
cardToken - идентификатор карты (для рекуррентного платежа), см. пункт Получение списка карт
needRegCard - Включает принудительный 3ds, более подробно: needRegCard
gpayToken - Токен при оплате через Google Pay. Более подробно в разделе Google Pay
applePayToken - токен при оплате через Apple pay. Подробнее в разделе Apple Pay
mirPayToken - токен при оплате через Mir Pay. Подробнее в разделе Mir Pay
enableSMSConfirm - более подробно: EnableSMScnfirm
payType - способ оплаты подробнее в п. Параметр payType
payTypeVisible - используется если необходимо скрыть или скорректировать очередность способов оплаты
clientType - более подробно в п. Создание анонимного платежа
userEmail * e-mail для фискального чека, подробнее: Параметр fiscalType
fiscalType * отправлять ли фискальный чек. Подробнее: Параметр fiscalType
holdTtl - время заморозки средств (в секундах). Минимум 10 минут, максимум 4 дня. Если услуга не будет подтверждена, произойдет автоматический возврат средств на карту клиента.
successUrl - динамический url возврата клиента после успешной оплаты***
failUrl - динамический url возврата клиента после неуспешной оплаты***
cbUrl - динамический url для отправки уведомлений, более подробно: Уведомление об оплате
orderBestBefore - Время истечения срока жизни заказа в секундах. Подробнее
properties + массив реквизитов. Более подробно в п. Создание анонимного платежа
orderItems - Корзина для фискализации. Подробнее
clientAuInfo + Параметры браузера для прохождения 3ds v2. Подробнее
orderNote - Доп. справочное поле для пользователя. Подробнее
shopLogin - Для авторегистрации пользователя, после создания платежа Подробнее

Параметры ответа (все параметры обязательные):

Подтверждение оказания услуги (заморозки)

Пример подтверждения оказания услуги

{
  "regPayNum":"1234567890",
  "orderId":"12345"
}

Пример ответа

{
  "resultState":"success",
  "desc":"Success update provision services to confirm. RegPayNum:1234567890"
  "shopToken": "SHOP_TOKEN",
}

Необходимость подтверждения оказания услуги определяется настройками терминала с нашей стороны по вашему запросу

Подтвердить можно только платеж в статусе holded. Узнать статус платежа можно по запросу Получение статуса платежа

После получения подтверждения оказания услуги ckassa переводит денежные средства на кошелек мерчанта/расчетный счет. Это значит, что услуга считается выполненной и оплаченной

В случае ошибки достаточно повторить запрос

Параметры запроса:

Параметр Обязательный Описание
regPayNum + номер платежа
orderId + уникальный номер заказа на стороне поставщика услуг
amount - Сумма платежа в копейках. Параметр только для платежей с бронированием суммы. Если передана сумма, менньшая чем в заморозке, то будет выполнен частичный возврат. По умолчанию подтверждается полная сумма

Параметры ответа:

Параметр Обязательный Описание
resultState + результат (success / fail)
desc - пояснение
ShopToken - Идентификатор магазина

Отмена замороженных средств

Пример отмены замороженных средств

{
  "regPayNum":"1234567890",
  "orderId":"12345"
}

Пример ответа

{
  "resultState":"success",
  "desc":"Success update provision services to refund. RegPayNum:1234567890"
 "shopToken": "SHOP_TOKEN",
}

Отменить заморозку и вернуть деньги на карту клиента можно только если платеж находится в статусе hold (в котором заморозка денежных среств на карте клиента осуществлена, но еще не подтверждено оказание услуги)

После отмены заморозки ckassa откатывает деньги обратно на карту клиента

В случае ошибки достаточно повторить запрос

Параметры запроса (все обязательные):

Параметры ответа (все обязательные):

Уведомление о регистрации карты

Пример запроса создания уведомления

{
"userToken":"USER_TOKEN",
"cardMask":"546949******9929",
"cardToken":"77a3adeb-1f50-400a-88a9-7127dc9ea9f3",
"cardType":"master_card"
}

Параметры запроса:

Параметр Обязательный Описание
userToken + идентификатор пользователя
cardToken + токен карты
cardMask + маскированый номер карты
cardType + тип карты. Подробнее см. п. Получение списка карт

В ответ ожидается любой ответ со статусом 200

Sber Pay

Алгоритм для Магазин. Рекуррентный платеж:

1. Регистрируем пользователя (ссылка на метод Регистрация пользователя)

2. Привязываем карту пользователя с типом оплаты SberPay (ссылка на метод Регистрация карты)

3. Создаем рекуррентный платеж с типом оплаты SberPay (ссылка на метод Рекуррентный платеж)

4. Пользователь получает PUSH-уведомление на оплату

Алгоритм для Магазин. Анонимный платеж:

1. Создаем анонимный платеж с типом оплаты SberPay (ссылка на метод Анонимный платеж)

2. Пользователь получает PUSH-уведомление на оплату

Mir Pay

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

Наш шлюз поддерживает работу Mir Pay только в мобильном приложении и в мобильных браузерах устройств Android версий 7.0 (API level 23) – 13.0 (API level 33)

Для корректной работы Mir Pay у Вас обязательно должен быть установлен и добавлен в доверенное хранилище корневых сертификатов сертификат Минцифры РФ, выпущенный Национальным удостоверяющим центром(НУЦ). Подробная инструкция для установки корневого сертификата доступна на Едином портале государственных услуг РФ ссылка

Алгоритм подключения

1. Обратитесь в отдел продаж или нашу техническую поддержку с просьбой подключить Mir Pay

2. После согласования подключения Mir Pay мы выдадим Вам mid(Merchand ID), после чего Вам необходимо сгенерировать закрытый ключ, тип ключа должен быть RSA-2048 и на его основе отправьте CSR запрос на сертификат. Требования к запросу СSR:

3. После получения запроса на сертификат необходимо направить его нам, имя файла должно быть mid.csr, где mid - Ваш merchant ID

4. Ckassa выпускает конечный сертификат для мерчанта, подписывая его своим секретным ключом

5. В конечном итоге Вы получаете:

В мобильном приложении с помощью MirPay SDK

Сценарий проведения In-Application операции для мерчанта

1. Мерчант проверяет наличие установленного приложения Mir Pay на устройстве пользователя с помощью метода MirApp.isMirPayInstalled

2. Мерчант активирует приложение Mir Pay на устройстве с помощью метода MirPayPaymentClientFactory.create

3. Мерчант инициирует сценарий формирования In-Application операции с помощбю метода IMirPayPaymentClient.createPaymentIntent

4. Мерчант получает данные In-Application с помощью метода MirPayPaymentResultExtractor.extract

5. Мерчант завершает взаимодействие с приложением Mir Pay с помощью метода IMirPayPaymentClient.disconnect

6. Мерчант отправляет полученные данные In-Application операции в формате JSON Web Encryption(JWE) Ckassa по каналу взаимодействия

На сайте

Пример формирования Deep Link

      
        {
          "alg": "PS256",
          "typ": "JWT",
          "jku": "https://agent-host/jwks/000000000000001-jwks.json",
          "kid": "1000"
        }
        {
          "iat": 1660553079,
          "iss": "000000000000001",
          "orderId": "123456",
          "sum": 10000,
          "cur": 643,
          "media": "DL",
          "rurl": "https://merchant/api/v1/inapp/merchants/000000000000001/orders/123456"
        }
      
      

Пример формирования Universal Link

      
        {
          "alg": "PS256",
          "typ": "JWT",
          "jku": "https://agent-host/jwks/000000000000001-jwks.json",
          "kid": "1000"
        }
        {
          "iat": 1660553079,
          "iss": "000000000000001",
          "orderId": "123456",
          "sum": 10000,
          "cur": 643,
          "media": "UL",
          "rurl": "https://merchant/api/v1/inapp/merchants/000000000000001/orders/123456"
        }
      
      

Сценарий проведения web-based In-Application операции для мерчанта по технологии Deep Link или Universal Link

1. Мерчант формирует Deep Link или Universal Link с данными In-Application операции.

2. Далее, в зависимости от типа ссылки мерчант:

3. Mir Pay формирует данные In-Application операции в формате JSON Web Encryption (JWE).

4. Mir Pay отправляет подготовленные зашифрованные данные In-Application операции внутри JWE на адрес, который Вы отправили в параметре rurl при запросе на формирование Deep Link и Universal Link

5. Мерчант передаёт полученные зашифрованные данные In-Application операции JWE Ckassa

Google Pay™

С помощью системы Google Pay™ вы сможете быстро принимать в своем приложении оплату от миллионов пользователей, которые сохранили данные банковских карт в своих аккаунтах Google.

Введение

Нажав на кнопку оплаты через Google Pay, пользователь переходит на страницу, где указаны способы оплаты и адреса доставки, сохраненные в его аккаунте Google. Здесь он может быстро выбрать нужную информацию или добавить новую.

Как это работает: оплата осуществляется из мобильного приложения с устройства пользователя. В сценарии приложение запрашивает зашифрованные данные у Google Pay. Эти данные необходимо передать в платежный шлюз: тоесть, нам.

Итак, вы приняли решение внедрить технологию Google Pay в ваше приложение. С чего начать?

Алгоритм работы

Пример инициализации структуры Подробнее

"type": "CARD",
  "parameters": {
    "allowedAuthMethods": ["PAN_ONLY", "CRYPTOGRAM_3DS"],
    "allowedCardNetworks": ["MASTERCARD", "VISA"]

В настоящее время шлюз поддерживает платежные системы Visa и MasterCard, а так же обработку токенизированных и нетокенизированных карт (PAN_ONLY и CRYPTOGRAM_3DS).

Наш шлюз поддерживает возможность оплаты через Google Pay как в вашем android приложении, так и в вашем web-приложении (на сайте).

img_gpay

1. Пользователь в приложении выбирает тип оплаты Google Pay (привязывает карту, либо выбирает уже привязанную).

2. Приложение запрашивает у Google Pay данные карт, привязанных к Google в маскированном виде. Для того, чтоб приложение могло успешно общаться с системой Google Pay не нужно к ним интегрироваться, достаточно знать несколько параметров. Мы рассмотрим их ниже.

3. Google Pay возвращает в приложение данные карт (привязанных к Google) в маскированном виде.

4. Приложение показывает пользователю данные его карт/карты (привязанной к Google) в маскированном виде.

5. Пользователь подтверждает оплату (выбирает карту, либо другой способ оплаты).

6. Приложение запрашивает у Google Pay карточные данные в зашифрованном виде.

7. Google Pay шифрует данные, используя открытый ключ - соответствующий ему закрытый ключ расположен в платёжном шлюзе. То есть, собирает некую посылку в виде криптограммы.

Пример криптограммы от Google Pay

{"signature":"MEYCIQDzIjWGqr1teZiawa3HJ9IgJ/j4ZJnHkgIXzJv1pD1MIQIhAMWLvRlTZjdVCJBHO6/Jo+wuIudYqlrIxKU3nJdcU9XW","protocolVersion":"ECv1","signedMessage":"{\"encryptedMessage\":\"s3w41rMoVYpgOaWGWF8Sk6WAxxbDCPkepD94OIPTt4BMCJYTFMkM34KG60ONbu1bQkSfibSveqTtP0+bnXNcF2N50ZT+QTJ4rt7411nyXmWlsqHVGTHCI7RT02Q45l9NM33BIA8zuqAigqhPd91a3x1b0ZrBZW7xBOPf8Vzh5sokepySQRLIWwN/F40aO3DC3AP+wt8FT+ly4M3C7srDZAJT4/pbE4Qyr9ftvdqFze2fRJmPv0Uc1m8C+4AZHYwZSY8jCMlhdsEECR1pHdaXqpiTNDutY9Qw0ESQq63zMqPsfpDLo15bl4l52zkqtC7bxPfI31CaB0dmV+Et8rw6TYVa0+8DvvYAEWoHU1aZAXQd2amI7rGdJ3p6KO8IaL5QwwtFk5byjvxrsjN1Nq9EQJnzCVfE5/P7PdGVB3LLLTLmc5xJJH89CYuu6er4erVcfw\\u003d\\u003d\",\"ephemeralPublicKey\":\"BGLg5omp43/eI6V43NvI1FEF2TpTnz/S9T4hByZ3Oa726uLc3BTVzOpcUefzBDL5gePdvRqQTrL3U0vV4JRHFhU\\u003d\",\"tag\":\"x1hLpFnhsB2tSUO4CMAWCbZgvClC3ieIKkjRtCSQV1Q\\u003d\"}"}

8. Google возвращает в приложение зашифрованные данные о платеже (криптограмму).

9. Приложение отправляет в нашу платежную систему запрос на оплату, указывая полученный ранее Google Pay Token.

10. Наша платежная система собирает данные о платеже и отправляет платеж в эквайринг.

11. Эквайринг проводит платеж в обычном режиме (методами того типа магазина, который вы выбрали).

12. Информация о статусе платежа отправляется на Backend приложения.

В мобильном приложении

Пример выбора способа токенизации (из документации Google Pay API)

  private static JSONObject getGatewayTokenizationSpecification() throws JSONException {
    return new JSONObject(){{
      put("type", "PAYMENT_GATEWAY");
      put("parameters", new JSONObject(){{
        put("gateway", "billingsystems");
        put("gatewayMerchantId", "shopToken");
        }
      });
    }};
  }

Если с какими-то параметрами, запросами у вас возникли проблемы и ошибки, то обязательно загляните в раздел Устранение неполадок. Ведь с большинством проблем уже столкнулись, решили и описали их решение.

На сайте

Пример выбора способа токенизации (из документации Google Pay API для сайта)

const tokenizationSpecification = {
  type: 'PAYMENT_GATEWAY',
  parameters: {
    'gateway': 'billingsystems',
    'gatewayMerchantId': 'shopToken'
  }
};

Если с какими-то параметрами, запросами у вас возникли проблемы и ошибки, то обязательно загляните в раздел Устранение неполадок. Ведь с большинством проблем уже столкнулись, решили и описали их решение.

Apple Pay

Предоставьте пользователям быстрый, простой и безопасный способ покупки товаров и услуг в вашем приложении или на вашем веб-сайте. Разработчики, внедрившие Apple Pay с использованием лучших практик, значительно повысили конверсию продаж, лояльность клиентов и частоту покупок, а также сократили время оформления покупок.

Алгоритм работы

Пример получаемого приложением от Apple объекта PKPaymentToken:

        {
  "paymentData": {
    "data": "vj5Uvux7Im8DD8YhSOsJvw5lWmfl2HMUnTNWJhVfTehvFffRhDo54mfpjxMt9vJdp6DwD7fgcNHDxBvnj56qYG4DpOxg1fTSdXgPFrezprZHCrRxPhN/aQQEThe2pQ0c7hgzzZlA6TpkIR/Xtk6CTcEbD1W6znFVdvMgX8G96Gg4OAGl8GaTXdSU3wlMQL5E63CLQzPi1xHVErWl1OOn6hYQuREUDGc7mAjmqMyLwXp6mOwJZ6ZFO/b9HkgFi428rqtOH08AfqkfaIWwIIAz2w3xEoZrDXbgFpNBnN7F2oretCU1/dFvQJjDYbMorKQ8GJbWtlsVbKsy0U91eoUetDcyMpB9zc139STYVoC8yp6Yk6Mn3icCLY0ZBujq7/404kMGpnHgkNVqFc/4SN0U2XQ5rrb14DM8M69w=",
    "signature": "MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0BBwEAAKCAMIID4jCCA4igAwIBAgIIJEPyqAad9XcwCgYIKoZIzj0EAwIwejEuMCwGA1UEAwwlQXBwbGUgQXBwbGljYXRpb24gSW50ZWdyYXRpb24gQ0EgLSBHMzEmMCQGA1UECwwdQXBwbGUgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxEzARBgNVBAoMCkFwcGxlIEluYy4xCzAJBgNVBAYTAlVTMB4XDTE0MDkyNTIyMDYxMVoXDTE5MDkyNDIyMDYxMVowXzElMCMGA1UEAwwcZWNjLXNtcC1icm9rZXItc2lnbl9VQzQtUFJPRDEUMBIGA1UECwwLaU9TIFN5c3RlbXMxEzARBgNVBAoMCkFwcGxlIEluYy4xCzAJBgNVBAYTAlVTMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEwhV37evWx7Ihj2jdcJChIY3HsL1vLCg9hGCV2Ur0pUEbg0IO2BHzQH6DMx8cVMP36zIg1rrV1O/0komJPnwPE6OCAhEwggINMEUGCCsGAQUFBwEBBDkwNzA1BggrBgEFBQcwAYYpaHR0cDovL29jc3AuYXBwbGUuY29tL29jc3AwNC1hcHBsZWFpY2EzMDEwHQYDVR0OBBYEFJRX22\/VdIGGiYl2L35XhQfnm1gkMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUI/JJxE+T5O8n5sT2KGw/orv9LkswggEdBgNVHSAEggEUMIIBEDCCAQwGCSqGSIb3Y2QFATCB/jCBwwYIKwYBBQUHAgIwgbYMgbNSZWxpYW5jZSBvbiB0aGlzIGNlcnRpZmljYXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRlIHBvbGljeSBhbmQgY2VydGlmaWNhdGlvbiBwcmFjdGljZSBzdGF0ZW1lbnRzLjA2BggrBgEFBQcCARYqaHR0cDovL3d3dy5hcHBsZS5jb20vY2VydGlmaWNhdGVhdXRob3JpdHkvMDQGA1UdHwQtMCswKaAnoCWGI2h0dHA6Ly9jcmwuYXBwbGUuY29tL2FwcGxlYWljYTMuY3JsMA4GA1UdDwEB/wQEAwIHgDAPBgkqhkiG92NkBh0EAgUAMAoGCCqGSM49BAMCA0gAMEUCIHKKnwSoyq5mXQr1V62c0BXKpaHodYu9TWXEPUWPpbpAiEAkTecfW6+W5l0r0ADfzTCPq2YtbS39w01XIayqBNy8bEwggLuMIICdaADAgECAghJbS+/OpjalzAKBggqhkjOPQQDAjBnMRswGQYDVQQDDBJBcHBsZSBSb290IENBIC0gRzMxJjAkBgNVBAsMHUFwcGxlIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRMwEQYDVQQKDApBcHBsZSBJbmMuMQswCQYDVQQGEwJVUzAeFw0xNDA1MDYyMzQ2MzBaFw0yOTA1MDYyMzQ2MzBaMHoxLjAsBgNVBAMMJUFwcGxlIEFwcGxpY2F0aW9uIEludGVncmF0aW9uIENBIC0gRzMxJjAkBgNVBAsMHUFwcGxlIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRMwEQYDVQQKDApBcHBsZSBJbmMuMQswCQYDVQQGEwJVUzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABPAXEYQZ12SF1RpeJYEHduiAou\/ee65N4I38S5PhM1bVZls1riLQl3YNIk57ugj9dhfOiMt2u2ZwvsjoKYT/VEWjgfcwgfQwRgYIKwYBBQUHAQEEOjA4MDYGCCsGAQUFBzABhipodHRwOi8vb2NzcC5hcHBsZS5jb20vb2NzcDA0LWFwcGxlcm9vdGNhZzMwHQYDVR0OBBYEFCPyScRPk+TvJ+bE9ihsP6K7\/S5LMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUu7DeoVgziJqkipnevr3rr9rLJKswNwYDVR0fBDAwLjAsoCqgKIYmaHR0cDovL2NybC5hcHBsZS5jb20vYXBwbGVyb290Y2FnMy5jcmwwDgYDVR0PAQH/BAQDAgEGMBAGCiqGSIb3Y2QGAg4EAgUAMAoGCCqGSM49BAMCA2cAMGQCMDrPcoNRFpmxhvs1w1bKYr/0F+3ZD3VNoo6+8ZyBXkK3ifiY95tZn5jVQQ2PnenC/gIwMi3VRCGwowV3bF3zODuQZ/0XfCwhbZZPxnJpghJvVPh6fRuZy5sJiSFhBpkPCZIdAAAxggGMMIIBiAIBATCBhjB6MS4wLAYDVQQDDCVBcHBsZSBBcHBsaWNhdGlvbiBJbnRlZ3JhdGlvbiBDQSAtIEczMSYwJAYDVQQLDB1BcHBsZSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTETMBEGA1UECgwKQXBwbGUgSW5jLjELMAkGA1UEBhMCVVMCCCRD8qgGnfV3MA0GCWCGSAFlAwQCAQUAoIGVMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTE3MDMxNzEwMzgzOVowKgYJKoZIhvcNAQk0MR0wGzANBglghkgBZQMEAgEFAKEKBggqhkjOPQQDAjAvBgkqhkiG9w0BCQQxIgQgvL+q07/reM0N/5b0hwWT7TJReVTdS9QX5SPhiqeie+cwCgYIKoZIzj0EAwIERzBFAiEAttC68Xyzs6I0+tAKmg6x+0UrqmkQN/V5c8RMMIEJHooCIHIgUHbAt2p5WrFHQKrAVL4c7nohRplZWVbVu6wbBeCgAAAAAAAA",
    "header": {
      "publicKeyHash": "fpvAnSDwQFX4NX4pghdjpNwUFhoTH/DDGhew94uJaRA=",
      "ephemeralPublicKey": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAErKZUfqvhlieGAOaCKeTB/oDEo29fS1jWSKemNDh3fIqmbfs86nL4BGtRsWRxWcMnHN6GFOQm1MEj4m7ZHxe78g==",
      "transactionId": "38e4c267ef1de62a343d0eccada3f7e19f6b22ffc7ede899c039865432ba6aa2"
    },
    "version": "EC_v1"
  },
  "transactionIdentifier": "38E4C267EF1DE62A343D0ECCADA3F7E19F6B22FFC7EDE899C039865432BA6AA2",
  "paymentMethod": {
    "network": "Visa",
    "type": "debit",
    "displayName": "Visa5223"
  }
}

Значение параметра paymentData, которое надо закодировать в Base64 и передать в запросе на оплату нам:

  {
    "data": "vj5Uvux7Im8DD8YhSOsJvw5lWmfl2HMUnTNWJhVfTehvFffRhDo54mfpjxMt9vJdp6DwD7fgcNHDxBvnj56qYG4DpOxg1fTSdXgPFrezprZHCrRxPhN/aQQEThe2pQ0c7hgzzZlA6TpkIR/Xtk6CTcEbD1W6znFVdvMgX8G96Gg4OAGl8GaTXdSU3wlMQL5E63CLQzPi1xHVErWl1OOn6hYQuREUDGc7mAjmqMyLwXp6mOwJZ6ZFO/b9HkgFi428rqtOH08AfqkfaIWwIIAz2w3xEoZrDXbgFpNBnN7F2oretCU1/dFvQJjDYbMorKQ8GJbWtlsVbKsy0U91eoUetDcyMpB9zc139STYVoC8yp6Yk6Mn3icCLY0ZBujq7/404kMGpnHgkNVqFc/4SN0U2XQ5rrb14DM8M69w=",
    "signature": "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",
    "header": {
      "publicKeyHash": "fpvAnSDwQFX4NX4pghdjpNwUFhoTH/DDGhew94uJaRA=",
      "ephemeralPublicKey": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAErKZUfqvhlieGAOaCKeTB/oDEo29fS1jWSKemNDh3fIqmbfs86nL4BGtRsWRxWcMnHN6GFOQm1MEj4m7ZHxe78g==",
      "transactionId": "38e4c267ef1de62a343d0eccada3f7e19f6b22ffc7ede899c039865432ba6aa2"
              },
      "version": "EC_v1"
  }

Наш шлюз поддерживает возможность оплаты через Apple Pay как в вашем android приложении, так и в вашем web-приложении (на сайте).

img_applepay

1. Пользователь выбирает способ оплаты Apple Pay

2. Сведения о платеже отправляются на обработку в Apple Pay. Формируя посылку, обязательно укажите в applicationData ваш ShopToken Подробней про поле applicationData

3. В системе Apple Pay создаётся объект PKPaymentToken Object, который содержит свойство paymentData (подробнее в документации Apple)

4. Apple Pay направляет ответ в мобильное/web приложение

5. Мобильное/web приложение извлекает из полученного объекта PKPaymentToken Object свойство paymentData и кодирует его содержимое в Base64

6. Мобильное/web приложение отправляет запрос в ckassa на создание платежа с указанием параметра applePayToken, содержащим ранее полученный paymentData в кодировке Base64

7. Ckassa собирает данные о платеже и отправяет запрос в эквайринг

8. Эквайринг проводит платеж с полученными данными в обычном режиме (методами того типа магазина, который вы выбрали)

9. Информация о статусе платежа отправляется на Backend мобильного/web приложения

В мобильном приложении

Совместимость

1. Убедитесь что ваше приложение соответствует требованиям от Apple

2. Создайте MerchantID

Для подключения приложения необходимо в кабинете разработчика (из которого выпускается приложение) создать MerchantID - видео-туториал

Срок действия MerchantID не ограничен

3. Создайте Payment Processing Certificate

Payment Processing Certificate состоит из двух частей:

Сначала запросите у нас CSR. Для этого обратитесь к своему менеджеру, либо в техническую поддержку. Вам будет выслан файл с открытой частью подписи

Теперь зайдите в кабинет разработчика в раздел Certificates, Identifiers & Profiles и загрузите туда данный файл как это указано в видеоинструкции выше

4. Передайте получившийся файл нам

В результате Apple выпустит сертификат, его необходимо скачать и передать получившийся файл нам

Срок действия сертификата будет указан при его генерации в кабинете разработчика. По истечению срока его необходимо обновить. Допустимо иметь до двух сертификатов одновременно

Данный сертификат необходимо использовать для взаимодейсвтия с Apple Pay

Все готово! Вы, как всегда, восхитительны! Осталось реализовать взаимодействие вашего приложения с Apple Pay

Справочные материалы, документацию Apple и помощь в реализации от Apple смотрите в дополнительных материалах

На сайте

1. Приведите ваше web приложение в соответствие с требованиями Apple:

2. Создайте MerchantID

Видео-туториал

Срок действия MerchantID не ограничен

3. Создайте Payment Processing Certificate

Payment Processing Certificate состоит из двух частей:

Сначала запросите у нас CSR. Для этого обратитесь к своему менеджеру, либо в техническую поддержку. Вам будет выслан файл с открытой частью подписи

Теперь зайдите в кабинет разработчика в раздел Certificates, Identifiers & Profiles и загрузите туда данный файл как это указано в видеоинструкции выше

4. Создайте Merchant identity certificate

Необходимо для того, чтоб пройти аппрув в системе Apple Pay. Для этого пройдите по инстуркции от Apple

5. Реализуйте взаимодействие сайта с системой Apple Pay

Итак, вы прошли через все круги аппрувов. Теперь необходимо реализовать взаимодействие вашего сайта с системой Apple Pay

Для этого используйте Apple Pay JS

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

Дополнительная информация

Описание Ссылка
Тестировать Apple Pay (песочница) https://developer.apple.com/apple-pay/sandbox-testing/
Demo https://applepaydemo.apple.com/
XCODE Help https://help.apple.com/xcode/mac/9.3/#/deva43983eb7?sub=dev44ce8ef13
Страница входа в среду разработки https://devforums.apple.com/community/ios/connected/applepay
Описание структуры PKPaymentToken Object https://developer.apple.com/library/ios/documentation/PassKit/Reference/PaymentTokenJSON/PaymentTokenJSON.html#//apple_ref/doc/uid/TP40014929
Раздел справочного руководства по App Store, посвящённый приложениям Apple Pay https://developer.apple.com/app-store/review/guidelines/#apple-pay
Справочник по программированию от Apple https://developer.apple.com/library/ios/ApplePay_Guide

Встраиваемые модули

Вы всегда можете встроить в ваш сайт, либо личный кабинет один из наших модулей, не затрачивая на разработку свое драгоценное время!

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

QR на оплату через API

Пример запроса создания уведомления

https://oapi.ckassa.ru/api-shop/rs/pay-url/create-qr-img?service-code=100-7618-317&amount=10000&ttl=1651449600&property=%D0%9D%D0%9E%D0%9C%D0%95%D0%A0|9659657777

Пример ответа






QR code



  
QR

Данный метод позволяет сгенерировать QR код на оплату услуги с предустановленными параметрами

Параметры запроса(все параметры обязательные):

ttl (не обязательный параметр) - время жизни ссылки в секундах по unix time, т.е. с 01.01.1970 г.

В ответ придет картинка с QR кодом в html и короткая ссылка на оплату

Пример запроса создания уведомления

https://oapi.ckassa.ru/api-shop/rs/pay-url/create-qr?service-code=979-13689-20&amount=10000&property=НОМЕР_ТЕЛЕФОНА|9659657777

Пример ответа

https://bc.ckassa.ru/ys6o71

В нашем API есть специальный метод, позволяющий сгенерировать короткую ссылку на оплату

Метод работает в следующих типах магазинов: Магазин. Поездка с оплатой на р/с, Магазин. Анонимный платеж, Магазин. Рекуррентрый платеж

Параметры запроса(все параметры обязательные):

ttl (не обязательный параметр) - время жизни ссылки в секундах по unix time, т.е. с 01.01.1970 г.

После проверки возможности оплаты поступит ответ. В ответе будет короткая ссылка на оплату

Универсальная платежная форма

Пример кода платежной формы.

Скрипт платежной формы для кнопки:

<script
        src="https://payframe.ckassa.ru/checkout.js"
        class="checkout-script"
        data-service="111-15892-1"
        data-reqs="ЛИЦЕВОЙ_СЧЕТ=21129113&amount=123"
        data-light-version="True"
>
</script>

Ссылка на платежную форму:


https://payframe.ckassa.ru/?service=111-15892-1&ЛИЦЕВОЙ_СЧЕТ=21129113&amount=123

Веб-версия. Реквизиты платежа. Баланс доступен после валидации.

low_balance

Мобильная версия. Способы оплаты.

low_balance

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

Функциональные возможности:

Параметры платежа:

Ссылка для оплаты по предзаполненным реквизитам.

Ссылка имеет вид https://payframe.ckassa.ru/?service=N, где N-персональный код вашей услуги.

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

Пример ссылки с предзаполненным лицевым счётом - 100, суммой - 1 рубль и запретом редактирования суммы: https://payframe.ckassa.ru/?service=111-15892-1&Лицевой счет=100&amount=100&amount_read_only=true

Пример ссылки с предзаполненным лицевым счетом - 100, суммой - 1 рубль и переходом на второй шаг оплаты(выбор способа оплаты): https://payframe.ckassa.ru/?service=111-15892-1&Лицевой счет=100&amount=100&amount_read_only=true&start_pay_select=true

Ссылка на оплату как альтернатива встраиванию формы.

Альтернативой встраиванию формы является размещение ссылки на оплату. Скопируйте ссылку с кодом вашей услуги. При необходимости отредактируйте её, предзаполнив реквизиты, как показано выше. Установите ссылку в платежный раздел вашего сайта или отправьте её пользователю напрямую по email и в мессенджеры. Кликнув на эту ссылку, пользователь перейдет к вашей персональной форме оплаты.

Отправка ссылки на оплату https://payframe.ckassa.ru/?service=100-12671-1 в мессенджеры и соцсети сопровождается отображением превью. Пользователь увидит ваш лого, бренд, категорию и доступные способы оплаты.

Разбор ошибок

Ошибки, сигнализирующие о том, что необходимо заново регистрировать карту:

Ошибки, связанные со сложностями в авторизации:

Не удалось получить список услуг:

Сложности с регистрацией:

Сложности с активацией:

Проблемы со статусом платежа:

Трудности в создании платежа:

Общее:

Коды ошибок проводки платежа

Общие ошибки:

Спецификация №1

Так же именуемая Bisys 3

Позволяет Вывести на сайт ckassa.ru оплату услуг вашей организации, добавить на ваш сайт, либо ЛК специальную кнопку оплаты ваших услуг.

Описание общее. Что конкретно будет передаваться в запросах и ответах определяется условиями договора.

Совсместимость с биллингами-партнерами:

Основные положения

Поставщик принимает запросы с данными о платежах от Общества. Для обработки запросов Поставщику необходимо следующее ПО: HTTP-сервер, программы (скрипты), которые обрабатывают запросы Общества и заносят платежи в базу данных Поставщика. (Чаще всего используются Apache и скрипты, написанные на PHP.)

Обмен данными проходит по протоколу HTTPS. Для авторизации Общества используется MD5-хэш данных запроса с паролем, в шестнадцатеричном виде.

ПО Поставщика должно проверять IP-адрес, с которого поступают запросы и MD5-хэш. Поставщик обязан отвергать все запросы, совершенные с других IP-адресов, и/или с неверным значением MD5-хэша.

Для идентификации Поставщика используется MD5-хэш данных ответа с паролем. В случае получения неверного значения хэша в ответе, Общество считает ответ ошибочным и должно сообщить об этом Поставщику

Формат запросов и ответов

Общий формат запроса:

<?xml version="1.0" encoding="{кодировка}"?> 
<request>
 <params>
 {параметры}
 </params>
 <sign>{подпись}</sign>
</request>

Общий формат ответа:

<?xml version="1.0" encoding="{кодировка}"?>
<response>
 <params>
 <err_code>{кодошибки}</err_code>
 <err_text>[текстошибки]</err_text>
 [параметры]
 </params>
 <sign>{подпись}</sign>
</response>

Тип запросов POST, кодировка windows-1251, или UTF-8. Кодировку выбирает Поставщик. Все запросы Общества и ответы Поставщика должны быть в одной кодировке.

Тело POST-запроса содержит один параметр params, в котором передается XML-запрос. Данные URL-кодированные. Заголовок: ContentType: application/x-www-form-urlencoded. Аналогичный запрос будет, если создать HTML-форму с элементом <textarea name="params" …>, поместить в элемент текст XML-запроса и отправить средствами браузера.

Ответы Поставщика в формате XML, кодировка ответа должна соответствовать кодировке запросов. В HTTP заголовке желательно установить Content-Type: text/xml; charset=<кодировка>.

Ограничения XML.

Запрещены пробелы до или после имени тэга (между <>). Общество гарантирует отсутствие таких пробелов в запросах. В связи с этим, и с тем, что структура XML простая, можно не использовать для обработки XML специальные компоненты, а обрабатывать простыми функциями работы со строками.

Достаточно написать одну строковую функцию по типу: содержимое_тега = get_tag_content (запрос - имя тега). Либо использовать резульрные выражения.

Элементы запроса:

Элементы ответа:

Доступные типы данных

Проверка параметров платежа

Пример запроса проверки возможности занесения платежа:

<?xml version="1.0" encoding="windows-1251"?>
<request>
 <params>
 <act>1</act>
 <agent_date>2009-04-15T11:22:33</agent_date>
 <account>54321</account>
 <serv_code>53001</serv_code>
 <pay_amount>10000</pay_amount>
 <client_name>Иванов Иван Иванович</client_name>
 </params>
 <sign>827CCB0EEA8A706C4C34A16891F84E7B</sign>
</request>

Данный запрос позволяет Обществу предварительно проверить возможность занесения палатежа.

Поля запроса:

Пример ответа Поставщика на запрос проверки:

<?xml version="1.0" encoding="windows-1251"?>
<response>
 <params>
 <err_code>0</err_code>
 <err_text>OK</err_text>
 <account>54321</account>
 <client_name>Иванов Иван Иванович</client_name>
 <balance>50.00</balance>
 </params>
 <sign>827CCB0EEA8A706C4C34A16891F84E7B</sign>
</response>

Пример ответа Поставщика при ошибке:

<?xml version="1.0" encoding="windows-1251"?>
<response>
 <params>
 <err_code>20</err_code>
 <err_text>Номер счета не найден</err_text>
 </params>
 <sign>827CCB0EEA8A706C4C34A16891F84E7B</sign>
</response>

Поля ответа:

Проведение платежа

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

Поля запроса проведения платежа:

Пример запроса на проведение платежа:


  <?xml version="1.0" encoding="windows-1251"?>
  <request>
  <params>
  <act>2</act>
  <agent_date>2009-04-15T11:22:33</agent_date>
  <pay_id>2345</pay_id>
  <pay_date>2009-04-15T11:00:12</pay_date>
  <account>54321</account>
  <pay_amount>10000</pay_amount>
  <client_name>Иванов</client_name>
  <month>08.2012</month>
  <client_ip>127.0.0.1</client_ip>
  <client_card>
  <pan>411111******1111</pan>
  <rrn>111111111111</rrn>
  <acq_auth_code>123456</acq_auth_code>
  <acq_term_id>1234567890</acq_term_id>
  </client_card>
  </params>
  <sign>827CCB0EEA8A706C4C34A16891F84E7B</sign>
  </request>

Поля ответа:

Пример ответа на проведение платежа:

<?xml version="1.0" encoding="windows-1251"?>
<response>
 <params>
 <err_code>0</err_code>
 <err_text>OK</err_text>
 <reg_id>3456</reg_id>
 <reg_date>2009-04-15T11:22:55</reg_date>
 </params>
 <sign>827CCB0EEA8A706C4C34A16891F84E7B</sign>
</response>

Статус платежа

Пример запроса на проверку статуса:

<?xml version="1.0" encoding="windows-1251"?>
<request>
 <params>
 <act>4</act>
 <pay_id>2345</pay_id>
 </params>
 <sign>827CCB0EEA8A706C4C34A16891F84E7B</sign>
</request>

Пример ответа Поставщика на проверку статуса:

<?xml version="1.0" encoding="windows-1251"?>
<response>
 <params>
 <err_code>0</err_code>
 <err_text>Платеж обработан</err_text>
 </params>
 <sign>827CCB0EEA8A706C4C34A16891F84E7B</sign>
</response>

Пример ответа Поставщика на проверку статуса в случае временной ошибки:

<?xml version="1.0" encoding="windows-1251"?>
<response>
 <params>
 <err_code>40</err_code>
 <err_text>Ошибка подключения к серверу получателя.</err_text>
 </params>
 <sign>827CCB0EEA8A706C4C34A16891F84E7B</sign>
</response

Иногда статус платежа у Поставщика не конечный на момент выдачи ответа на запрос проведения. В таких случаях Поставщик отвечает кодом 2 (Платеж ожидает обработки у Поставщика). После этого Общество будет посылать запросы на получение статуса. На такие запросы Поставщик отвечает кодом 0 (платеж проведен), 2 (платеж в процессе обработки), 40 (временная ошибка обработки), или 41 (окончательная ошибка обработки).

Поля запроса:

Возврат платежа

Пример запроса на возврат платежа:

<?xml version="1.0" encoding="windows-1251"?>
<request>
 <params>
 <act>8</act>
 <pay_id>2345</pay_id>
 <pay_date>2009-04-15T11:00:12</pay_date>
 <account>54321</account>
 <pay_amount>10000</pay_amount>
 <reg_id>5432</reg_id>
 </params>
 <sign>827CCB0EEA8A706C4C34A16891F84E7B</sign>
</request>

Пример ответа на запрос по возврату платежа:

<?xml version="1.0"encoding="windows-1251"?>
<response>
 <params>
 <err_code>0</err_code>
 <err_text>Запрос принят</err_text>
 </params>
 <sign>827CCB0EEA8A706C4C34A16891F84E7B</sign>
</response>

Пример ответа на запрос возврата платежа в случае ошибки:

<?xml version="1.0" encoding="windows-1251"?>
<response>
 <params>
 <err_code>80</err_code>
 <err_text>Операция невозможна.</err_text>
 </params>
 <sign>827CCB0EEA8A706C4C34A16891F84E7B</sign>
</response>

В некоторых случаях требуется отмена платежа, проведенного Поставщику. Запрос на возврат передает, как бы, заявку на возврат платежа. Поставщик рассматривает возможность отмены платежа. По возможности отменяет платежи, меняя их статус. Общество может узнать об итоге операции запросом статуса платежа, или письменным уведомлением.

Запрос на возврат не обязателен для реализации протокола. Решайте сами, нужна ли вам такая возможность.

Поля запроса:

Поля ответа аналогичны полям запроса на Проведение платежа

Уникальность платежа

При получении запроса проведения платежа Поставщик должен проверить уникальность платежа. Номер платежа pay_id должен быть уникальным по Обществоу. При получении запроса Поставщик должен выполнить в своей базе поиск платежа с таким же pay_id, как у полученного в запросе.

Если такой платеж будет найден, необходимо сверить реквизиты account и pay_amount платежа в запросе с соответствующими реквизитами платежа в базе.

Если они совпадают, то это просто повтор запроса. В этом случае ответ Поставщика должен быть как на первый удачный запрос проведения, с теми же reg_id и reg_date, если они используются, но с кодом ошибки 1.

Если account или pay_amount различаются, то это нарушение правил учета платежей у Общества и Поставщик должен ответить ошибкой с кодом 30. reg_id и reg_date в этом случае не передаются.

Формирование подписи в запросах

Пример

Для запроса:

<?xml version="1.0" encoding="windows-1251"?>
<request>
 <params>
 <act>1</act>
 <account>758</account>
 </params>
 <sign>724870FC6BC385D7A29F4A259B6E9A6B</sign>
</request>


Нужно делать хэш для строки “<act>1</act><account>758</account>пароль”

Правила формирования подписи.

Предварительно Общество и Оператор обмениваются паролем. Используется одинаковый пароль для Общества и Оператора. В качестве подписи используется MD5-хэш в виде последовательности из 32 шестнадцатеричных цифр. Регистр букв значения не имеет.

К сформированному содержимому тэга params конкатенируется пароль. Содержимое тэга params берется как есть, вместе с вложенными тэгами, переносами строк. Для полученной строки генерируется подпись, которая передается в параметре sign.

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

Формирование подписи в ответах Поставщика

К сформированному содержимому тэга params конкатенируются подпись полученного ранее запроса и пароль. Подпись полученного ранее запроса должна быть в том регистре, в котором получена от Общества. Для полученной строки генерируется подпись, которая передается в параметре sign.

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

Сформированная подпись переводится в MD5-ХЭШ, также по протоколу БИСИС-3 рекомендуем использовать формат UTF-8

params_str = params_str + bs_params["sign"] + self.sign_key
sign_str = hashlib.md5(params_str.encode(DEFAULT_LOCALE)).hexdigest()

Коды ошибок

Коды ошибок, возвращаемых оператором

Код ошибки Описание ошибки
0 Успешное выполнение операции
1 Платеж уже был проведен
2 Платеж ожидает обработки у оператора
10 Запрос выполнен с неразрешенного адреса
11 Указаны не все необходимые параметры
12 Неверный формат параметров
13 Неверная цифровая подпись
20 Указанный номер счета отсутствует
21 Запрещены платежи на указанный номер счета
22 Запрещены платежи для указанной услуги
23 Запрещены платежи для указанного Общества
29 Неверные параметры платежа. В тэге err_text конкретное описание причины
30 Был другой платеж с указанным номером
40 Предварительная ошибка обработки платежа
41 Окончательная ошибка обработки платежа
80 Отказ на возврат платежа, в тэге err_text причина отказа.
90 Временная техническая ошибка
99 Прочие ошибки Поставщика. В тэге err_text указывается описание причины

Формат реестра

В информационный реестр платежей включаются все платежи, принятые Обществом для передачи Поставщику за прошедшие сутки. Платежи выбираются по дате учета Общества – agent_date. Реестр высылается Обществом до 12 часов следующих суток по часовому поясу Общества. Реестр высылается по почте. Поставщик проводит сверку платежей, принятых в течение контрольных суток, с платежами в реестре.

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

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

Формат реестра.

Реестр платежей представляет собой XML-файл в кодировке windows-1251.

Пример реестра платежей:

<?xml version="1.0" encoding="windows-1251"?>
<registry format=”P03” form_date=”2011-05-13 12:00:00”>
 <reg_date>2011-05-12</reg_date>
 <agent_name>ООО Общество</agent_name>
 <prov_name>ООО Оператор</prov_name>
 <pays>
 <pay agent_date=”2011-05-12 11:22:33” pay_id=”2345” pay_date=”2011-05-12 11:00:12”
account=”54321” pay_amount=”10000” serv_code=”123/1” serv_name=”Интернет” reg_id=”98765”
err_code=”0” note=”” />
 <pay agent_date=”2011-05-12 11:22:35” pay_id=”2346” pay_date=”2011-05-12 11:00:17”
account=”65432” pay_amount=”20000” serv_code=”123/1” serv_name=”Интернет” reg_id=”98767”
err_code=”99” note=”Ошибкаподключенияксерверуоператора”/>
…
</pays>
</registry>

Элементы реестра:

Имя файла итогового реестра формируется следующим образом:

bs-Код-YYYYMMDD.xml

Реестр отправляется отдельным сообщением электронной почты в виде вложения.

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

Пример 1

function getTagContent(string request, string tag) return string
{
string beginTag = "<" + tag + ">";
string endTag = "</" + tag + ">";
int p1 = pos(request, beginTag); //позиция первого тэга
if (p1 > 0)
{
p1 = p1 + length(beginTag); //смещение на начало содержимого
int p2 = pos(request, endTag); //позиция конечного тэга
if (p2 > p1)
return SubString(request, p1, p2 - p1); //выбор содержимого
}
return "";
}

Пример 2

function getTagContent($string, $tagname)
{
$pattern = "|<".$tagname.">(.+)</".$tagname."|si";
preg_match($pattern, $string, $matches);
return $matches[1];
}

Пример 3

<html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
 <title>Тест протокола БС</title>
 </head>
 <body>
 <form name="text" action="https://ваш адрес" method="post">
 XML-запрос:
 <br> <textarea name="params" rows="20" cols="80"></textarea>
 <br> <br>
 <input type="submit" value="Отправить">
 <input type="reset" value="Очистить">
 </form>
 </body>
</html>

XML используется с ограничениями, без атрибутов (кроме реестра). Для извлечения данных нет необходимости использовать парсер, достаточно использовать функцию.

Пример функции в примере 1

Либо регулярные выражения. Более подробно в примере 2

Так же, вы можете тестировать себя из браузера. Создайте html-файл с текстовым полем, вставляйте в поле XML-запросы и отправляйте.

Подробней в примере 3.

Спецификация №2

Так же именуемая Kiberplat

Позволяет Вывести на сайт ckassa.ru оплату услуг вашей организации, добавить на ваш сайт, либо ЛК специальную кнопку оплаты ваших услуг.

Предоставлено общее описание. Что конкретно будет передаваться в запросах и ответах определяется условиями договора.

Требования

Требования к интерфейсу поставщика:

Параметры запросов

Пример запроса-ответа поиска Плательщика по номеру телефона

Запрос:
https://<host>/<path>?ACTION=check&ACCOUNT=8462333333

Ответ:
<?xml version=”1.0” encoding=”windows-1251”?>
<response>
<CODE>0</CODE>
<MESSAGE>ОК</MESSAGE>
<FIO>Иванов Иван Иванович</FIO>
<ADDRESS>Москва</ADDRESS>
<ACCOUNT_BALANCE>-34.27</ACCOUNT_BALANCE>
</response>

Запрос:
https://<host>/<path>?ACTION=check&ACCOUNT=24

Ответ:
<?xml version=”1.0” encoding=”windows-1251”?>
<response>
<CODE>3</CODE>
<MESSAGE>Абонент не найден</MESSAGE>
</response>

Атрибуты ответа

Примеры запросов - ответов создания транзакции платежа

Запрос: 
https://<host>/<path>?ACTION=payment&ACCOUNT=8462333333&AMOUNT=340.24&PAY_ID=11223344&PAY_DATE=12.12.2005_12:45:18

Ответ: 
<?xml version=”1.0” encoding=”windows-1251”?>
<response>
<CODE>0</CODE>
<MESSAGE></MESSAGE>
<REG_DATE>12.12.2005_12:46:03</REG_DATE>
</response>

Запрос: 
https://<host>/<path>?ACTION=payment&ACCOUNT=8462333333&TYPE=15&AMOUNT=340.24&PAY_ID=11223344&PAY_DATE=12.12..2005_12:45:18

Ответ:
<?xml version=”1.0” encoding=”windows-1251”?>
<response>
<CODE>6</CODE>
<MESSAGE>Не верное значение даты платежа</MESSAGE>
</response>

Какой должен быть формат ответа сервера Поставщика:

Ответы сервера Поставщика возвращаются в виде XML-сообщений. Атрибут encoding должен иметь значение windows-1251 и соответствовать кодировке, используемой в XML-сообщении.

Рассмотрим атрибуты, используемые в ответах сервера Поставщика на запросы Общества.

Коды ответов

Ниже приведены возможные значения кодов возврата (атрибут - CODE)

Код ответа Значение check/payment
-1 Внутренняя ошибка организации + / +
0 Успешное завершение операции. Для операции проверки состояния транзакции это означает, что транзакция подтверждена и платежи в системе Поставщика были успешно созданы + / +
2 Неизвестный тип запроса. Неизвестное значение поля ACTION + / +
3 Плательщик не найден + / +
4 Неверная сумма платежа. Недопустимое значение для поля платежа (AMOUNT) - / +
5 Неверное значение идентификатора транзакции. Недопустимое значение поля идентификатора платѐжной транзакции в платѐжной системе (PAY_ID) - / +
6 Неверное значение даты. Недопустимое значение поля даты платежа (PAY_DATE) - / +
8 Дублирование транзакции. Транзакция с указанным идентификатором уже была введена в систему - / +
12 Транзакция не подтверждена - / -

Шаблоны ответов

Ответ сервера Поставщика на запрос проверки номера (check) должен подчиняться следующему шаблону DTD:

<?xml version=”1.0” encoding=”windows-1251”?>

<!DOCTYPE response [

<!ELEMENT response (CODE, MESSAGE, FIO,ADDRESS, ACCOUNT_BALANCE)>

]>

Ответ сервера Поставщика на запрос создания транзакции платежа (payment) должен подчиняться следующему шаблону DTD:

<?xml version=”1.0” encoding=”windows-1251”?>

<!DOCTYPE response [

<!ELEMENT response (CODE, MESSAGE, REG_DATE)>

]>

Ответ сервера Поставщика на запрос подтверждения транзакции (commit) должен подчиняться следующему шаблону DTD

<?xml version=”1.0” encoding=”windows-1251”?>

<!DOCTYPE response [

<!ELEMENT response (CODE, MESSAGE, REG_DATE, PAY_ID_EXT*)>

] >

Спецификация №3

Также именуемая ОСМП

Совместимость с биллингами-партнерами:

Требования к интерфейсу Поставщика

Основные принципы работы интерфейса

Каждый платеж Общества имеет уникальный идентификатор, который передается Поставщику в переменной txn_id – это целое число длиной до 20 знаков. По этому идентификатору производится дальнейшая сверка взаиморасчетов и решение спорных вопросов.

Сумма платежа принимается от Плательщика и передается Поставщику в рублях в переменной sum – это дробное число с точностью до сотых. В качестве разделителя используется «.» (точка). Если сумма представляет целое число, то оно все равно дополняется точкой и нулями, например – «152.00»

В запросе на добавление платежа Общество передает дату платежа (под датой платежа в системе подразумевается дата получения запроса от клиента) в переменной txn_date – дата в формате ГГГГММДДЧЧММСС. Эту дату необходимо использовать для проведения бухгалтерских взаиморасчетов. Так как у Общества учет платежей ведется по дате получения запроса от Плательщика, то и расчеты с Поставщиком необходимо вести по этой дате.

Например:

Плательщик прислал Обществу запрос 31.12.2016 в 23:59:59, учитывая задержку на обработку данных и пересылку информации по каналам связи, Общество смогло отправить запрос Поставщику 01.01.2017 00:00:05, соответственно, платеж будет учтен в системе Поставщика в другом отчетном периоде. Это вызовет некоторые проблемы при проведении сверок. Чтобы избежать такой ситуации, Общество передает Принципалу дату, в которой нужно учитывать платеж.

Поставщик идентифицирует своего Плательщика по уникальному идентификатору (Идентификатор Плательщика). Перед отправкой Поставщику Идентификатор проходит проверку корректности в соответствии с регулярным выражением, которое должен предоставить Поставщик. Идентификатор Плательщика передается в переменной account – это строка, содержащая буквы, цифры и спецсимволы длиной до 200 символов.

Оплата услуг Поставщика производится системой в 2 этапа – проверка состояния Плательщика и, непосредственно, проведение платежа. Тип запроса передается Обществом в переменной command – это строка, принимающая значения check и pay. При проверке статуса (запрос check) Поставщик должен проверить наличие в своей базе абонента с указанным Идентификатором и выполнить внутренние проверки Идентификатора, суммы платежа в соответствии с принятой логикой пополнения лицевых счетов через платежные системы. При проведении платежа (запрос pay) Поставщик должен произвести пополнение баланса Плательщика.

Если любой из запросов Поставщику завершается ошибкой, то Поставщик возвращает код ошибки в соответствии с таблицей, приведенной Ниже . Все ошибки имеют признак фатальности. Для Общества фатальная ошибка означает, что повторная отправка запроса с теми же параметрами приведет к 100% повторению той же ошибки – следовательно, Общество прекращает обработку запроса и завершает его с ошибкой. Нефатальная ошибка означает для Общества, что повторение запроса с теми же параметрами через некоторый промежуток времени, возможно, приведет к успеху. Общество будет повторять запросы, завершающиеся нефатальной ошибкой, постоянно увеличивая интервал, пока операция не завершится успехом, или фатальной ошибкой, либо пока не истечет срок жизни запроса (24 часа). Отсутствие связи с сервером Поставщика является нефатальной ошибкой. Например, отсутствие в ответе элемента <result> (некорректный XML, страница Servicetemporarilyunavailable и т.д.) - является фатальной ошибкой. Запросы получают отказ с ошибкой 300 – Другая ошибка Поставщика

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

Структура XML ответа Поставщика

<?xml version="1.0" encoding="UTF-8"?>
<response>
<osmp_txn_id></osmp_txn_id>
<prv_txn></prv_txn>
<sum></sum>
<result></result>
<comment></comment>
</response>

Где:

Коды ответов

При обработке запросов от системы Общества, Поставщик должен сопоставить все возникающие в его приложении ошибки с приведенным ниже списком и возвращать соответствующие коды в элементе <result>

Код Значение Фатальность
0 Все ОК -
1 Временная ошибка. Повторите запрос позже -
4 Неверный формат идентификатора Плательщика +
5 Идентификатор Плательщика не найден (Ошиблись номером) +
7 Прием платежа запрещен Поставщиком +
8 Прием платежа запрещен по техническим причинам +
79 Счет Плательщика не активен +
90 Проведение платежа не окончено +
241 Сумма слишком мала +
242 Сумма слишком велика +
243 Невозможно проверить состояние счета +
300 Другая ошибка Поставщика +

Примеры

Пример запроса/ответа "check" от Поставщика

Запрос должен выглядеть так:
https://service.someprovider.ru:8443/payment_app.cgi?command=check&txn_id=1234567&account=4957835959&sum=10.45

Ответ Поставщика должен выглядеть так:
<?xml version="1.0" encoding="UTF-8"?>
<response>
<osmp_txn_id>1234567</osmp_txn_id>
<result>0</result>
</response>\

Или так:
<?xml version="1.0" encoding="UTF-8"?>
<response>
<osmp_txn_id>1234567</osmp_txn_id>
<result>0</result>
<comment>account exists</comment>
</response>

Пример запроса на проверку состояния счета Плательщика

Платежное приложение Поставщика payment_app.cgi, располагается по адресу service.someprv.ru, сервер поддерживает HTTPS соединения на порт 8443. Для проверки состояния Плательщика, Общество генерирует запрос, показанный в примере check

Строка запроса содержит переменные:

Возвращение result=0 на запрос check свидетельствует о том, что лицевой счет Плательщика с соответствующим ему номером osmp_txn_id может быть пополнен на сумму, указанную в запросе. После успешной проверки состояния счета Плательщика система переходит к формированию и отправке запроса на пополнение баланса (запрос pay).

Пример запроса/ответа "pay" от Поставщика


Запрос должен выглядеть так:
https://service.someprovider.ru:8443/payment_app.cgi?command=pay&txn_id=1234567&txn_date=20050815120133&account=4957835959&sum=10.45

Ответ Поставщика должен выглядеть так:
<?xml version="1.0" encoding="UTF-8"?>
<response>
<osmp_txn_id>1234567</osmp_txn_id>
<prv_txn>2016</prv_txn>
<sum>10.45</sum>
<result>0</result>
</response>

Или так:
<?xml version="1.0" encoding="UTF-8"?>
<response>
<osmp_txn_id>1234567</osmp_txn_id>
<prv_txn>2016</prv_txn>
<sum>10.45</sum>
<result>0</result>
<comment>OK</comment>
</response>

Пример запроса на пополнение лицевого счета

Запрос, показанный в примере запроса Поставщика "pay" содержит следующие переменные:

Возвращая result=0 на запрос pay, Поставщик сообщает об успешном завершении операции пополнения баланса. Система полностью завершает обработку данной транзакции

Пример передачи дополнительных параметров в запросе

<?xml version="1.0" encoding="UTF-8"?>
<response>
<result>0</result>
<osmp_txn_id>1001</osmp_txn_id>
<comment></comment>
<bisys_params>
<client_name>Иванов</client_name>
<balance>-200.00</balance>
</bisys_params>

SSL сертификат

ПОРЯДОК ИСПОЛЬЗОВАНИЯ SSL-СЕРТИФИКАТОВ

1. Поставщик предоставляет Обществу корневой сертификат Поставщика (для обеспечения доверия сертификатам, выданным Центром сертификации Поставщика) в виде, пригодном для установления его принадлежности Поставщику, то есть в виде base-64 кодированного файла формата PKCS#10 и на бумажном носителе, заверенном собственноручной подписью руководителя и оттиском печати Поставщика.

2. Полученный сертификат Поставщика вводится Обществом в действие, не позднее следующего рабочего дня после его предоставления Поставщиком на бумажном носителе.

3. При истечении срока действия корневого сертификата Поставщика, Поставщик не позднее, чем за 5 (пять) рабочих дней до окончания срока действия активного корневого сертификата предоставляет Обществу новый корневой сертификат в соответствии с п.1.

4. При компрометации или подозрении на компрометацию закрытого ключа сертификата Поставщика (т.е. при ознакомлении или подозрении на ознакомление неуполномоченного лица с закрытым ключом сертификата, а также при несанкционированном использовании или подозрении на несанкционированное использование закрытого ключа сертификата) Общество извещается в простой письменной форме о прекращении действия указанного сертификата. С момента уведомления Поставщик прекращает электронный документооборот с Обществом с использованием указанного сертификата.

5. Общество, после получения сообщения о компрометации сертификата, выводит соответствующий сертификат из действия в максимально короткие сроки, но не позднее следующего рабочего дня после получения сообщения о компрометации.

6. Клиент имеет право в любое время производить замену собственных сертификатов.

<>