Перейти к содержанию

payments/cards/charge - Оплата по криптограмме (одностадийная)

  • HTTP-метод: POST
  • URL: /payments/cards/charge
  • Форма взаимодействия: Сервер-сервер
  • Формат тела запроса: application/json
  • Аутентификация: HTTP Basic Auth (PublicId / ApiSecret)
  • Назначение: оплата по криптограмме платёжных данных карты — результату шифрования данных карты скриптом checkout.js (см. Публичный ключ и checkout.js) на стороне мерчанта. Криптограмму нельзя использовать повторно. Сумма списывается сразу, без промежуточного холдирования — для холдирования используйте payments/cards/auth.

URL

1
https://cloud.wallet.kvell.group/payments/cards/charge
1
/payments/cards/charge

Структура запроса

Поле Тип Обяз. Описание
Amount decimal Сумма платежа. Разделитель точка, не менее 0.01.
IpAddress str IP-адрес плательщика.
CardCryptogramPacket str Криптограмма платёжных данных, полученная скриптом checkout.js.
Currency str Валюта: RUB/USD/EUR/GBP. По умолчанию RUB.
Name str Имя держателя карты латиницей.
PaymentUrl str Адрес страницы, с которой вызывается скрипт checkout.js.
InvoiceId str Номер счёта или заказа на стороне мерчанта.
Description str Описание оплаты в свободной форме.
CultureName str Язык уведомлений: ru-RU, en-US.
AccountId str Идентификатор плательщика на стороне мерчанта.
Email str E-mail плательщика, на который будет отправлена квитанция об оплате.
Payer object Данные плательщика: FirstName, LastName, MiddleName, Birth, Street, Address, City, Country, Phone, Postcode.
JsonData json Любые другие данные, которые будут связаны с транзакцией.
SaveCard bool Признак сохранения токена карты для последующей оплаты (см. payments/tokens/charge). По умолчанию false.
SplitData array Список товаров для товарного дробления платежа. Наше расширение — в спецификации CloudPayments отсутствует.

Структура ответа

Ответ содержит Success, Message и Model. Форма Model зависит от результата:

  • Требуется 3-D Secure или успешная оплатаModel содержит только служебные поля 3DS-челленджа (см. таблицу ниже); Success при этом равен false в обоих случаях.
  • Транзакция отклоненаModel содержит полную Модель транзакции с заполненным ReasonCode; Successfalse.
Поле Тип Описание
Model.TransactionId int Номер транзакции в системе.
Model.PaReq string Параметр для формы редиректа на 3DS-аутентификацию. Заполнен, только если требуется 3DS.
Model.AcsUrl string Адрес банка для прохождения 3DS. Заполнен, только если требуется 3DS.
Model.GoReq string Аналог PaReq для 3DS2 (если применимо).
Model.ThreeDsSessionData string Данные сессии для 3DS2.
Model.IFrameIsAllowed bool Можно ли встраивать форму 3DS в iframe.
Model.ThreeDsCallbackId string Идентификатор callback для 3DS2.

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
{
  "Amount": 10,
  "Currency": "RUB",
  "InvoiceId": "1234567",
  "IpAddress": "123.123.123.123",
  "Description": "Оплата товаров в example.com",
  "AccountId": "user_x",
  "Name": "CARDHOLDER NAME",
  "CardCryptogramPacket": "01492500008719030128SMfLeYdKp5dSQVIiO..."
}

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
{
  "Model": {
    "TransactionId": 891463508,
    "PaReq": "+/eyJNZXJjaGFudE5hbWUiOm51bGws...",
    "GoReq": null,
    "AcsUrl": "https://demo.cloudpayments.ru/acs",
    "ThreeDsSessionData": null,
    "IFrameIsAllowed": true,
    "FrameWidth": null,
    "FrameHeight": null,
    "ThreeDsCallbackId": "7be4d37f0a434c0a8a7fc0e328368d7d",
    "EscrowAccumulationId": null
  },
  "Success": false,
  "Message": null
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
{
  "Model": {
    "TransactionId": 891583633,
    "Amount": 10,
    "InvoiceId": "1234567",
    "Status": "Declined",
    "StatusCode": 5,
    "ReasonCode": 5051,
    "CardHolderMessage": "Недостаточно средств на карте",
    "CardFirstSix": "400005",
    "CardLastFour": "5556",
    "CardType": "Visa"
  },
  "Success": false,
  "Message": null
}
1
2
3
4
{
  "Message": "Amount - Input should be greater than or equal to 0.01",
  "Success": false
}

Примечания

  • Для 3-D Secure продолжите оплату по методу payments/cards/post3ds.
  • Список кодов ошибок отклонённых транзакций — в разделе Коды ошибок.
  • PaymentUrl должен совпадать с доменом, с которого фактически вызывается checkout.js — иначе банк может отклонить транзакцию как подозрительную.
  • Для холдирования суммы без немедленного списания используйте payments/cards/auth.
  • Метод поддерживает повторную попытку оплаты тем же InvoiceId после отклонённой транзакции — см. раздел «Повторные попытки оплаты» в Обзоре.