Описание объекта carddata:
| Параметр | Описание | Тип | Обязательный * |
|---|---|---|---|
| cvv | CVV/CVC код | string | Нет * |
| cardNumber | Номер карты, наличие пробелов не имеет значения | string | Не обязательный, если поле привязано в форме |
| expDateMonth | Срок действия карты – месяц | string | Не обязательный, если поле привязано в форме или передано поле expDateMonthYear |
| expDateYear | Срок дейcтвия карты – год | string | Не обязательный, если поле привязано в форме или переданы поля expDateMonth и expDateYear |
| expDateMonthYear | Срок действия карты, все символы за исключением цифр игнорируются. Если длина строки 2, 3 или 5 символов то первая цифра воспринимается как месяц, оставшиеся как год. Если длина строки 4 или 6 символов то первые два трактуются как месяц, а оставшиеся как год. | string | Не обязательный, если поле привязано в форме или переданы поля expDateMonth и expDateYear |
| name | Имя владельца карты | string | Нет |
Api и доступные методы
Данные передаются в формате Json, методом POST на сервер Cloudpayments.
Пример запроса на оплату по криптограмме:
{ "Amount":10, "Currency":"RUB", "InvoiceId":"1234567", "IpAddress": "123.123.123.123", "Description":"Оплата товаров в example.com", "AccountId":"user_x", "Name":"CARDHOLDER NAME", // CardCryptogramPacket Обязательный параметр "CardCryptogramPacket":"01492500008719030128SMfLeYdKp5dSQVIiO5l6ZCJiPdel4uDjdFTTz1UnXY 3QaZcNOW8lmXg0H670MclS4lI qLkujKF4pR5Ri T/E04Ufq3t5ntMUVLuZ998DLm OVHV7FxIGR7snckpg47A73v7/y88Q5dxxvVZtDVi0qCcJAiZrgKLyLCqypnMfhjsgCEPF6d4OMzkgNQiynZvKysI2q xc9cL0 CMmQTUPytnxX52k9qLNZ55cnE8kuLvqSK TOG7Fz03moGcVvbb9XTg1oTDL4pl9rgkG3XvvTJOwol3JDxL1i6x VpaRxpLJg0Zd9/9xRJOBMGmwAxo8/xyvGuAj85sxLJL6fA==" "Payer": { "FirstName":"Тест", "LastName":"Тестов", "MiddleName":"Тестович", "Birth":"1955-02-24", "Address":"тестовый проезд дом тест", "Street":"Lenina", "City":"MO", "Country":"RU", "Phone":"123", "Postcode":"345" }
} |
Пример ответа (некорректный запрос):
- Аутентификация запросов;
- Идемпотентность API;
- Тестовый метод;
- Оплата по криптограмме;
- Обработка 3-D Secure;
- Оплата по токену (рекарринг);
- Подтверждение оплаты;
- Отмена оплаты;
- Возврат денег;
- Выплата по криптограмме;
- Выплата по токену;
- Просмотр транзакции;
- Проверка статуса платежа;
- Выгрузка списка транзакций;
- Выгрузка токенов;
- Создание подписки на рекуррентные платежи;
- Запрос информации о подписке;
- Поиск подписок;
- Изменение подписки на рекуррентные платежи;
- Отмена подписки на рекуррентные платежи;
- Создание счета для отправки по почте;
- Отмена созданного счета;
- Просмотр настроек уведомлений;
- Изменение настроек уведомлений;
- Запуск сессии для оплаты через Apple Pay.
Asv-сканирование
ASV-сканирование — автоматизированная проверка вашего сайта на наличие уязвимостей. Сканер проверяет наличие вирусов, известных уязвимостей, таких как XSS, SQL Injections и так далее. После чего составляет детальный отчет с инструкцией по устранению проблем, если они были обнаружены.
Использование сканера необходимо для приема платежей по технологии Checkout, для остальных инструментов — виджет, мобильный SDK, рекарринг и рекуррент — его использование не требуется.
Выбор вендора для сканирования остается на ваше усмотрение, но он должен быть из списка на сайте совета PCI. Если у вас нет предпочтений, мы рекомендуем использовать Trustwave — международную компанию, признанного лидера в информационной безопасности.
Cancel
Выполняется в случае, если платеж был отменен по вашей инициативе через API или личный кабинет.
Параметры передаются в теле запроса, список представлен в следующей таблице:
| Параметр | Формат | Применение | Описание |
|---|---|---|---|
| TransactionId | Целое число | Обязательный | Номер отмененной транзакции в системе |
| Amount | Numeric, точка в качестве разделителя, две цифры после точки | Обязательный | Сумма отмененной транзакции в валюте платежа |
| DateTime | yyyy-MM-dd HH:mm:ss | Обязательный | Дата/время отмены по временной зоне UTC |
| InvoiceId | String | Необязательный | Номер заказа отмененной операции |
| AccountId | String | Необязательный | Идентификатор пользователя отмененной операции |
| String | Необязательный | E-mail адрес плательщика | |
| Data | Json | Необязательный | Произвольный набор параметров, переданных в транзакцию |
В ответ на запрос система ожидает получить ответ в JSON-формате с обязательным параметром code:
Код определяет результат обработки сервером ТСП уведомления и может принимать единственное значение:
| Код | Значение |
|---|---|
| 0 | Возврат зарегистрирован |
Check
Выполняется после того, как держатель заполнил платежную форму и нажал кнопку «Оплатить».
Служит для контроля прохождения платежа: система отправляет запрос на адрес сайта ТСП с информацией об оплате, а сайт должен подтвердить или отклонить возможность принять платеж.
Параметры передаются в теле запроса, список представлен в следующей таблице:
В ответ на запрос система ожидает получить ответ в JSON-формате с обязательным параметром code:
Код определяет результат выполнения проверки возможности выполнить платеж и может принимать следующие значения:
| Код | Значение | Результат |
|---|---|---|
| 0 | Платеж может быть проведен | Система выполнит авторизацию платежа |
| 10 | Неверный номер заказа | Платеж будет отклонен |
| 11 | Некорректный AccountId | Платеж будет отклонен |
| 12 | Неверная сумма | Платеж будет отклонен |
| 13 | Платеж не может быть принят | Платеж будет отклонен |
| 20 | Платеж просрочен | Платеж будет отклонен, плательщик получит соответствующее уведомление |
Автоплатежи для благотворительных фондов
Платежное решение подходит для благотворительных фондов. Имя, фамилия, телефон, e-mail и любые другие данные с формы будут сохранены в виджете и переданы на ваш сервер через Pay-уведомление.
Код формы:
this.paySample4=function(){varwidget=newcp.CloudPayments();vardata={//данные дарителяname:$('#name-sample-4').val(),lastName:$('#lastName-sample-4').val(),phone:$('#phone-sample-4').val()};varauto=$('#recurrent-sample-4').is(':checked');//проверкаif(auto){//включаем подпискуdata.CloudPayments={recurrent:{interval:'Month',period:1}//один раз в месяц начиная со следующего месяца}}varamount=parseFloat($('#amount-sample-4').val());varaccountId=$('#email-sample-4').val();widget.charge({// optionspublicId:'test_api_00000000000000000000002',//id из личного кабинетаdescription:'Пожертвование в фонд ...',//назначениеamount:amount,//суммаcurrency:'RUB',//валютаaccountId:accountId,//идентификатор плательщика (обязательно для создания подписки)email:accountId,data:data},function(options){// success//действие при успешной оплате},function(reason,options){// fail//действие при неуспешной оплате});};$('#checkout-sample-4').click(paySample4);Автоплатежи для интернет-провайдеров
Платежное решение подходит для интернет-провайдеров, операторов связи и телекомов. Уведомления на проверку и регистрацию платежей могут быть настроены как в формате CloudPayments, так и в формате QIWI (ОСМП).
Код формы:
this.paySample3=function(){varwidget=newcp.CloudPayments();vardata={};varauto=$('#recurrent-sample-3').is(':checked');//проверкаif(auto){//включаем подпискуvardate=newDate();//текущая датаdate.setMonth(date.getMonth() 1);//следующий месяцdate.setDate(date.getDate()-1);//минус один деньvarrecurrent={interval:'Month',period:1,startDate:date};//один раз в месяц начиная со следующего месяца за минусом одного дняdata.CloudPayments={recurrent:recurrent}}varamount=parseFloat($('#amount-sample-3').val());varaccountId=$('#account-sample-3').val();widget.charge({// optionspublicId:'test_api_00000000000000000000002',//id из личного кабинетаdescription:'Пополнение счета абонента ' accountId,//назначениеamount:amount,//суммаcurrency:'RUB',//валютаaccountId:accountId,//идентификатор плательщика (обязательно для создания подписки)data:data},function(options){// success//действие при успешной оплате},function(reason,options){// fail//действие при неуспешной оплате});};$('#checkout-sample-3').click(paySample3);Виды операций
Система предполагает два вида операций: оплата и возврат.
- При оплате деньги перечисляются со счета держателя в пользу ТСП. В случае возврата — наоборот.
- Возврат выполняет ТСП, если покупатель хочет вернуть товар.
- Возврат всегда связан с операцией оплаты, сумма средств с которой будет возвращена держателю. Возвращать можно как всю сумму оплаты, так и ее часть. Деньги обычно возвращаются на карту держателя в тот же день, но иногда, в зависимости от банка-эмитента, могут идти до 3-х дней.
- Операцию оплаты, в отличие от возврата, можно отменить.
- Отмену оплаты выполняет ТСП в случае, если платеж был совершен с ошибкой: неверная сумма, технический сбой и т.д. Есть ограничение — отменить операцию можно только в случае использования двухстадийной схемы оплаты. Деньги при этом будут разблокированы на карте держателя практически мгновенно.
Возможные варианты
- Некорректно сформирован запрос:
success — false
message — описание ошибки - Транзакции отклонена:
success — false
model — информация о транзакции и код ошибки - Транзакции принята:
success — true
model — информация о транзакции
Пример запроса на оплату по токену:
Пример ответа:некорректный запрос
Пример ответа:транзакция отклонена. В поле ReasonCode код ошибки (см. справочник)
{"Model":{"ReasonCode":5051,"PublicId":"pk_**********************************","TerminalUrl":"http://test.test","TransactionId":891583633,"Amount":100,"Currency":"RUB","CurrencyCode":0,"PaymentAmount":100,"PaymentCurrency":"RUB","PaymentCurrencyCode":0,"InvoiceId":"1234567","AccountId":"user_x","Email":null,"Description":"Оплата товаров в example.com","JsonData":null,"CreatedDate":"/Date(1635154784619)/","PayoutDate":null,"PayoutDateIso":null,"PayoutAmount":null,"CreatedDateIso":"2021-10-25T09:39:44","AuthDate":null,"AuthDateIso":null,"ConfirmDate":null,"ConfirmDateIso":null,"AuthCode":null,"TestMode":true,"Rrn":null,"OriginalTransactionId":null,"FallBackScenarioDeclinedTransactionId":null,"IpAddress":"123.123.123.123","IpCountry":"CN","IpCity":"Beijing","IpRegion":"Beijing","IpDistrict":"Beijing","IpLatitude":39.9289,"IpLongitude":116.3883,"CardFirstSix":"400005","CardLastFour":"5556","CardExpDate":"12/25","CardType":"Visa","CardProduct":null,"CardCategory":null,"EscrowAccumulationId":null,"IssuerBankCountry":"US","Issuer":"ITS Bank","CardTypeCode":0,"Status":"Declined","StatusCode":5,"CultureName":"ru","Reason":"InsufficientFunds","CardHolderMessage":"Недостаточно средств на карте","Type":0,"Refunded":false,"Name":"CARDHOLDER NAME","Token":"tk_255c42192323f2e09ea17635302c3","SubscriptionId":null,"GatewayName":"Test","ApplePay":false,"AndroidPay":false,"WalletType":"","TotalFee":0},"Success":false,"Message":null}Пример ответа:транзакция принята
{"Model":{"ReasonCode":0,"PublicId":"pk_**************************","TerminalUrl":"http://test.test","TransactionId":897728064,"Amount":59,"Currency":"RUB","CurrencyCode":0,"PaymentAmount":59,"PaymentCurrency":"RUB","PaymentCurrencyCode":0,"InvoiceId":1234567,"AccountId":"user_x","Email":null,"Description":"Оплата товаров в example.com","JsonData":null,"CreatedDate":"/Date(1635562705992)/","PayoutDate":null,"PayoutDateIso":null,"PayoutAmount":null,"CreatedDateIso":"2021-10-30T02:58:25","AuthDate":"/Date(1635562706070)/","AuthDateIso":"2021-10-30T02:58:26","ConfirmDate":"/Date(1635562706070)/","ConfirmDateIso":"2021-10-30T02:58:26","AuthCode":"A1B2C3","TestMode":true,"Rrn":null,"OriginalTransactionId":null,"FallBackScenarioDeclinedTransactionId":null,"IpAddress":"87.251.91.164","IpCountry":"RU","IpCity":"Новосибирск","IpRegion":"Новосибирская область","IpDistrict":"Сибирский федеральный округ","IpLatitude":55.03923,"IpLongitude":82.927818,"CardFirstSix":"424242","CardLastFour":"4242","CardExpDate":"12/25","CardType":"Visa","CardProduct":"I","CardCategory":"Visa Infinite Infinite","EscrowAccumulationId":null,"IssuerBankCountry":"RU","Issuer":"CloudPayments","CardTypeCode":0,"Status":"Completed","StatusCode":3,"CultureName":"ru-RU","Reason":"Approved","CardHolderMessage":"Оплата успешно проведена","Type":0,"Refunded":false,"Name":"SER","Token":"success_1111a3e0-2428-48fb-a530-12815d90d0e8","SubscriptionId":null,"GatewayName":"Test","ApplePay":false,"AndroidPay":false,"WalletType":"","TotalFee":0},"Success":true,"Message":null}Длинная запись
Длинная запись для авиа (airline addendum) — расширенная информация о маршрутной квитанции, которая передается вместе с транзакцией на обработку в платежную систему. Использование длинной записи позволяет сократить риски мошеннических операций и снизить стоимость обработки платежа.
Длинная запись состоит из информации о маршрутной квитанции, информации о сегментах, то есть перелетах и информации о пассажирах.
Информация о маршрутной квитанции включает в себя:
| Параметр | Формат | Применение | Описание |
|---|---|---|---|
| BookingRef | String | Обязательный, если не указан номер билета | Номер брони |
| TicketNumber | String | Обязательный, если не указан номер брони | Номер билета |
Под сегментом понимается один авиаперелет: взлет и посадка. Необходимо указать все сегменты маршрута с перечнем следующих параметров:
| Параметр | Формат | Применение | Описание |
|---|---|---|---|
| FlightNumber | String | Обязательный | Номер рейса |
| DepartureDateTime | DateTime | Обязательный | Дата и время отправления |
| ArrivalDateTime | DateTime | Обязательный | Дата и время прибытия |
| OriginatingCountry | String | Обязательный | Страна вылета на русском или английском языке |
| OriginatingCity | String | Обязательный | Город вылета на русском или английском языке |
| OriginatingAirportCode | String(3) | Обязательный | Код аэропорта вылета — 3 буквы по классификации IATA |
| DestinationCountry | String | Обязательный | Страна прилета на русском или английском языке |
| DestinationCity | String | Обязательный | Город прилета на русском или английском языке |
| DestinationAirportCode | String(3) | Обязательный | Код аэропорта прилета — 3 буквы по классификации IATA |
Для передачи информации о пассажирах, необходимо по каждому указать имя и фамилию латиницей:
| Параметр | Формат | Применение | Описание |
|---|---|---|---|
| FirstName | String | Обязательный | Имя пассажира |
| LastName | String | Обязательный | Фамилия пассажира |
Длинную запись можно передать в систему в параметре AirlineAddendum при вызове метода оплаты через API или в ответе на запрос проверки платежа.
Пример формирования длинной записи:
{"TicketNumber":"390 5241025377","BookingRef":null,"Legs":[{"FlightNumber":"A3 971","DepartureDateTime":"2022-05-26T05:15:00","ArrivalDateTime":"2022-05-26T07:30:00","OriginatingCountry":"Россия","OriginatingCity":"Москва","OriginatingAirportCode":"DME","DestinationCountry":"Греция","DestinationCity":"Афины","DestinationAirportCode":"ATH"},{"FlightNumber":"A3 204","DepartureDateTime":"2022-05-26T09:45:00","ArrivalDateTime":"2022-05-26T10:50:00","OriginatingCountry":"Греция","OriginatingCity":"Афины","OriginatingAirportCode":"ATH","DestinationCountry":"Греция","DestinationCity":"Родос","DestinationAirportCode":"RHO"},{"FlightNumber":"A3 980","DepartureDateTime":"2022-06-06T09:00:00","ArrivalDateTime":"2022-06-06T13:45:00","OriginatingCountry":"Греция","OriginatingCity":"Родос","OriginatingAirportCode":"RHO","DestinationCountry":"Россия","DestinationCity":"Москва","DestinationAirportCode":"DME"}],"Passengers":[{"FirstName":"KONSTANTIN","LastName":"IVANOV"},{"FirstName":"JULIA","LastName":"IVANOVA"}]}Запуск и остановка регулярных платежей
Запуск рекуррентных платежей возможен в любое время после выполнения установочного платежа: в тот же момент, через неделю или через месяц. Ограничение только одно – интервал между регулярными платежами, а также между установочным и первым регулярным платежом не может превышать один год.
Пример: покупатель оплачивает первый месяц предоставления услуг через установочный платеж и дает согласие на ежемесячное списание с его карты начиная со второго месяца.Запуск регулярных платежей может быть выполнен через API или платежный виджет.
Если покупатель отказывается от дальнейших платежей, вы можете отменить подписку в любой момент:
Также плательщик может самостоятельно найти и отменить свои регулярные платежи на сайте системы CloudPayments.
Идемпотентность api
Идемпотентность — свойство API при повторном запросе выдавать тот же результат, что на первичный запрос без повторной обработки. Это значит, что вы можете отправить несколько запросов к системе с одинаковым идентификатором, при этом обработан будет только один успешный запрос, а все ответы будут идентичными.
Таким образом реализуется защита от сетевых ошибок, которые приводят к созданию дублированных записей и действий.Для включения идемпотентности необходимо в запросе к API передавать заголовок с ключом X-Request-ID, содержащий уникальный идентификатор.
Формирование идентификатора запроса остается на вашей стороне — это может быть guid, комбинация из номера заказа, даты и суммы или любое другое значение на ваше усмотрение.Каждый новый запрос, который необходимо обработать, должен включать новое значение X-Request-ID. Обработанный результат хранится в системе в течение 1 часа.
Коды временных зон
В таблице ниже представлены коды временных зон для преобразования времени.
| Код | Название |
|---|---|
| HST | (UTC-10:00) Гавайи |
| AKST | (UTC-09:00) Аляска |
| PST | (UTC-08:00) Тихоокеанское время (США и Канада) |
| MST | (UTC-07:00) Горное время (США и Канада) |
| CST | (UTC-06:00) Центральное время (США и Канада) |
| EST | (UTC-05:00) Восточное время (США и Канада) |
| AST | (UTC-04:00) Атлантическое время (Канада) |
| BRT | (UTC-03:00) Бразилия |
| UTC | (UTC) Время в формате UTC |
| GMT | (UTC) Дублин, Лиссабон, Лондон, Эдинбург |
| CET | (UTC 01:00) Амстердам, Берлин, Берн, Вена, Рим, Стокгольм |
| CET | (UTC 01:00) Белград, Братислава, Будапешт, Любляна, Прага |
| CET | (UTC 01:00) Брюссель, Копенгаген, Мадрид, Париж |
| CET | (UTC 01:00) Варшава, Загреб, Сараево, Скопье |
| EET | (UTC 02:00) Афины, Бухарест |
| EET | (UTC 02:00) Вильнюс, Киев, Рига, София, Таллин, Хельсинки |
| EET | (UTC 02:00) Восточная Европа |
| EET | (UTC 02:00) Калининград (RTZ 1) |
| MSK | (UTC 03:00) Волгоград, Москва, Санкт-Петербург (RTZ 2) |
| MSK | (UTC 03:00) Минск |
| AZT | (UTC 04:00) Баку |
| AMT | (UTC 04:00) Ереван |
| SAMT | (UTC 04:00) Ижевск, Самара (RTZ 3) |
| GET | (UTC 04:00) Тбилиси |
| TJT | (UTC 05:00) Ашхабад, Ташкент |
| YEKT | (UTC 05:00) Екатеринбург (RTZ 4) |
| ALMT | (UTC 06:00) Астана, Алматы |
| NOVT | (UTC 06:00) Новосибирск (RTZ 5) |
| KRAT | (UTC 07:00) Красноярск (RTZ 6) |
| HKT | (UTC 08:00) Гонконг, Пекин, Урумчи, Чунцин |
| IRKT | (UTC 08:00) Иркутск (RTZ 7) |
| SGT | (UTC 08:00) Куала-Лумпур, Сингапур |
| ULAT | (UTC 08:00) Улан-Батор |
| YAKT | (UTC 09:00) Якутск (RTZ 8) |
| VLAT | (UTC 10:00) Владивосток, Магадан (RTZ 9) |
| SAKT | (UTC 11:00) Чокурдах (RTZ 10) |
| ANAT | (UTC 12:00) Анадырь, Петропавловск-Камчатский (RTZ 11) |
Коды ошибок
Ниже представлены коды ошибок, которые определяют причину отказа в проведении платежа.
Сообщение для плательщика виджет показывает самостоятельно, а в API за него отвечает параметр CardHolderMessage.
| Код | Название | Причина | Сообщение для плательщика |
|---|---|---|---|
| 5001 | Refer To Card Issuer | Отказ эмитента проводить онлайн-операцию | Свяжитесь с вашим банком или воспользуйтесь другой картой |
| 5003 | Invalid Merchant | Отказ эмитента проводить онлайн-операцию | Свяжитесь с вашим банком или воспользуйтесь другой картой |
| 5004 | Pick Up Card | Карта потеряна | Свяжитесь с вашим банком или воспользуйтесь другой картой |
| 5005 | Do Not Honor | Отказ эмитента без объяснения причин - неверно указан код CVV на картах Mastercard;- внутренние ограничения банка, выпустившего карту;- карта заблокирована или еще не активирована;- на карте не включены интернет-платежи или не подключен 3DS. | Свяжитесь с вашим банком или воспользуйтесь другой картой |
| 5006 | Error | Отказ сети проводить операцию или неправильный CVV-код | Проверьте правильность введенных данных карты или воспользуйтесь другой картой |
| 5007 | Pick Up Card Special Conditions | Карта потеряна | Свяжитесь с вашим банком или воспользуйтесь другой картой |
| 5012 | Invalid Transaction | Карта не предназначена для онлайн-платежей | Воспользуйтесь другой картой или свяжитесь с банком, выпустившим карту |
| 5013 | Amount Error | Слишком маленькая или слишком большая сумма операции | Проверьте корректность суммы |
| 5014 | Invalid Card Number | Некорректный номер карты | Проверьте правильность введенных данных карты или воспользуйтесь другой картой |
| 5015 | No Such Issuer | Эмитент не найден | Проверьте правильность введенных данных карты или воспользуйтесь другой картой |
| 5019 | Transaction Error | Отказ эмитента без объяснения причин - неверно указан код CVV на картах Mastercard;- внутренние ограничения банка, выпустившего карту;- карта заблокирована или еще не активирована;- на карте не включены интернет-платежи или не подключен 3DS. | Свяжитесь с вашим банком или воспользуйтесь другой картой |
| 5030 | Format Error | Ошибка на стороне эквайера — неверно сформирована транзакция | Повторите попытку позже |
| 5031 | Bank Not Supported By Switch | Неизвестный эмитент карты | Воспользуйтесь другой картой |
| 5033 | Expired Card Pickup | Истек срок утери карты | Свяжитесь с вашим банком или воспользуйтесь другой картой |
| 5034 | Suspected Fraud | Отказ эмитента — подозрение на мошенничество | Свяжитесь с вашим банком или воспользуйтесь другой картой |
| 5036 | Restricted Card | Карта не предназначена для платежей | Платежи для этой карты запрещены. Попробуйте другую карту |
| 5041 | Lost Card | Карта потеряна | Свяжитесь с вашим банком или воспользуйтесь другой картой |
| 5043 | Stolen Card | Карта украдена | Свяжитесь с вашим банком или воспользуйтесь другой картой |
| 5051 | Insufficient Funds | Недостаточно средств | Недостаточно средств на карте |
| 5054 | Expired Card | Карта просрочена или неверно указан срок действия | Проверьте правильность введенных данных карты или воспользуйтесь другой картой |
| 5057 | Transaction Not Permitted | Ограничение на карте — внутренние ограничения банка, выпустившего карту;— карта заблокирована или еще не активирована;— на карте не включены интернет-платежи или не подключен 3DS. | Свяжитесь с вашим банком или воспользуйтесь другой картой |
| 5059 | Suspected Fraud Decline | Транзакция была отклонена банком по подозрению в мошенничестве | Свяжитесь с банком или воспользуйтесь другой картой |
| 5062 | Restricted Card 2 | Карта не предназначена для платежей | Платежи для этой карты запрещены. Попробуйте другую карту |
| 5063 | Security Violation | Карта заблокирована из-за нарушений безопасности | Воспользуйтесь другой картой |
| 5065 | Exceed Withdrawal Frequency | Превышен лимит операций по карте | Свяжитесь с вашим банком или воспользуйтесь другой картой |
| 5082 | Incorrect CVV | Неверный CVV-код | Неверно указан код CVV |
| 5091 | Timeout | Эмитент недоступен | Повторите попытку позже или воспользуйтесь другой картой |
| 5092 | Cannot Reach Network | Эмитент недоступен | Повторите попытку позже или воспользуйтесь другой картой |
| 5096 | System Error | Ошибка банка-эквайера или сети | Повторите попытку позже |
| 5204 | Unable To Process | Операция не может быть обработана по прочим причинам | Свяжитесь с вашим банком или воспользуйтесь другой картой |
| 5206 | Authentication failed | 3-D Secure авторизация не пройдена | Свяжитесь с вашим банком или воспользуйтесь другой картой |
| 5207 | Authentication unavailable | 3-D Secure авторизация недоступна | Свяжитесь с вашим банком или воспользуйтесь другой картой |
| 5300 | Anti Fraud | Лимиты эквайера на проведение операций | Воспользуйтесь другой картой |
Локализация виджета
По умолчанию мы отображаем виджет на русском языке. Для вызова виджета на других языках передайте в параметрах инициализации виджета параметр language.
Список поддерживаемых языков:
| Язык | Часовой пояс | Код |
|---|---|---|
| Русский | MSK | ru-RU |
| Английский | CET | en-US |
| Немецкий | CET | de-DE |
| Латышский | CET | lv |
| Азербайджанский | AZT | az |
| Русский | ALMT | kk |
| Казахский | ALMT | kk-KZ |
| Украинский | EET | uk |
| Польский | CET | pl |
| Португальский | CET | pt |
| Чешский | CET | cs-CZ |
| Вьетнамский | ICT | vi-VN |
| Турецкий | TRT | tr-TR |
| Испанский | CET | es-ES |
| Итальянский | CET | it |
Обработка ошибок валидации карточных данных:
| Код ошибки | Описание |
|---|---|
| CardNumber_Empty | Пустой номер карты |
| CardNumber_Invalid | Некорректный номер карты |
| Cvv_Empty | Пустой CVV |
| Cvv_Invalid | Некорректный CVV |
| ExpDateMonthYear_Empty | Пустой год и месяц |
| ExpDateMonthYear_Invalid | Некорректный год и месяц |
| ExpDateMonth_Empty | Пустой месяц |
| ExpDateMonth_Invalid | Некорректный месяц |
| ExpDateYear_Empty | Пустой год |
| ExpDateYear_Invalid | Некорректный год |
| Name_Empty | Пустое имя * |
| Name_Invalid | Некорректное имя * |
| Name_TooLong | Слишком длинное имя * |
| Name_TooShort | Слишком короткое имя * |
Онлайн-фискализация
Компания CloudPayments предлагает своим партнерам облачное решение “под ключ” для онлайн-фискализации интернет-платежей, и в рамках соблюдения закона 54-ФЗ для любого бизнеса вы получите:
- выделенную онлайн-кассу, зарегистрированную в ФНС на вашу компанию;
- фискальный накопитель;
- подключение к оператору фискальных данных;
- автоматическое формирование чеков прихода и возврата в момент проведения расчета;
- полный отчет по операциям в личном кабинете.
Касса будет находиться в дата-центре 24/7, с подключением к интернету и питанию, работать круглосуточно и без перебоев. Наши сотрудники будут следить за ее техническим состоянием и своевременно менять фискальные накопители, а специальное программное обеспечение — корректировать ошибки, открывать и закрывать смену по расписанию, в “облаке” ставить чеки в очередь при большой нагрузке и гарантированно отправлять покупателям.
Оплата в рассрочку
Платежное решение подходит для компаний, продающих товары и услуги с возможностью оплаты целиком или в рассрочку.
Код формы:
this.paySample5=function(){varwidget=newcp.CloudPayments();varamount=12000;//по умолчанию 12000 рублей разомvardata={};varpayLater=$('#select-sample-5-later').is(':checked');//проверкаif(payLater){//включаем подпискуdata.CloudPayments={recurrent:{interval:'Month',period:1,amount:1000,maxPeriods:6}//6 месяцев по 1000 рублей начиная со следующего месяца};amount=6000;//сумма первого платежа - 6000 рублей.}widget.charge({// optionspublicId:'test_api_00000000000000000000002',//id из личного кабинетаdescription:'Оплата ...',//назначениеamount:amount,//суммаcurrency:'RUB',//валютаaccountId:'user@example.com',//идентификатор плательщика (обязательно для создания подписки)data:data},function(options){// success//действие при успешной оплате},function(reason,options){// fail//действие при неуспешной оплате});};$('#checkout-sample-5').click(paySample5);Параметры
Вызов функции pay c аргументом auth или charge определяет схему проведения оплаты:
- charge для одностадийной оплаты
- auth – для двухстайдийной оплаты
| Параметр | Формат | Применение | Описание |
|---|---|---|---|
| publicId | String | Обязательный | Идентификатор сайта, который находится в ЛК |
| amount | Float | Обязательный | Сумма оплаты |
| currency | String | Обязательный | Валюта: RUB/USD/EUR/GBP (см. справочник) |
| accountId | String | Обязательный для создания подписки | Идентификатор пользователя |
| description | String | Необязательный | Описание назначения оплаты в произвольном формате |
| invoiceId | String | Необязательный | Номер заказа или счета |
| String | Необязательный | E-mail адрес пользователя | |
| requireEmail | bool | Необязательный | Требование указать e-mail адрес пользователя в виджете |
| data | Json | Необязательный | Любые другие данные, которые будут связаны с транзакцией, в том числе инструкции для создания подписки или формирования онлайн-чека должны обёртываться в объект cloudpayments. Мы зарезервировали названия следующих параметров и отображаем их содержимое в транзакционной выгрузке в Личном Кабинете: name, firstName, middleName, lastName, nick, phone, address, comment, birthDate |
| skin | String | Необязательный | Выбор дизайна виджета. Возможные варианты: classic, modern, mini. По умолчанию стоит — classic |
| retryPayment | bool | Необязательный | Появление кнопки «Повторить платеж» при неудачном платеже. По умолчанию стоит true |
В случае успешной или неуспешной оплаты, можно определить поведение формы следующими параметрами:
| Параметр | Формат | Применение | Описание |
|---|---|---|---|
| onSuccess | Function или String | Необязательный | Указывается либо функция, либо адрес страницы сайта. В случае указания функции — она будет вызвана после успешного завершения оплаты и закрытия пользователем окна виджета. В случае указания адреса — пользователь будет направлен на указанную страницу. |
| onFail | Function или String | Необязательный | Указывается либо функция, либо адрес страницы сайта. В случае указания функции — она будет вызвана после неуспешного завершения платежа. В случае указания адреса — пользователь будет направлен на указанную страницу. |
| onComplete | Function | Необязательный | Указывается функция, которая будет вызвана, как только виджет получит ответ с результатом транзакции. Редиректы в этом методе делать нельзя. |
Платежи в один клик
Если вам нужно сохранять данные карт на стороне платежного шлюза для последующей оплаты в один клик без ввода карточных данных и без 3-D Secure, сценарий может быть следующим:
- На вашем сайте необходима авторизация пользователей с доступом в личный кабинет.
- При первой оплате предложите пользователю привязать карту, чтобы не вводить реквизиты при каждом платеже.
Если пользователь согласится, сохраните после оплаты в его профиле маску карты (тип и последние 4 цифры), а также токен. Параметры карты и токен система возвращает в Pay-уведомлении и через API.
- При последующих оплатах предлагайте пользователю оплатить с ранее привязанной карты.
Если пользователь выбирает ранее использованную карту — вызывайте метод оплаты по токену через API.
- Предоставьте пользователю возможность управлять своими картами.
Если пользователь не желает более платить с привязанной карты, удалите маску и токен из его профиля.
- Сделайте раздел с историей платежей, которая включает в себя как минимум дату и сумму оплаты.
Рекуррентные платежи
Рекуррентные платежи, также известные как платежи по подписке или «автоплатежи» — возможность выполнять регулярные списания денег с банковской карты покупателя без повторного ввода реквизитов карты и без участия плательщика для инициации очередного платежа.
Рекуррентные платежи всегда начинаются с первого, установочного платежа, для выполнения которого плательщик должен ввести реквизиты своей карты. Для последующих регулярных платежей обязательно нужно ознакомить держателя карты с графиком и получить его согласие на безакцептное списание.
Есть распространенное мнение, что задача рекуррентного биллинга сводится к тому, чтобы установить сумму, которая будет каждый месяц списываться с карты клиента. Выбор системы регулярных платежей при этом основан только на стоимости предоставляемых услуг.
В действительности — ситуация более сложная, потому как для качественного сервиса требуется намного больше функций и возможностей. Мы сделали все, чтобы в системе CloudPayments процедура запуска и обработки рекуррентных платежей стала максимально простой и гибкой.
Рекуррентные платежи (подписка)
После успешного завершения оплаты виджет может автоматически создавать подписку на рекуррентные платежи. Для это нужно добавить несколько параметров запуска:
| Параметр | Формат | Применение | Описание |
|---|---|---|---|
| Interval | String | Обязательный | Интервал. Возможные значения: Day, Week, Month |
| Period | Int | Обязательный | Период. В комбинации с интервалом, 1 Month значит раз в месяц, а 2 Week — раз в две недели. Должен быть больше 0 |
| MaxPeriods | Int | Необязательный | Максимальное количество платежей в подписке. По умолчанию стоит без ограничений. Если задаете количество, проверьте, чтобы оно было больше 0 |
| Amount | Numeric | Необязательный | Сумма регулярного платежа. По умолчанию совпадает с суммой первого, установочного платежа. Если указываете другую сумму, проверьте, чтобы она была больше 0 |
| StartDate | DateTime | Необязательный | Дата и время первого регулярного платежа. По умолчанию запуск произойдет через указанный интервал и период, например через месяц. Если указываете другую дату, то она должна стоять в будущем времени |
| CustomerReceipt | String | Необязательный | Данные для формирования онлайн-чека в регулярных платежах |
Параметры для запуска регулярных платежей необходимо добавить в объект data.СloudPayments.recurrent как в примере ниже::
this.pay=function(){varwidget=newcp.CloudPayments();varreceipt={Items:[//товарные позиции{label:'Наименование товара 3',//наименование товараprice:300.00,//ценаquantity:3.00,//количествоamount:900.00,//суммаvat:20,//ставка НДСmethod:0,// тег-1214 признак способа расчета - признак способа расчетаobject:0,// тег-1212 признак предмета расчета - признак предмета товара, работы, услуги, платежа, выплаты, иного предмета расчета}],taxationSystem:0,//система налогообложения; необязательный, если у вас одна система налогообложенияemail:'user@example.com',//e-mail покупателя, если нужно отправить письмо с чекомphone:'',//телефон покупателя в любом формате, если нужно отправить сообщение со ссылкой на чекisBso:false,//чек является бланком строгой отчетностиamounts:{electronic:900.00,// Сумма оплаты электронными деньгамиadvancePayment:0.00,// Сумма из предоплаты (зачетом аванса) (2 знака после запятой)credit:0.00,// Сумма постоплатой(в кредит) (2 знака после запятой)provision:0.00// Сумма оплаты встречным предоставлением (сертификаты, др. мат.ценности) (2 знака после запятой)}};vardata={};data.CloudPayments={CustomerReceipt:receipt,//чек для первого платежаrecurrent:{interval:'Month',period:1,customerReceipt:receipt//чек для регулярных платежей}};//создание ежемесячной подпискиwidget.charge({// optionspublicId:'test_api_00000000000000000000001',//id из личного кабинетаdescription:'Подписка на ежемесячный доступ к сайту example.com',//назначениеamount:1000,//суммаcurrency:'RUB',//валютаinvoiceId:'1234567',//номер заказа (необязательно)accountId:'user@example.com',//идентификатор плательщика (обязательно для создания подписки)data:data},function(options){// success//действие при успешной оплате},function(reason,options){// fail//действие при неуспешной оплате});};Обратите внимание, что создать подписку можно, указав параметр accountId, который может быть e-mail адресом, номером телефона или любым другим идентификатором плательщика.
Больше примеров создания рекуррентных платежей из виджета — в разделе “Сценарии интеграции”.
Самостоятельное размещение apple pay на сайте
Если вы хотите разместить кнопку Apple Pay непосредственно на вашем сайте по примеру ниже, а не через платёжный виджет, то следуйте дальнейшей инструкции.
Интеграция предполагает использование клиентской части (javascript) и серверной. На клиенте вы проверяете совместимость устройства и обрабатываете события: создание сессии, авторизация платежа, обработка платежа.
На серверной части необходимо выполнять вызовы API:
Запуск сессии Apple Pay;
Проведение оплаты по криптограмме с передачей Apple Pay токена в параметре CardCryptogramPacket;
Если вы хотите поддержать оплату через ApplePay с использование карт НСПК (МИР), вам необходимо убедиться что устройство поддерживает версию ApplePay > 11 и добавить в список поддерживаемых систем “мир“.
Пример js кода:
if(window.ApplePaySession){//проверка устройстваvarmerchantIdentifier='Ваш Apple Merchant ID';varpromise=ApplePaySession.canMakePaymentsWithActiveCard(merchantIdentifier);promise.then(function(canMakePayments){if(canMakePayments){$('#apple-pay').show();//кнопка Apple Pay}});}$('#apple-pay').click(function(){//обработчик кнопкиvarsupportedNetworksArray=["visa","mastercard"];if(ApplePaySession.supportsVersion(11)){supportedNetworksArray.push("mir");//Если устройство поддерживает - добавляем карты МИР}varrequest={// requiredShippingContactFields: ['email'], //Раскомментируйте, если вам нужен e-mail. Также можно запросить postalAddress, phone, name.countryCode:'RU',currencyCode:'RUB',supportedNetworks:supportedNetworksArray,merchantCapabilities:['supports3DS'],//Назначение платежа указывайте только латиницей!total:{label:'Test',amount:'1.00'},//назначение платежа и сумма}varsession=newApplePaySession(1,request);// обработчик события для создания merchant session.session.onvalidatemerchant=function(event){vardata={validationUrl:event.validationURL};// отправьте запрос на ваш сервер, а далее запросите API CloudPayments// для запуска сессии$.post("/ApplePay/StartSession",data).then(function(result){session.completeMerchantValidation(result.Model);});};// обработчик события авторизации платежаsession.onpaymentauthorized=function(event){//var email = event.payment.shippingContact.emailAddress; //если был запрошен адрес e-mail//var phone = event.payment.shippingContact.phoneNumber; //если был запрошен телефон//все варианты смотрите на сайте https://developer.apple.com/reference/applepayjs/paymentcontactvardata={cryptogram:JSON.stringify(event.payment.token)};//передайте полученный токен на бэкэнд сервера и оттуда выполните //запрос оплаты по криптограмме https://developers.cloudpayments.ru/#oplata-po-kriptogramme,//используя этот токен в параметре CardCryptogramPacket$.post("/ApplePay/Pay",data).then(function(result){varstatus;if(result.Success){status=ApplePaySession.STATUS_SUCCESS;}else{status=ApplePaySession.STATUS_FAILURE;}session.completePayment(status);});};// Начало сессии Apple Paysession.begin();});Список валют
Наши партнеры принимают платежи в рублях, американских долларах, евро, фунтах стерлингов и 54 других валютах мира.
В таблице ниже представлены названия валют и их коды для использования в параметре currencyвиджета или API.
| Название | Код |
|---|---|
| Российский рубль | RUB |
| Евро | EUR |
| Доллар США | USD |
| Фунт стерлингов | GBP |
| Украинская гривна | UAH |
| Белорусский рубль (не используется с 1 июля 2022) | BYR |
| Белорусский рубль | BYN |
| Казахский тенге | KZT |
| Азербайджанский манат | AZN |
| Швейцарский франк | CHF |
| Чешская крона | CZK |
| Канадский доллар | CAD |
| Польский злотый | PLN |
| Шведская крона | SEK |
| Турецкая лира | TRY |
| Китайский юань | CNY |
| Индийская рупия | INR |
| Бразильский реал | BRL |
| Южноафриканский рэнд | ZAR |
| Узбекский сум | UZS |
| Болгарский лев | BGN |
| Румынский лей | RON |
| Австралийский доллар | AUD |
| Гонконгский доллар | HKD |
| Грузинский лари | GEL |
| Киргизский сом | KGS |
| Армянский драм | AMD |
| Дирхам ОАЭ | AED |
Схема интеграции для api checkout:
Оплата (первичное создание накопления)
Необходимо использовать запрос payments/cards/charge (либо auth), где в теле запроса в JsonData нужно передать “StartAccumulation”: true:
В ответ на запрос будет получен уникальный EscrowAccumulationId.
{"Model":{"ReasonCode":0,"PublicId":"pk_71efb26a18397ec61b755221123cc","TerminalUrl":"https://example.com","TransactionId":10649404,"Amount":215,"Currency":"RUB","CurrencyCode":0,"PaymentAmount":215,"PaymentCurrency":"RUB","PaymentCurrencyCode":0,"InvoiceId":null,"AccountId":null,"Email":null,"Description":null,"JsonData":"{"Phone": " 74951234567","Cloudpayments": {"Escrow": { "StartAccumulation": true}}}","CreatedDate":"/Date(1640787010601)/","PayoutDate":null,"PayoutDateIso":null,"PayoutAmount":null,"CreatedDateIso":"2021-12-29T14:10:10","AuthDate":"/Date(1640787010877)/","AuthDateIso":"2021-12-29T14:10:10","ConfirmDate":null,"ConfirmDateIso":null,"AuthCode":"A1B2C3","TestMode":true,"Rrn":null,"OriginalTransactionId":null,"FallBackScenarioDeclinedTransactionId":null,"IpAddress":"127.0.0.1","IpCountry":"RU","IpCity":"","IpRegion":" ","IpDistrict":" ","IpLatitude":1.03923,"IpLongitude":1.927818,"CardFirstSix":"411111","CardLastFour":"1111","CardExpDate":"11/23","CardType":"Visa","CardProduct":"C","CardCategory":"Visa Signature (Signature)","EscrowAccumulationId":"365b6942-94e8-4c5b-aff5-392dc1a51c28","IssuerBankCountry":"RU","Issuer":"CloudPayments","CardTypeCode":0,"Status":"Authorized","StatusCode":2,"CultureName":"ru","Reason":"Approved","CardHolderMessage":" ","Type":0,"Refunded":false,"Name":null,"Token":null,"SubscriptionId":null,"GatewayName":"Test","ApplePay":false,"AndroidPay":false,"WalletType":"","TotalFee":0},"Success":true,"Message":null}Оплата (по созданному накоплению)
Для последующих запросов (оплат), в рамках созданной безопасной сделки, необходимо добавить AccumulationId в JsonData запроса payments/cards/charge с указанием “StartAccumulation”: false:
Ответ:
{"Model":{"ReasonCode":0,"PublicId":"pk_71efb26a18397ec61b755221123cc","TerminalUrl":"https://example.com","TransactionId":10649405,"Amount":215,"Currency":"RUB","CurrencyCode":0,"PaymentAmount":215,"PaymentCurrency":"RUB","PaymentCurrencyCode":0,"InvoiceId":null,"AccountId":null,"Email":null,"Description":null,"JsonData":"{"Phone": " 74951234567","Cloudpayments": {"Escrow": { "StartAccumulation": false, "AccumulationId": "365b6942-94e8-4c5b-aff5-392dc1a51c28"}}}","CreatedDate":"/Date(1640787317880)/","PayoutDate":null,"PayoutDateIso":null,"PayoutAmount":null,"CreatedDateIso":"2021-12-29T14:15:17","AuthDate":"/Date(1640787319410)/","AuthDateIso":"2021-12-29T14:15:19","ConfirmDate":null,"ConfirmDateIso":null,"AuthCode":"A1B2C3","TestMode":true,"Rrn":null,"OriginalTransactionId":null,"FallBackScenarioDeclinedTransactionId":null,"IpAddress":"127.0.0.1","IpCountry":"RU","IpCity":"","IpRegion":" ","IpDistrict":" ","IpLatitude":1.03923,"IpLongitude":1.927818,"CardFirstSix":"411111","CardLastFour":"1111","CardExpDate":"11/23","CardType":"Visa","CardProduct":"C","CardCategory":"Visa Signature (Signature)","EscrowAccumulationId":"365b6942-94e8-4c5b-aff5-392dc1a51c28","IssuerBankCountry":"RU","Issuer":"CloudPayments","CardTypeCode":0,"Status":"Authorized","StatusCode":2,"CultureName":"ru","Reason":"Approved","CardHolderMessage":" ","Type":0,"Refunded":false,"Name":null,"Token":null,"SubscriptionId":null,"GatewayName":"Test","ApplePay":false,"AndroidPay":false,"WalletType":"","TotalFee":0},"Success":true,"Message":null}Выплата
Для завершения сделки необходимо отправить запрос payments/token/topup с указанием AccumulationId и массива транзакций к выплате:
Массив транзакций оплаты для выплаты должен должен содержать только транзакции, которые проводились по терминалу оплаты с текущим AccumulationId.
Выплата будет осуществлена только по тем TransactionId, которые были указаны в TransactionIds в запросе payments/token/topup.
Термины и определения:
Плательщик – физическое лицо, которое отправляет денежные средства.Получатель – физическое лицо, которое получает денежные средства.Площадка – посредник, который выступает гарантом безопасности сделки, принимает решение о выполнении сторонами своих обязательств.
В спорных случаях выступает Арбитром в спорах и несет финансовую ответственность.Сделка – процесс приобретения товара/услуги одним физическим лицом у другого.Оплата – приобретение товара/услуги у физического лица.Выплата – получение вознаграждения физического лица, оказавшего услугу/продавцу товара.
Widget – всплывающая форма для ввода реквизитов карты и e-mail адреса плательщика.Checkout – скрипт, который прописывается на сайте, собирает из указанной формы карточные данные и составляет из них криптограмму для оплаты через API.
Тестирование
Сразу после создания нового сайта в ЛК он находится в тестовом режиме работы — это значит, что платежи и прочие операции будут проходить в режиме эмуляции.
Для тестирования можно использовать карты:
| Тип | Номер карты | Результат оплаты | Результат оплаты по токену |
|---|---|---|---|
| Карта Visa с 3-D Secure | 4242 4242 4242 4242 | Успешный результат | Успешный результат |
| Карта Mastercard с 3-D Secure | 5555 5555 5555 4444 | Успешный результат | Успешный результат |
| Карта Visa с 3-D Secure | 4012 8888 8888 1881 | Недостаточно средств на карте | — |
| Карта Mastercard с 3-D Secure | 5105 1051 0510 5100 | Недостаточно средств на карте | — |
| Карта Visa без 3-D Secure | 4111 1111 1111 1111 | Успешный результат | Недостаточно средств на карте |
| Карта Mastercard без 3-D Secure | 5200 8282 8282 8210 | Успешный результат | Недостаточно средств на карте |
| Карта Visa без 3-D Secure | 4000 0566 5566 5556 | Недостаточно средств на карте | — |
| Карта Mastercard без 3-D Secure | 5404 0000 0000 0043 | Недостаточно средств на карте | — |
Уведомления
Самым заметным отличием сервиса Cloudpayments является возможность широкой настройки Callback(или Webhook) уведомлений на адрес вашего проекта о различных событиях происходящих в момент оплаты. Это позволяет реализовать очень гибкий функционал взаимодействия вашего проекта с сервисом приема платежей, а также с вашим клиентом(пользователем производящим оплату).
Поддерживаются уведомления следующих типов:
Check уведомление — Запрос на проверку платежаPay уведомление — Уведомление о принятом платежеFail уведомление — Уведомление о об отклоненном платежеConfirm уведомление — Уведомление о проверке платежаRefund уведомление — Уведомление о возврате платежаReceipt уведомление — Уведомление об онлайн чекеKkt уведомление — Уведомление об статусе кассыRecurrent уведомление — Уведомление об изменении статуса подпискиCancel уведомление — Уведомление об отмене платежа
На стороне вашего проекта, при получении уведомлений, рекомендуется проверять статус, сумму, дату и ID клиента.
Скрипт обработки Pay уведомления(пример):
Условия успешного создания чека
- В чеке есть хотя бы одна позиция;
- Во всех позициях указано наименование;
- Цена и сумма позиции не отрицательная;
- Общая сумма всех позиций больше нуля;
- Входная строка наименования товара длиной не более 128 символов, более длинные строки будут обрезаны;
- Указанная система налогообложения должна совпадать с одним из вариантов, зарегистрированных в ККТ;
- Числовые значения переданы с точностью не более двух знаков после запятой;
- Передан ИНН, если он требуется в документации.
Данные для онлайн-чека можно передавать в параметры виджета, при оплате по криптограмме или токену, при подтверждении оплаты, при проведении возврата, а также через специальный API кассы.
Формат передачи данных для онлайн-чека
Данные для чека необходимо передавать в формате json по примеру ниже:
varreceipt={"Items":[//товарные позиции{"label":"Наименование товара 1",//наименование товара"price":100.00,//цена"quantity":1.00,//количество"amount":100.00,//сумма"vat":0,//ставка НДС"method":0,// тег-1214 признак способа расчета - признак способа расчета"object":0,// тег-1212 признак предмета расчета - признак предмета товара, работы, услуги, платежа, выплаты, иного предмета расчета"measurementUnit":"шт"//единица измерения},{"label":"Наименование товара 2",//наименование товара"price":200.00,//цена"quantity":2.00,//количество"amount":300.00,//сумма со скидкой 25%"vat":10,//ставка НДС"method":0,// тег-1214 признак способа расчета - признак способа расчета"object":0,// тег-1212 признак предмета расчета - признак предмета товара, работы, услуги, платежа, выплаты, иного предмета расчета"measurementUnit":"шт",//единица измерения"excise":0.01,// тег-1229 сумма акциза"countryOriginCode":"156",// тег-1230 цифровой код страны происхождения товара в соответствии с Общероссийским классификатором стран мира 3 симв. "customsDeclarationNumber":"54180656/1345865/3435625/23",// тег-1231 регистрационный номер таможенной декларации 32 симв. "ProductCodeData"://данные маркировки товара{"CodeProductNomenclature":"3031303239303030303033343....a78495a4f6672754744773d3d"//HEX представление штрих/бар кода маркировки целиком (Только для касс Микропэй)}},{"label":"Наименование товара 3",//наименование товара"price":300.00,//цена"quantity":3.00,//количество"amount":900.00,//сумма"vat":20,//ставка НДС"method":0,// тег-1214 признак способа расчета - признак способа расчета"object":0,// тег-1212 признак предмета расчета - признак предмета товара, работы, услуги, платежа, выплаты, иного предмета расчета"measurementUnit":"шт",//единица измерения"AgentSign":6,//признак агента, тег ОФД 1057, 1222"AgentData":{//данные агента, тег офд 1223"AgentOperationName":null,// наименование операции банковского платежного агента или банковского платежного субагента, тег ОФД 1044"PaymentAgentPhone":null,// телефон платежного агента, тег ОФД 1073"PaymentReceiverOperatorPhone":null,// телефон оператора по приему платежей, тег ОФД 1074"TransferOperatorPhone":null,// телефон оператора перевода, тег ОФД 1075"TransferOperatorName":null,// наименование оператора перевода, тег ОФД 1026"TransferOperatorAddress":null,// адрес оператора перевода, тег ОФД 1005"TransferOperatorInn":null// ИНН оператора перевода, тег ОФД 1016},"PurveyorData":{//данные поставщика платежного агента, тег ОФД 1224"Phone":" 74951234567",// телефон поставщика, тег ОД 1171"Name":"ООО Ромашка",// наименование поставщика, тег ОФД 1225"Inn":"1234567890"// ИНН поставщика, тег ОФД 1226}}],"calculationPlace":"www.my.ru",//место осуществления расчёта, по умолчанию берется значение из кассы"taxationSystem":0,//система налогообложения; необязательный, если у вас одна система налогообложения"email":"user@example.com",//e-mail покупателя, если нужно отправить письмо с чеком"phone":"",//телефон покупателя в любом формате, если нужно отправить сообщение со ссылкой на чек"customerInfo":"",// тег-1227 Покупатель - наименование организации или фамилия, имя, отчество (при наличии), серия и номер паспорта покупателя (клиента)"customerInn":"7708806063",// тег-1228 ИНН покупателя "isBso":false,//чек является бланком строгой отчётности"AgentSign":null,//признак агента, тег ОФД 1057"amounts":{"electronic":1300.00,// Сумма оплаты электронными деньгами"advancePayment":0.00,// Сумма из предоплаты (зачетом аванса) (2 знака после запятой)"credit":0.00,// Сумма постоплатой(в кредит) (2 знака после запятой)"provision":0.00// Сумма оплаты встречным предоставлением (сертификаты, др. мат.ценности) (2 знака после запятой)}}vardata={//содержимое элемента data"CloudPayments":{"CustomerReceipt":receipt,//онлайн-чек}}Описание параметров для формирования объекта СustomerReceipt смотрите в документации сервиса CloudKassir.
NFC Эксперт