Klarna

Внимание: В настоящее время новые подключения этого метода не поддерживаются.

Обзор

Введение

Klarna — метод, позволяющий проводить платежи с использованием банковских переводов в разных валютах в отдельных европейских странах. При работе с этим методом доступны разные способы оплаты на стороне провайдера, с возможностями выбора одного из способов в сервисе Klarna, в платёжной форме Payment Page или непосредственно в веб-сервисе. Для этого метода в платёжной платформе ecommpay поддерживаются оплаты и возвраты.

К особенностям метода Klarna можно отнести то, что при работе с ним пользователи могут выбирать способы оплаты на стороне провайдера: с оплатой полной суммы сразу на месте, оплатой в рассрочку или в кредит. По умолчанию выбор способа осуществляется в сервисе Klarna. Вместе с тем, для любого из способов можно дополнительно подключать отображение отдельной кнопки в платёжной форме Payment Page и возможность указания способа при отправке запросов на оплату, улучшая тем самым пользовательский опыт. С вопросами о таких возможностях следует обращаться к курирующему менеджеру ecommpay.

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

Характеристика

Тип платёжного метода банковские платежи
Платёжные инструменты банковские счета
Регионы использования AT, DE, DK, GB, FI, NL, NO, SE
Валюты платежей DKK (для Дании), EUR, GBP (для Великобритании), NOK (для Норвегии), SEK (для Швеции)
Конвертация валют
Разовые оплаты +
Повторяемые оплаты
Полные возвраты +
Частичные возвраты +
Выплаты
Опротестования
Особенности
Организация и стоимость подключения по согласованию с курирующим менеджером ecommpay

Схема работы

В проведении отдельного платежа с использованием метода Klarna задействуются веб-сервис мерчанта, один из интерфейсов и платёжная платформа ecommpay, а также технические средства сервиса Klarna.

Основные операции

Для проведения платежей и выполнения операций с использованием метода Klarna могут применяться различные интерфейсы платёжной платформы. Так, оплаты могут проводиться через Payment Page, Gate и Dashboard (с применением платёжных ссылок), а возвраты — через Gate и Dashboard. При этом, независимо от используемых интерфейсов, для этого метода характерны следующие свойства и ограничения.

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

Суммы (в поддерживаемых валютах) ¹ Время ²
минимум максимум базовое предельное
Оплаты 0,01 * 2 минуты 48 часов
Возвраты
Прим.:
  1. Максимальные ограничения сумм зависят от банков.
  2. Базовое и предельное время определяются следующим образом:
    • Базовое время — среднее расчётное время проведения платежа от момента его инициирования на стороне платёжной платформы до момента отправки инициатору оповещения о результате. Это время определяется для условий штатной работы всех технических средств и каналов связи, а также типичных действий со стороны пользователя (там, где они необходимы). Базовое время рекомендуется использовать для реагирования на отсутствие оповещений о результате платежа и выполнения опроса состояния платежа (подробнее).
    • Предельное время — максимально допустимое время проведения платежа от момента его инициирования на стороне платёжной платформы до момента отправки инициатору оповещения о результате. Если платёж не был проведён или отклонён за это время, он автоматически переводится в статус decline. Для индивидуальной настройки предельного времени следует обращаться к специалистам технической поддержки ecommpay.

Сценарии использования

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

Сценарии выполнения операций через основные интерфейсы платёжной платформы соответствуют представленным на схемах. При использовании дополнительных возможностей (таких как платёжные ссылки) сценарии выполнения операций методом Klarna соответствуют специфике этих возможностей .

Оплаты через Payment Page

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

Для проведения оплаты через Payment Pageс использованием метода Klarna со стороны веб-сервиса необходимо отправить запрос, содержащий требуемые параметры и подпись, на рабочий URL ecommpay и принять оповещение о результате. Полная схема проведения оплаты выглядит следующим образом.

Рис.: Проведение оплаты через Payment Page. Описание шагов

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

Информация о форматах запросов и оповещений, используемых для проведения оплат методом Klarna через Payment Page, приведена далее в этом разделе; общая информация о работе с Payment Page API — в отдельной статье Организация взаимодействия.

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

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

  1. Должен использоваться базовый минимум параметров, обязательный для любого платежа:
    • project_id — идентификатор проекта, полученный от ecommpay при интеграции;
    • payment_id — идентификатор платежа, уникальный в рамках проекта;
    • payment_currency — код валюты платежа в формате ISO-4217 alpha-3;
    • payment_amount — сумма платежа в дробных единицах валюты;
    • customer_id — идентификатор пользователя в рамках проекта.
  2. Должен использоваться базовый минимум параметров: project_id, payment_id, payment_currency, payment_amount, customer_id.
  3. Должна указываться информация о пользователе через следующие параметры:
    • customer_first_name — имя пользователя,
    • customer_email — адрес электронной почты пользователя,
    • billing_country — код страны адреса регистрации пользователя в формате ISO 3166-1 alpha-2,
    • billing_city — город регистрации пользователя,
    • billing_address — адрес пользователя в городе регистрации,
    • billing_postal — почтовый индекс адреса регистрации пользователя,
    • customer_country — код страны адреса нахождения пользователя в формате ISO 3166-1 alpha-2.
  4. Должна указываться информация о товарных позициях и сумме налога, относящихся к оплате, через параметр receipt_data, в значении которого должны содержаться массив positions и параметр total_tax_amount. При этом значение receipt_data необходимо кодировать с использованием схемы Base64.

    Массив positions должен содержать хотя бы один объект, включающий в себя следующие параметры (для каждой позиции товаров или услуг):

    • quantity (тип данных integer) — количество товаров или услуг (либо вес товаров, если они продаются на развес). Указывается в рамках одной позиции.
    • amount (тип данных integer) — стоимость товаров или услуг по указываемой позиции, в дробных единицах валюты.
      Совет: Общая сумма по всем указанным позициям должна быть равна сумме платежа, указанной в параметре запроса payment_amount.
    • description (тип данных string) — описание товаров или услуг по указываемой позиции.

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

    Например, следующий объект

    {
            "positions": [
                {
                    "quantity":1,
                    "amount":2000,
                    "description":"First product"
                },
                {
                    "quantity":2,
                    "amount":4000,
                    "description":"Second product"
                }            
            ],
            "total_tax_amount":1000
        }

    указывается в значении параметра receipt_data следующим образом:

    ewogICAgICAgICJwb3NpdGlvbnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICA
    gICAgICAgICJxdWFudGl0eSI6MSwKICAgICAgICAgICAgICAgICJhbW91bnQiOjIwMDAsCiA
    gICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiJGaXJzdCBwcm9kdWN0IgogICAgICAgICA
    gICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAicXVhbnRpdHkiOjIsCiAgICA
    gICAgICAgICAgICAiYW1vdW50Ijo0MDAwLAogICAgICAgICAgICAgICAgImRlc2NyaXB0aW9
    uIjoiU2Vjb25kIHByb2R1Y3QiCiAgICAgICAgICAgIH0gICAgICAgICAgICAKICAgICAgICB
    dLAogICAgICAgICJ0b3RhbF90YXhfYW1vdW50IjoxMDAwCiAgICB9
    Прим.: При проведении платежей с использованием метода Klarna на стороне платёжной платформы учитываются только те параметры, которые описаны в этом пункте. Если в составе информации о товарных позициях передаются другие параметры (как при работе с карточными платежами, подробнее), то при работе с этим методом они игнорируются.
  5. Дополнительно рекомендуется указывать фамилию пользователя в параметре customer_last_name. Если параметр отсутствует в запросе, в платёжной форме может отобразится поле для ввода пользователем недостающего значения (подробнее — в разделе Дополнение информации о платежах).
  6. Для предварительного выбора метода Klarna необходимо указывать код этого метода в параметре force_payment_methodklarna.
  7. Для предварительного выбора одного из способов оплаты на стороне провайдера необходимо указывать код klarna в параметре force_payment_method и одно из следующих значений параметра payment_methods_options:
    • "{"account_type": "pay_now"}" — для оплаты полной суммы сразу на месте;
    • "{"account_type": "bnpl"}" — для оплаты в рассрочку (с максимальным сроком до 30 дней);
    • "{"account_type": "financing"}" — для оплаты в кредит.
  8. Дополнительно могут использоваться любые другие параметры из числа доступных для работы с Payment Page (подробнее).
  9. После указания всех целевых параметров необходимо составлять подпись (подробнее).

Таким образом, корректный запрос на открытие платёжной формы с применением метода Klarna должен содержать идентификатор проекта, базовые сведения о платеже (идентификатор, сумму и код валюты), информацию о пользователе и чеке, а также подпись.

{
   "project_id": 120,
   "payment_id": "580",
   "payment_amount": 6000,
   "payment_currency": "EUR",
   "customer_id": "customer1",
   "billing_country": "AT",
   "billing_city": "Vienna",
   "billing_address": "Wiener Brauhausstraße 1",
   "billing_postal": "12345",
   "customer_country": "AT",
   "customer_first_name": "John",
   "customer_last_name": "Johnson",
   "customer_email": "customer@example.com",
   "receipt_data": "ewogICAgICAgICJwb3NpdGlvbnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICA
gICAgICAgICJxdWFudGl0eSI6MSwKICAgICAgICAgICAgICAgICJhbW91bnQiOjIwMDAsCiA
gICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiJGaXJzdCBwcm9kdWN0IgogICAgICAgICA
gICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAicXVhbnRpdHkiOjIsCiAgICA
gICAgICAgICAgICAiYW1vdW50Ijo0MDAwLAogICAgICAgICAgICAgICAgImRlc2NyaXB0aW9
uIjoiU2Vjb25kIHByb2R1Y3QiCiAgICAgICAgICAgIH0gICAgICAgICAgICAKICAgICAgICB
dLAogICAgICAgICJ0b3RhbF90YXhfYW1vdW50IjoxMDAwCiAgICB9",
   "signature": "kUi2x9dKHAVNU0FYldOcZzUCwX6R\/ekpZhkIQg=="
}

Рис.: Пример достаточного набора данных для запроса на оплату

{
   "project_id": 120,
   "payment_id": "580",
   "payment_amount": 6000,
   "payment_currency": "EUR",
   "customer_id": "customer1",
   "billing_country": "AT",
   "billing_city": "Vienna",
   "billing_address": "Wiener Brauhausstraße 1",
   "billing_postal": "12345",
   "customer_country": "AT",
   "customer_first_name": "John",
   "customer_last_name": "Johnson",
   "customer_email": "customer@example.com",
   "receipt_data": "ewogICAgICAgICJwb3NpdGlvbnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICA
gICAgICAgICJxdWFudGl0eSI6MSwKICAgICAgICAgICAgICAgICJhbW91bnQiOjIwMDAsCiA
gICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiJGaXJzdCBwcm9kdWN0IgogICAgICAgICA
gICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAicXVhbnRpdHkiOjIsCiAgICA
gICAgICAgICAgICAiYW1vdW50Ijo0MDAwLAogICAgICAgICAgICAgICAgImRlc2NyaXB0aW9
uIjoiU2Vjb25kIHByb2R1Y3QiCiAgICAgICAgICAgIH0gICAgICAgICAgICAKICAgICAgICB
dLAogICAgICAgICJ0b3RhbF90YXhfYW1vdW50IjoxMDAwCiAgICB9",
   "signature": "kUi2x9dKHAVNU0FYldOcZzUCwX6R\/ekpZhkIQg=="
}

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

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

В следующем примере оповещение свидетельствует о том, что в рамках проекта 442 была проведена оплата в размере 10,00 EUR.

Рис.: Пример данных из оповещения о проведении оплаты

{
        "project_id": 442,
        "payment": {
            "id": "EP696e-3aea",
            "type": "purchase",
            "status": "success",
            "date": "2022-10-07T19:28:58+0000",
            "method": "Klarna",
            "sum": {
                "amount": 1000,
                "currency": "EUR"
            },
            "description": ""
        },
        "customer": {
            "id": "12345"
        },
        "operation": {
            "id": 33,
            "type": "sale",
            "status": "success",
            "date": "2022-10-07T19:28:58+0000",
            "created_date": "2022-10-07T19:28:14+0000",
            "request_id": "a8ea69fdc5a83a2622-00000001",
            "sum_initial": {
                "amount": 1000,
                "currency": "EUR"
            },
            "sum_converted": {
                "amount": 1000,
                "currency": "EUR"
            },
            "code": "0",
            "message": "Success",
            "provider": {
                "id": 18052,
                "payment_id": "1665170919576",
                "auth_code": ""
            }
        },
        "signature": "h14kSk782IZEgezTRpbZVe/54KGgd7mA=="
    }

В следующем примере оповещение свидетельствует об отклонённой оплате.

Рис.: Пример данных из оповещения об отклонении оплаты

{
        "project_id": 442,
        "payment": {
            "id": "EP1d27-e7ee",
            "type": "purchase",
            "status": "decline",
            "date": "2022-10-10T09:28:33+0000",
            "method": "Klarna",
            "sum": {
                "amount": 1500000,
                "currency": "EUR"
            },
            "description": ""
        },
        "customer": {
            "id": "12345"
        },
        "operation": {
            "id": 38,
            "type": "sale",
            "status": "decline",
            "date": "2022-10-10T09:28:33+0000",
            "created_date": "2022-10-10T09:28:19+0000",
            "request_id": "f56812a9270c19c04-00000001",
            "sum_initial": {
                "amount": 1500000,
                "currency": "EUR"
            },
            "sum_converted": {
                "amount": 1500000,
                "currency": "EUR"
            },
            "code": "20000",
            "message": "General decline",
            "provider": {
                "id": 18052,
                "payment_id": "",
                "auth_code": ""
            }
        },
        "signature": "ZS90VEL4x5avOhc4MG85STSog=="
    }

Дополнительные материалы

Для организации работы с оплатами через Payment Page также могут быть полезны следующие материалы:

Оплаты через Gate

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

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

  1. Отправить запрос, содержащий требуемые параметры и подпись, на рабочий URL ecommpay.
  2. Принять промежуточное оповещение от платёжной платформы и осуществить перенаправление пользователя к сервису Klarna.
  3. Принять итоговое оповещение от платёжной платформы.

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

Рис.: Проведение оплаты через Gate. Описание шагов

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

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

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

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

  1. Для инициирования каждой оплаты должен использоваться POST-запрос к конечной точке /v2/payment/bank-transfer/klarna/sale, которая относится к группе конечных точек /v2/payment/bank-transfer/{payment_method}/sale.
  2. В каждом запросе должны использоваться следующие объекты и параметры:
    • general — объект, содержащий основные идентификационные сведения запроса:
      • project_id — идентификатор проекта, полученный от ecommpay при интеграции;,
      • payment_id — идентификатор платежа, уникальный в рамках проекта;,
      • signature — подпись запроса, составленная после указания всех целевых параметров (подробнее — в разделе Работа с подписью к данным); (подробнее),
    • payment — объект, содержащий сведения о платеже:
      • amount — сумма платежа в дробных единицах валюты;,;
      • currency — код валюты платежа в формате ISO-4217 alpha-3;,
    • customer — объект, содержащий сведения о пользователе:
      • id — идентификатор пользователя, уникальный в рамках проекта;,
      • ip_address — IP-адрес пользователя, актуальный для инициируемого платежа;,
      • billing — объект с информацией об адресе регистрации пользователя:
        • country — код страны адреса регистрации пользователя в формате ISO 3166-1 alpha-2;,
        • city — город регистрации пользователя;,
        • address — адрес пользователя в городе регистрации;,
        • postal — почтовый индекс адреса регистрации пользователя;,
      • country — код страны адреса физического нахождения пользователя в формате ISO 3166-1 alpha-2;,
      • first_name — имя пользователя;,
      • email — адрес электронной почты пользователя;,
      • last_name — фамилия пользователя (для предотвращения ошибок при проведении платежей рекомендуется указывать не менее 3 и не более 100 символов). Если параметр не указан в запросе, то он дополнительно запрашивается в оповещении о необходимости дополнить данные (подробнее — в разделе Дополнение информации о платеже).
  3. Должна указываться информация о товарных позициях и сумме налога, относящихся к оплате, через параметр receipt_data, в значении которого должны содержаться массив positions и параметр total_tax_amount.

    Массив positions должен содержать хотя бы один объект, включающий в себя следующие параметры (для каждой позиции товаров или услуг):

    • quantity (тип данных integer) — количество товаров или услуг (либо вес товаров, если они продаются на развес). Указывается в рамках одной позиции.
    • amount (тип данных integer) — стоимость товаров или услуг по указываемой позиции, в дробных единицах валюты.
      Совет: Общая сумма по всем указанным позициям должна быть равна сумме платежа, указанной в параметре запроса amount объекта payment.
    • description (тип данных string) — описание товаров или услуг по указываемой позиции.

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

    Прим.: При проведении платежей с использованием метода Klarna на стороне платёжной платформы учитываются только те параметры, которые описаны в этом пункте. Если в составе информации о товарных позициях передаются другие параметры (как при работе с карточными платежами, подробнее), то при работе с этим методом они игнорируются.
  4. Для задания одного из способов оплаты на стороне провайдера необходимо указывать одно из следующих значений параметра type объекта account:
    • pay_now — для оплаты полной суммы сразу на месте;
    • bnpl — для оплаты в рассрочку (с максимальным сроком до 30 дней);
    • financing — для оплаты в кредит.
  5. Дополнительно могут использоваться любые другие параметры из числа указанных в спецификации.

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

{
  "general": {
    "project_id": 211,
    "payment_id": "payment_id",
    "signature": "PJkV8ej/UG0Di8NNNIipTv+AWoXW/9MTO8yJA=="
  },
  "payment": {
    "amount": 6000,
    "currency": "EUR"
  },
  "customer": {
    "first_name": "John",
    "last_name": "Johnson",
    "email": "customer@example.com",
    "id": "123",
    "ip_address": "192.0.2.0",
    "billing": {
      "country": "AT",
      "city": "Vienna",
      "address": "Wiener Brauhausstraße 1",
      "postal": "12345"
    },
    "country": "AT"
  },
  "receipt_data": {
    "positions": [
      {
        "quantity": 1,
        "amount": 2000,
        "description": "First product"
      },
      {
        "quantity": 2,
        "amount": 4000,
        "description": "Second product"
      }
    ],
    "total_tax_amount": 1000
  }
}

Рис.: Пример достаточного набора данных для запроса на оплату

{
  "general": {
    "project_id": 211,
    "payment_id": "payment_id",
    "signature": "PJkV8ej/UG0Di8NNNIipTv+AWoXW/9MTO8yJA=="
  },
  "payment": {
    "amount": 6000,
    "currency": "EUR"
  },
  "customer": {
    "first_name": "John",
    "last_name": "Johnson",
    "email": "customer@example.com",
    "id": "123",
    "ip_address": "192.0.2.0",
    "billing": {
      "country": "AT",
      "city": "Vienna",
      "address": "Wiener Brauhausstraße 1",
      "postal": "12345"
    },
    "country": "AT"
  },
  "receipt_data": {
    "positions": [
      {
        "quantity": 1,
        "amount": 2000,
        "description": "First product"
      },
      {
        "quantity": 2,
        "amount": 4000,
        "description": "Second product"
      }
    ],
    "total_tax_amount": 1000
  }
}

Формат промежуточных оповещений для перенаправления пользователей

Для перенаправления пользователей от веб-сервиса мерчанта к сервису Klarna при проведении каждого платежа с использованием метода Klarna необходимо принять промежуточное оповещение от платёжной платформы и использовать информацию из него, включённую в объект redirect_data. Формат таких оповещений является типовым (подробнее), при этом в состав объекта redirect_data включаются следующие объекты и параметры:

  • body — объект с данными для отправки в теле запроса;
  • method — параметр с указанием HTTP-метода отправки запроса (GET или POST);
  • url — параметр со ссылкой для перенаправления.

Рис.: Пример объекта redirect_data

  "redirect_data": {
    "body": {},
    "method": "GET",
    "url": "https://www.example.com/pay"
  }

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

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

В следующем примере оповещение свидетельствует о том, что в рамках проекта 442 была проведена оплата в размере 10,00 EUR.

Рис.: Пример данных из оповещения о проведении оплаты

{
        "project_id": 442,
        "payment": {
            "id": "EP696e-3aea",
            "type": "purchase",
            "status": "success",
            "date": "2022-10-07T19:28:58+0000",
            "method": "Klarna",
            "sum": {
                "amount": 1000,
                "currency": "EUR"
            },
            "description": ""
        },
        "customer": {
            "id": "12345"
        },
        "operation": {
            "id": 33,
            "type": "sale",
            "status": "success",
            "date": "2022-10-07T19:28:58+0000",
            "created_date": "2022-10-07T19:28:14+0000",
            "request_id": "a8ea69fdc5a83a2622-00000001",
            "sum_initial": {
                "amount": 1000,
                "currency": "EUR"
            },
            "sum_converted": {
                "amount": 1000,
                "currency": "EUR"
            },
            "code": "0",
            "message": "Success",
            "provider": {
                "id": 18052,
                "payment_id": "1665170919576",
                "auth_code": ""
            }
        },
        "signature": "h14kSk782IZEgezTRpbZVe/54KGgd7mA=="
    }

В следующем примере оповещение свидетельствует об отклонённой оплате.

Рис.: Пример данных из оповещения об отклонении оплаты

{
        "project_id": 442,
        "payment": {
            "id": "EP1d27-e7ee",
            "type": "purchase",
            "status": "decline",
            "date": "2022-10-10T09:28:33+0000",
            "method": "Klarna",
            "sum": {
                "amount": 1500000,
                "currency": "EUR"
            },
            "description": ""
        },
        "customer": {
            "id": "12345"
        },
        "operation": {
            "id": 38,
            "type": "sale",
            "status": "decline",
            "date": "2022-10-10T09:28:33+0000",
            "created_date": "2022-10-10T09:28:19+0000",
            "request_id": "f56812a9270c19c04-00000001",
            "sum_initial": {
                "amount": 1500000,
                "currency": "EUR"
            },
            "sum_converted": {
                "amount": 1500000,
                "currency": "EUR"
            },
            "code": "20000",
            "message": "General decline",
            "provider": {
                "id": 18052,
                "payment_id": "",
                "auth_code": ""
            }
        },
        "signature": "ZS90VEL4x5avOhc4MG85STSog=="
    }

Дополнительные материалы

Для организации работы с оплатами через Gate также могут быть полезны следующие материалы:

Возвраты через Gate

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

Для выполнения возврата через Gate с использованием метода Klarna со стороны веб-сервиса необходимо отправить запрос, содержащий требуемые параметры и подпись, на рабочий URL ecommpay и принять оповещение о результате. Полная схема выполнения возврата выглядит следующим образом.

Рис.: Выполнение возврата через Gate. Описание шагов

  1. Пользователь инициирует возврат.
  2. От веб-сервиса на заданный URL ecommpay передаётся запрос на выполнение возврата.
  3. Запрос на выполнение возврата поступает в платёжную платформу ecommpay.
  4. В платёжной платформе выполняется приём запроса с проверкой наличия обязательных параметров и корректной подписи.
  5. От платёжной платформы к веб-сервису направляется ответ с информацией о получении запроса и его корректности (подробнее).
  6. В платёжной платформе обеспечиваются дальнейшая обработка запроса (с проверкой согласованности параметров) и его отправка в сервис Klarna.
  7. В сервисе Klarna выполняется обработка возврата.
  8. От сервиса Klarna к платёжной платформе направляется информация о результате возврата.
  9. От платёжной платформы к веб-сервису направляется оповещение о результате возврата.
  10. На стороне веб-сервиса обеспечивается информирование пользователя о результате возврата.

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

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

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

  1. Для инициирования каждого возврата должен использоваться POST-запрос к конечной точке /v2/payment/bank-transfer/klarna/refund, которая относится к группе конечных точек /v2/payment/bank-transfer/{payment_method}/refund.
  2. В каждом запросе должны использоваться следующие объекты и параметры:
    • general — объект, содержащий основные идентификационные сведения запроса:
      • project_id — идентификатор проекта, полученный от ecommpay при интеграции;,
      • payment_id — идентификатор платежа, для которого необходимо выполнить возврат;,
      • signature — подпись запроса, составленная после указания всех целевых параметров (подробнее — в разделе Работа с подписью к данным); (подробнее)),
    • payment — объект, содержащий сведения о возврате:
      • description — комментарий к возврату или его описание;
      • amount — сумма возврата в дробных единицах валюты (является обязательной при частичном возврате);,
      • currency — код валюты возврата в формате ISO-4217 alpha-3 (является обязательным при частичном возврате);,
    • customer — объект, содержащий сведения о пользователе:
      • ip_address — IP-адрес пользователя, актуальный для инициируемого возврата.
  3. Дополнительно могут использоваться любые другие параметры из числа указанных в спецификации.

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

{
  "general": {
    "project_id": 210,
    "payment_id": "test_payment",
    "signature": "PJkV8ej\/UG0Di8hTng6JvipTv+AWoXW\/9MTO8yJA=="
  },
  "payment": {
    "description": "test refund",
    "amount": 1000,
    "currency": "EUR"
  },
  "customer": {
    "ip_address": "192.0.2.0"
  }
}

Рис.: Пример достаточного набора данных для запроса на возврат

{
  "general": {
    "project_id": 210,
    "payment_id": "test_payment",
    "signature": "PJkV8ej\/UG0Di8hTng6JvipTv+AWoXW\/9MTO8yJA=="
  },
  "payment": {
    "description": "test refund",
    "amount": 1000,
    "currency": "EUR"
  },
  "customer": {
    "ip_address": "192.0.2.0"
  }
}

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

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

В следующем примере оповещение свидетельствует о том, что в рамках проекта 442 был выполнен частичный возврат в размере 3,00 EUR.

Рис.: Пример данных из оповещения о выполнении возврата

{
        "project_id": 442,
        "payment": {
            "id": "EP8806-91ba",
            "type": "purchase",
            "status": "partially refunded",
            "date": "2022-10-10T13:21:33+0000",
            "method": "Klarna",
            "sum": {
                "amount": 300,
                "currency": "EUR"
            },
            "description": ""
        },
        "customer": {
            "id": "12345"
        },
        "operation": {
            "id": 46,
            "type": "refund",
            "status": "success",
            "date": "2022-10-10T13:21:33+0000",
            "created_date": "2022-10-10T13:21:23+0000",
            "request_id": "b132a7883e19d0fe21b8fd1-00000001",
            "sum_initial": {
                "amount": 700,
                "currency": "EUR"
            },
            "sum_converted": {
                "amount": 700,
                "currency": "EUR"
            },
            "code": "0",
            "message": "Success",
            "provider": {
                "id": 18052,
                "payment_id": "1665408090952",
                "auth_code": ""
            }
        },
        "signature": "7upYXNzrL/tQfYO0rwjvkc9LbDPkwSw=="
    }

В следующем примере оповещение свидетельствует о возврате, отклонённом из-за превышения суммы оплаты.

Рис.: Пример данных из оповещения об отклонении возврата

{
        "project_id": 211,
        "payment": {
            "id": "refund_02",
            "type": "purchase",
            "status": "success",
            "date": "2019-02-19T14:25:25+0000",
            "method": "Klarna",
            "sum": {
                "amount": 100000,
                "currency": "EUR"
            },
            "description": "test_02"
        },
        "account": {
            "number": "035209875690435"
        },
        "operation": {
            "id": 14153000003282,
            "type": "refund",
            "status": "decline",
            "date": "2019-02-19T14:25:25+0000",
            "created_date": "2019-02-19T14:25:24+0000",
            "request_id": "9d11b2ca618ec3ba0f5fa58f174",
            "sum_initial": {
                "amount": 100000,
                "currency": "EUR"
            },
            "sum_converted": {
                "amount": 100000,
                "currency": "EUR"
            },
            "provider": {
                "id": 1169,
                "payment_id": "105887607",
                "date": "2019-02-19T14:25:24+0000",
                "auth_code": ""
            },
            "code": "3283",
            "message": "Refund amount more than init amount"
        },
        "signature": "of8k9xerKSKpFBR4XL0Sf/7eg=="
    }

Дополнительные материалы

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

Возвраты через Dashboard

При использовании интерфейса Dashboard можно выполнять одиночные и массовые возвраты методом Klarna с единичной и пакетной отправкой запросов, называемые соответственно одиночными и массовыми.

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

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

Более подробная информацияИнформация о выполнении возвратов через Dashboard представлена в отдельном разделе.

Анализ результатов проведения платежей

Для анализа информации о платежах и операциях, как в отдельности по методу Klarna, так и в совокупности с другими методами, можно использовать:

  • инструментарий интерфейса Dashboard, с различными реестрами и аналитическими панелями;,
  • отчёты в формате CSV, выгружаемые (как разово, так и периодически) через раздел Отчёты интерфейса Dashboard;,
  • данные в формате JSON, получаемые по программным запросам через интерфейс Data API.

С вопросами по анализу информации можно обращаться к разделам документации (Dashboard и Использование Data API) и специалистам ecommpay.