Оплата в две стадии

Notice: Эта статья посвящена тому, как проводить разовые оплаты в две стадии через Gate и какие запросы и оповещения при этом актуальны в случае прямого использования платёжных карт.

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

  • статья Разовая оплата в две стадии модели проведения платежей с описанием того, как в целом проводятся разовые оплаты в две стадии в платёжной платформе ecommpay, какие операции при этом используются и как меняются статусы этих платежей и операций;
  • статьи раздела Платёжные методы с описанием того, как проводить разовые оплаты в две стадии через Gate при работе с различными платёжными методами и какие запросы и оповещения могут быть актуальны при этом.

Общая информация

В рамках платёжной платформы оплаты в две стадии проводятся в соответствии с моделью проведения платежей (Разовая оплата в две стадии): с инициированием первой стадии такой оплаты по запросу со стороны веб-сервиса мерчанта, а второй стадии — по запросу или автоматически по истечении заданного срока. Информация о двухстадийных оплатах с прямым использованием платёжных карт содержится в данном разделе, а информация о таких оплатах с использованием альтернативных платёжных методов — в разделе Методы.

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

Для настройки автоматического инициирования второй стадии оплаты, то есть автоматического списания средств или отмены их блокировки, следует обращаться к специалистам технической поддержки (support@ecommpay.com). При этом срок блокировки и тип операции, которую необходимо выполнить по истечении этого срока, указываются со стороны мерчанта.

Информацию о возможности проведения таких оплат необходимо уточнять у службы технической поддержки support@ecommpay.com.

При проведении разовой оплаты в две стадии реквизиты платёжного инструмента могут указываться в одной из следующих форм:

  • Реквизиты (в явном виде). Это базовая форма, при использовании которой необходимо обеспечить предоставление реквизитов пользователем, а затем передать эти реквизиты в платёжную платформу в запросе на проведение платежа. Это касается и так называемых оплат Mail Order/Telephone Order (MO/TO), при проведении которых пользователь предоставляет реквизиты с использованием почты, телефона или иных средств связи. Подробная информация об оплатах MO/TO представлена в разделе Проведение оплат MO/TO.
  • Идентификатор реквизитов. В этом случае со стороны веб-сервиса передаётся идентификатор, однозначно ассоциированный с реквизитами платёжного инструмента на стороне платёжной платформы (подробнее — в разделе Сохранение платёжных данных).
  • Токен реквизитов. В отличие от базового способа, вместо полных реквизитов передаётся токен. Для использования этого способа необходимо провести первоначальный платёж. Подробная информация об использовании токена представлена в разделе Использование токенов.

Ограничения

Ограничение максимальных сроков блокировки

При проведении оплат в две стадии необходимо учитывать, что в соответствии с требованиями международных платёжных систем Visa, Mastercard и American Express срок, на который можно заблокировать средства пользователя, ограничивается. И для различных типов карт этот срок определяется с учётом разных условий:

  • Для карт платёжной системы Visa:
    1. если блокировка средств выполняется в рамках повторяемой оплаты — 5 дней;
    2. если блокировка средств выполняется не в рамках повторяемой оплаты и без её регистрации, а присвоенный мерчанту код Merchant Category Code (MCC) соответствует одному из следующих: 3351–3500, 3501–3999, 4411, 7011, 7512, 7513 — 30 дней;
    3. в других случаях — 10 дней.
  • Для карт Maestro и Cirrus — 6 дней.
  • Для других карт платёжной системы Mastercard — 28 дней.
  • Для карт платёжной системы American Express:
    1. если в соответствии с присвоенным мерчанту кодом Merchant Category Code (MCC) его деятельность относится к гостиничному бизнесу, аренде автомобилей или организации круизов — на весь срок проживания, аренды или круиза соответственно;
    2. в других случаях — 7 дней.

Максимально допустимый срок блокировки средств отсчитывается от момента формирования в платёжной платформе ecommpay операции блокировки (auth). За полчаса до истечения этого срока в зависимости от параметров, указанных сотрудниками ecommpay, автоматически выполняется одна из следующих операций: списание заблокированных средств пользователя (capture) или отмена блокировки средств (cancel). После этого к веб-сервису направляется оповещение, описание формата которого представлено в разделе Формат оповещений. Для уточнения информации и изменения типа операции следует обратиться к курирующему менеджеру ecommpay. Исключением являются блокировки с использованием карт платёжной системы American Express, максимально допустимый срок для которых соответствует сроку проживания, аренды или круиза: для таких блокировок автоматическое списание не выполняется.

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

Ограничение возможности изменения суммы

Изменение суммы предварительно заблокированных средств поддерживается только для оплат с использованием карт платёжных систем Mastercard и Visa с учётом следующих ограничений:

  • После уменьшения суммы заблокированных средств оставшаяся сумма должна составлять не менее 0,01 USD или эквивалента в другой валюте с учётом курса для этой валюты. Если оставшаяся сумма меньше требуемой, запрос на уменьшение суммы отклоняется с кодом ошибки 3117.
  • Для оплат с использованием карт платёжной системы Visa изменение суммы более чем на 15 % поддерживается только при соответствии присвоенного мерчанту MCC одному из следующих: 3351–3500, 3501–3999, 4111, 4112, 4121, 4131, 4411, 4457, 5411, 5552, 5812, 5813, 7011, 7033, 7394, 7512, 7513, 7519, 7523, 7996, 7999. При любых других MCC мерчанта допускается изменение суммы в пределах 15 % от первоначально заблокированной.

Для оплат с использованием карт платёжной системы American Express эта возможность не поддерживается.

Схема проведения

Для проведения оплаты в две стадии через Gate со стороны веб-сервиса необходимо:

  1. Отправить запрос на предварительную блокировку к конечной точке /v2/payment/card/auth[/форма указания реквизитов платёжного инструмента].
  2. При необходимости выполнить вспомогательные процедуры, инициируемые со стороны платёжной платформы. Это может быть один из вариантов аутентификации пользователя или дополнение информации о платеже.
    • Аутентификация 3‑D Secure. Такая аутентификация предназначена для обеспечения безопасности проведения оплаты с использованием платёжных карт через интернет. Подробная информация об этой процедуре представлена в разделе Аутентификация 3‑D Secure.
    • Аутентификация по инициативе мерчанта. Такая аутентификация предназначена для обеспечения дополнительной безопасности оплаты с использованием платёжных карт. Подробная информация об этой процедуре представлена в разделе Аутентификация по инициативе мерчанта.
    • Дополнение информации о платеже. Эта процедура используется, когда по запросу одной из сторон, участвующих в проведении платежа, требуется предоставить дополнительную информацию. Подробная информация о процедуре представлена в разделе Дополнение информации о платеже.
  3. Принять от платёжной платформы оповещение о результате предварительной блокировки.
  4. При необходимости изменить сумму предварительно заблокированных средств без одновременного подтверждения их списания — отправить запрос, содержащий требуемые параметры и подпись, к одной из следующих конечных точек:
    • /v2/payment/card/incremental — для увеличения суммы заблокированных средств;
    • /v2/payment/card/cancel — для уменьшения суммы предварительно заблокированных средств.

    После чего принять оповещение о результате изменения суммы средств.

  5. Отправить запрос на списание средств, содержащий требуемые параметры и подпись, к конечной точке /v2/payment/card/capture или на отмену блокировки — к конечной точке /v2/payment/card/cancel.

    При необходимости списать сумму, отличную от суммы заблокированных средств, в запросе к конечной точке /v2/payment/card/capture необходимо указать сумму для списания и код валюты.

  6. Принять от платёжной платформы оповещение о результате списания средств (или об отмене блокировки средств).
  7. При необходимости для проведённых оплат использовать дополнительную возможность — возврат средств по проведённой оплате. Возврат используется в ситуациях, когда в рамках проведённой оплаты необходимо частично или полностью вернуть средства пользователю. Подробная информация о возвратах представлена в разделе Возвраты средств после оплат.

Схема проведения оплаты в две стадии в базовом случае — без выполнения дополнительных процедур — со списанием заблокированных средств представлена далее.

Рис. 1. Проведение оплаты в две стадии в базовом случае
  1. Пользователь на стороне веб-сервиса инициирует оплату.
  2. От веб-сервиса на заданный URL ecommpay передаётся запрос на предварительную блокировку средств.
  3. Запрос на проведение предварительной блокировки поступает в платёжную платформу.
  4. В платёжной платформе выполняется приём запроса с проверкой его корректности.
  5. От платёжной платформы к веб-сервису направляется ответ с информацией о получении запроса и его корректности.
  6. В платёжной платформе выполняются обработка этого запроса, его преобразование и отправка в международную платёжную систему в соответствии с протоколом взаимодействия с ней.
  7. В международной платёжной системе выполняется дальнейшая обработка запроса и его отправка эмитенту.
  8. На стороне эмитента выполняется обработка платежа и блокировка средств пользователя.
  9. От эмитента к международной платёжной системе направляется уведомление о результате.
  10. От международной платёжной системы к платёжной платформе направляется уведомление о результате.
  11. От платёжной платформы к веб-сервису направляется оповещение о результате.
  12. От веб-сервиса пользователю направляется результат оплаты.
  13. От веб-сервиса на заданный URL ecommpay передаётся запрос на списание средств (или на отмену блокировки средств).
  14. Запрос на списание средств (или на отмену блокировки средств) поступает в платёжную платформу.
  15. В платёжной платформе выполняется приём запроса с начальной проверкой.
  16. От платёжной платформы к веб-сервису направляется ответ с информацией о получении запроса и его корректности.
  17. В платёжной платформе выполняются обработка этого запроса, его преобразование и отправка в международную платёжную систему в соответствии с протоколом взаимодействия с ней.
  18. В международной платёжной системе выполняется дальнейшая обработка запроса и его отправка эмитенту.
  19. На стороне эмитента выполняется обработка платежа и списание средств пользователя (или отмена предварительной блокировки средств).
  20. От эмитента к международной платёжной системе направляется уведомление о результате.
  21. От международной платёжной системы к платёжной платформе направляется уведомление о результате.
  22. От платёжной платформы к веб-сервису направляется оповещение о результате.
  23. В случае отмены блокировки от веб-сервиса пользователю направляется результат.

Информация о формате запросов и параметрах инициирования операций оплаты в две стадии с прямым использованием платёжных карт через Gate, а также о формате оповещений о результатах операций приведена далее; общая информация о работе с API — в разделе Организация взаимодействия. Информацию о возможных статусах такой оплаты можно найти в соответствующей статье.

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

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

Запрос на предварительную блокировку

При формировании запросов необходимо учитывать следующее:

  1. POST-запрос должен отправляться к одной из следующих конечных точек:
  2. В запросе должны использоваться следующие объекты и параметры:
    • general — объект, содержащий основные идентификационные сведения запроса:
      • project_id — идентификатор проекта, полученный от ecommpay при интеграции;
      • payment_id — идентификатор платежа, уникальный в рамках проекта;
      • signature — подпись запроса, составленная после указания целевых параметров (подробнее — в разделе Работа с подписью);
    • customer — объект, содержащий сведения о пользователе:
      • ip_address — IP-адрес пользователя;
      • id — идентификатор пользователя в рамках проекта мерчанта;
      • screen_res — разрешение экрана устройства пользователя, в пикселях и с символом x в качестве разделителя (например, 360x640);
      • email — адрес электронной почты пользователя;
      • phone — номер телефона пользователя;
    • payment — объект, содержащий сведения о платеже:
      • amount — сумма платежа в дробных единицах валюты;
      • currency — валюта платежа в формате ISO-4217 alpha-3.
  3. В запросе должны содержаться сведения о платёжной карте пользователя:
    • при передаче реквизитов карты в явном виде — следующие данные в объекте card:
      • pan — номер карты,
      • year — год окончания срока действия карты,
      • month — месяц окончания срока действия карты,
      • card_holder — имя держателя карты (в соответствии с указанным на карте),
      • cvv — код проверки подлинности карты (в соответствии с указанным на карте); при проведении MO/TO оплат данный параметр необязателен, подробнее — в разделе Проведение оплат MO/TO;
    • при передаче идентификатора — идентификатор, ассоциированный с реквизитами карты в платёжной платформе, и код проверки подлинности карты в параметрах saved_account_id и cvv;
    • при передаче токена — токен и код проверки подлинности карты в параметрах token и cvv.
  4. В запросе должен содержаться объект return_url с адресами для перенаправления пользователя к веб-сервису:
    • success — URL для перенаправления после завершения платежа;
    • decline — URL для перенаправления после отклонения платежа.
  5. Если необходимо зачислить средства на электронный кошелёк мерчанта, в объекте customer дополнительно должны использоваться следующие параметры:
    • first_name — имя пользователя,
    • last_name — фамилия,
    • address — адрес проживания (улица, номер дома),
    • email — адрес электронной почты,
    • city — город проживания (или иной населенный пункт),
    • state — регион проживания (штат, графство, кантон и т.д.).
  6. Дополнительно могут использоваться любые другие параметры, указанные в спецификации.

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

{
  "general": {
      "project_id": 42,
      "payment_id": "456789",
      "signature": "v7KNMpfogAxwRIL9tVftZ1ZZ5D/aZAeb0VMdeR+CqGrNxYyilUwSm...=="
  },
    "customer": {
      "ip_address": "248.121.176.220",
      "id": "customer_12",
      "screen_res": "360x640",
      "phone": "44991234567",
      "email": "john_smith@email.com"
  },
    "payment": {
      "amount": 15000,
      "currency": "USD"
  },
    "return_url": {
      "success": "https://example.com/success",
      "decline": "https://example.com/decline"
  },

//при передаче реквизитов карты в явном виде:
    "card": {
      "pan": "4314220000000056",
      "year": 2025,
      "month": 8,
      "card_holder": "JOHN SMITH",
      "cvv": "123"
  }

//при передаче идентификатора ранее сохранённой платёжной карты:
    "saved_account_id": 2345678,
    "cvv": "123"

//при передаче токена ранее сохранённой платёжной карты:
    "token": "f365bb1729f9b72fd9c09703a751c979f3becc679f29c3e35c91d18070d15654",
    "cvv": "123"   
}

Запрос на увеличение суммы заблокированных средств

Запрос отправляется методом POST к конечной точке /v2/payment/card/incremental и должен содержать следующие объекты и параметры:

  • general — объект, содержащий основные идентификационные сведения запроса:
    • project_id — идентификатор проекта, полученный от ecommpay при интеграции;
    • payment_id — идентификатор платежа, уникальный в рамках проекта;
    • signature — подпись запроса, составленная после указания целевых параметров (подробнее — в разделе Работа с подписью).
  • customer — объект, содержащий сведения о пользователе:
    • id — идентификатор пользователя в рамках проекта мерчанта;
  • payment — объект, содержащий сведения о платеже:
    • amount — сумма, на которую необходимо увеличить сумму заблокированных средств, в дробных единицах валюты;
    • currency — код валюты в формате ISO-4217 alpha-3, должен соответствовать коду валюты, переданному в запросе на блокировку.
  • Дополнительно могут использоваться любые другие параметры, указанные в спецификации.

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

{
  "general": {
      "project_id": 42,
      "payment_id": "456789",
      "signature": "v7KNMpfogAxwRIL9tVftZ1ZZ5D/aZAeb0VMdeR+CqGrNxYyilUwSm...=="
  },
  "customer": {
      "id": "customer_12"
  },
    "payment": {
      "amount": 1000,
      "currency": "USD"
  }
  }

Запрос на списание заблокированных средств

Запрос отправляется методом POST к конечной точке /v2/payment/card/capture и должен содержать следующие объекты и параметры:

  • general — объект, содержащий основные идентификационные сведения запроса:
    • project_id — идентификатор проекта, полученный от ecommpay при интеграции;
    • payment_id — идентификатор платежа, уникальный в рамках проекта;
    • signature — подпись запроса, составленная после указания целевых параметров (подробнее — в разделе Работа с подписью).
  • Дополнительно могут использоваться любые другие параметры, указанные в спецификации.

Перечисленных параметров достаточно для списания всей суммы заблокированных средств. Чтобы списать часть суммы или сумму больше заблокированной, в объекте payment дополнительно необходимо использовать следующие параметры:

  • amount — итоговая сумма списания в дробных единицах валюты;
  • currency — код валюты в формате ISO-4217 alpha-3, должен соответствовать коду валюты, переданному в запросе на блокировку.

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

{
    "general": {
        "project_id": 42,
        "payment_id": "456789",
        "signature": "v7KNMpfogAxwRIL9tVftZ1ZZ5D/aZAeb0VMdeR+CqGrNxYyilUwSm...=="
    }
}

Запрос на уменьшение суммы или отмену блокировки средств

Запрос отправляется методом POST к конечной точке /v2/payment/card/cancel и должен содержать следующие объекты и параметры:

  • general — объект, содержащий основные идентификационные сведения запроса:
    • project_id — идентификатор проекта, полученный от ecommpay при интеграции;
    • payment_id — идентификатор платежа, уникальный в рамках проекта;
    • signature — подпись запроса, составленная после указания целевых параметров (подробнее — в разделе Работа с подписью).
  • Дополнительно могут использоваться любые другие параметры, указанные в спецификации.

Перечисленных параметров достаточно для отмены блокировки всей суммы средств. Чтобы уменьшить сумму заблокированных средств, в объекте payment дополнительно необходимо использовать следующие параметры:

  • amount — сумма, на которую необходимо уменьшить сумму заблокированных средств, в дробных единицах валюты;
  • currency — код валюты в формате ISO-4217 alpha-3, должен соответствовать коду валюты, переданному в запросе на блокировку.

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

{
    "general": {
        "project_id": 42,
        "payment_id": "456789",
        "signature": "v7KNMpfogAxwRIL9tVftZ1ZZ5D/aZAeb0VMdeR+CqGrNxYyilUwSm...=="
    }
}

Формат оповещений

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

В следующем примере содержится информация о том, что в рамках проекта 42 для пользователя customer_12 заблокированы средства в размере 150,00 USD с платёжной карты №555555******4445.

Рис. 2. Пример данных о проведённой блокировке средств
{
    "project_id": 42,
    "customer": {
        "id": "customer_12",
        "phone": "44991234567"
    },
    "payment": {
        "id": "456789",
        "type": "purchase",
        "status": "awaiting capture",
        "date": "2019-01-11T13:00:40+0000",
        "method": "card",
        "sum": {
            "amount": 15000,
            "currency": "USD"
        },
        "description": ""
    },
    "account": {
        "number": "541333******0019",
        "type": "mastercard",
        "card_holder": "JOHN SMITH",
        "expiry_month": "08",
        "expiry_year": "2025"
    },
    "operation": {
        "id": 2777000002350,
        "type": "auth",
        "status": "success",
        "date": "2019-01-11T13:00:40+0000",
        "created_date": "2019-01-11T13:00:37+0000",
        "request_id": "e2fd233d27c064fbe01af291039e6478341a0489-3...9",
        "sum_initial": {
            "amount": 15000,
            "currency": "USD"
        },
        "sum_converted": {
            "amount": 15000,
            "currency": "USD"
        },
        "provider": {
            "id": 120,
            "payment_id": "224750650",
            "date": "2019-01-11T13:00:39+0000",
            "result_code": "000",
            "result_message": "Approved",
            "auth_code": "505050",
            "endpoint_id": 120
        },
        "code": "0",
        "message": "Success",
        "description": "SUCCESS",
        "eci": "00"
    },
    "signature": "v7KNMpfogAxwRIL9tVftZ1ZZ5D/aZAeb0VMdeR+CqGrNxYyilUwSm...=="
}

В следующем примере блокировка средств была отклонена из-за указания некорректной даты окончания срока действия карты.

Рис. 3. Пример данных об отказе в блокировке средств
{
    "project_id": 42,
    "customer": {
        "id": "customer_12",
        "phone": "44991234567"
    },
    "payment": {
        "id": "456789",
        "type": "purchase",
        "status": "decline",
        "date": "2019-01-11T13:00:40+0000",
        "method": "card",
        "sum": {
            "amount": 15000,
            "currency": "USD"
        },
        "description": ""
    },
    "account": {
        "number": "541333******0019",
        "type": "mastercard",
        "card_holder": "JOHN SMITH",
        "expiry_month": "08",
        "expiry_year": "2025"
    },
    "operation": {
        "id": 6304000002973,
        "type": "auth",
        "status": "decline",
        "date": "2019-01-11T13:00:40+0000",
        "created_date": "2019-01-11T13:00:34+0000",
        "request_id": "63821f1e49b2b289d1dee0552082ed60b4108175-5...c",
        "sum_initial": {
            "amount": 15000,
            "currency": "USD"
        },
        "sum_converted": {
            "amount": 15000,
            "currency": "USD"
        },
        "provider": {
            "id": 120,
            "payment_id": "239689120",
            "date": "2019-01-11T13:00:36+0000",
            "result_code": "101",
            "result_message": "Decline, expired card",
            "auth_code": "",
            "endpoint_id": 120
        },
        "code": "10106",
        "message": "Card expired",
        "description": "Bank cards. Operation was declined due to incorrect card expiry date entry",
        "eci": "00"
    },
    "signature": "v7KNMpfogAxwRIL9tVftZ1ZZ5D/aZAeb0VMdeR+CqGrNxYyilUwSm...=="
}

В следующем примере содержится информация о том, что в рамках проекта 42 сумма средств, заблокированных на платёжной карте №555555******4445 пользователя customer_12, увеличена на 10,00 USD.

Рис. 4. Пример данных об увеличении суммы заблокированных средств
{
    "project_id": 42,
    "payment": {
        "id": "456789",
        "type": "purchase",
        "status": "awaiting capture",
        "date": "2019-01-11T15:54:40+0000",
        "method": "card",
        "description": ""
    },
    "account": {
        "number": "541333******0019",
        "type": "mastercard",
        "card_holder": "JOHN SMITH",
        "expiry_month": "08",
        "expiry_year": "2025"
    },
    "customer": {
        "id": "customer_12",
        "phone": "44991234567"
    },
    "operation": {
        "id": 7178000006589,
        "type": "incremental",
        "status": "success",
        "date": "2019-01-11T15:54:40+0000",
        "created_date": "2019-01-11T15:54:39+0000",
        "request_id": "d066dfd72443584e1a35bb5eed60415aeb15ccfa-1...0",
        "sum_initial": {
            "amount": 1000,
            "currency": "USD"
        },
        "sum_converted": {
            "amount": 1000,
            "currency": "USD"
        },
        "provider": {
            "id": 120,
            "payment_id": "227307324",
            "date": "2019-01-11T15:54:40+0000",
            "auth_code": "919372",
            "endpoint_id": 120
        },
        "code": "0",
        "message": "Success"
    },
    "signature": "v7KNMpfogAxwRIL9tVftZ1ZZ5D/aZAeb0VMdeR+CqGrNxYyilUwSm...=="
}

В следующем примере содержится информация о том, что в рамках проекта 42 с платёжной карты №555555******4445 пользователя customer_12 списаны заблокированные ранее средства в размере 160,00 USD.

Рис. 5. Пример данных о списании заблокированных средств
{
    "project_id": 42,
    "payment": {
        "id": "456789",
        "type": "purchase",
        "status": "success",
        "date": "2019-01-11T15:54:40+0000",
        "method": "card",
        "sum": {
            "amount": 16000,
            "currency": "USD"
        },
        "description": ""
    },
    "account": {
        "number": "541333******0019",
        "type": "mastercard",
        "card_holder": "JOHN SMITH",
        "expiry_month": "08",
        "expiry_year": "2025"
    },
    "customer": {
        "id": "customer_12",
        "phone": "44991234567"
    },
    "operation": {
        "id": 7178000006597,
        "type": "capture",
        "status": "success",
        "date": "2019-01-11T15:54:40+0000",
        "created_date": "2019-01-11T15:54:39+0000",
        "request_id": "d066dfd72443584e1a35bb5eed60415aeb15ccfa-1...0",
        "sum_initial": {
            "amount": 16000,
            "currency": "USD"
        },
        "sum_converted": {
            "amount": 16000,
            "currency": "USD"
        },
        "provider": {
            "id": 120,
            "payment_id": "227307324",
            "date": "2019-01-11T15:54:40+0000",
            "auth_code": "919372",
            "endpoint_id": 120
        },
        "code": "0",
        "message": "Success"
    },
    "signature": "v7KNMpfogAxwRIL9tVftZ1ZZ5D/aZAeb0VMdeR+CqGrNxYyilUwSm...=="
}

В следующем примере содержится информация о том, что в рамках проекта 42 для пользователя customer_12 отменена блокировка средств в размере 160,00 USD на платёжной карте №555555******4445.

Рис. 6. Пример данных об отмене блокировки средств
{
    "project_id": 42,
    "payment": {
        "id": "456789",
        "type": "purchase",
        "status": "canceled",
        "date": "2019-01-11T15:54:40+0000",
        "method": "card",
        "sum": {
            "amount": 16000,
            "currency": "USD"
        },
        "description": ""
    },
    "account": {
        "number": "541333******0019",
        "type": "mastercard",
        "card_holder": "JOHN SMITH",
        "expiry_month": "08",
        "expiry_year": "2025"
    },
    "customer": {
        "id": "customer_12",
        "phone": "44991234567"
    },
    "operation": {
        "id": 18289000007021,
        "type": "cancel",
        "status": "success",
        "date": "2019-01-11T15:54:40+0000",
        "created_date": "2019-01-11T15:54:40+0000",
        "request_id": "25cdabfad200b82bf6740d6a8d01818c6e64804e-1...c",
        "sum_initial": {
            "amount": 16000,
            "currency": "USD"
        },
        "sum_converted": {
            "amount": 16000,
            "currency": "USD"
        },
        "provider": {
            "id": 120,
            "payment_id": "239672146",
            "auth_code": "",
            "endpoint_id": 120
        },
        "code": "0",
        "message": "Success"
    },
    "signature": "v7KNMpfogAxwRIL9tVftZ1ZZ5D/aZAeb0VMdeR+CqGrNxYyilUwSm...=="
}

В следующем примере отмена блокировки средств была отклонена из-за указания некорректных данных карты.

Рис. 7. Пример данных об отказе в отмене блокировки средств
 {
    "account": {
        "number": "541333******0019",
        "type": "mastercard",
        "card_holder": "JOHN SMITH",
        "expiry_month": "08",
        "expiry_year": "2025"
    },
    "customer": {
        "id": "customer_12",
        "phone": "44991234567"
    },
    "payment": {
        "date": "2019-01-11T15:54:40+0000",
        "id": "456789",
        "method": "card",
        "status": "decline",
        "sum": {
            "amount": 16000,
            "currency": "USD"
        },
        "type": "purchase",
        "description": ""
    },
    "project_id": 42,
    "operation": {
        "id": 18397000002376,
        "type": "cancel",
        "status": "decline",
        "date": "2019-01-11T15:54:40+0000",
        "created_date": "2019-01-11T15:54:35+0000",
        "request_id": "7482145798366de3166bedd372552b3f0094eed2-6...3",
        "sum_initial": {
            "amount": 16000,
            "currency": "USD"
        },
        "sum_converted": {
            "amount": 16000,
            "currency": "USD"
        },
        "provider": {
            "id": 120,
            "payment_id": "248013808",
            "date": "2019-01-10T22:37:10+0000",
            "auth_code": "876856",
            "endpoint_id": 120
        },
        "code": "10102",
        "message": "Incorrect data entered"
    },
    "signature": "v7KNMpfogAxwRIL9tVftZ1ZZ5D/aZAeb0VMdeR+CqGrNxYyilUwSm...=="
}