Klarna

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

Обзор

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

Введение

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

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

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

Тип платёжного метода платежи с использованием электронных кошельков
Платёжные инструменты электронные кошельки
Регионы использования AT, AU, BE, CA, CH, CZ, DE, DK, ES, FI, FR, GB, GR, HU, IE, IT, MX, NL, NO, NZ, PL, PT, RO, SE, SK, US
Валюты платежей EUR, AUD , CAD, CHF, CZK, DKK, GBP, HUF, MXN, NOK, PLN, NZD, RON, SEK, USD
Конвертация валют –
Разовые оплаты +
Повторяемые оплаты –
Полные возвраты +
Частичные возвраты +
Выплаты –
Опротестования + (через клиентский портал Klarna, подробнее)
Особенности
  • При работе с методом поддерживаются четыре способа оплаты: Pay in N (3 or 4) parts, Pay in 30 Days, Pay in Full, Financing.
  • При работе через Gate, как и в целом при использовании со стороны мерчанта собственных пользовательских платёжных интерфейсов, оформление элементов, связанных с брендом Klarna, должно соответствовать документации Klarna in your checkout. (При работе с платформой Ecommpay такими способами, которые не требуют применения пользовательских платёжных интерфейсов на стороне веб-сервиса, как в случаях с платёжной формой Payment Page и интерфейсом Dashboard, эти требования выполняются на стороне Ecommpay.)
  • Для повышения удобства пользователей и конверсии при работе с методом Klarna рекомендуется использовать решения, описанные в документации Perfect Customer Journey Reference, в том числе следующую функциональность:
    • Side-wide banners and FAQ — со встраиванием в веб-сервис графических и информационных материалов о сервисе Klarna.
    • Sign in with Klarna — со встраиванием в веб-сервис возможностей аутентификации пользователей через сервис Klarna.
    • On-Site Messaging — с отображением в карточках товаров и товарной корзине веб-сервиса динамически формируемых сообщений о возможности оплаты в рассрочку методом Klarna.
    • Express Checkout — с отображением в карточках товаров и товарной корзине веб-сервиса брендированных кнопок Pay with Klarna и Continue with Klarna, обеспечивающих ускоренную работу с методом для пользователей, ранее работавших с сервисом Klarna, за счёт автоматического заполнения сведений о доставке и способе оплаты.
  • При работе с методом Klarna поддерживается синхронизация учётных записей интерфейса Dashboard от Ecommpay и клиентского портала Klarna. Для настройки такой синхронизации можно обращаться к курирующему менеджеру Ecommpay.
  • Для работы с опротестованиями по оплатам, проведённым методом Klarna, следует использовать возможности сервиса Klarna, через клиентский портал и API которого можно просматривать сведения об опротестованиях, предоставлять подтверждающие материалы и ответы, а также отслеживать статусы и результаты рассмотрения опротестований (подробнее — в документации Klarna Dispute Management). При этом в платформе Ecommpay такие опротестования не обрабатываются.
Организация и стоимость подключения по согласованию с курирующим менеджером Ecommpay

Схема работы

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

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

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

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

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

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

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

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

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

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

Для проведения оплаты через Payment Page с использованием метода Klarna со стороны веб-сервиса в общем случае необходимо отправить запрос, содержащий требуемые параметры и подпись, на рабочий URL Ecommpay и принять оповещение о результате. При этом в случае с оплатой в две стадии позднее может быть необходимым подтвердить списание заблокированных средств (подробнее). При работе с методом поддерживаются четыре способа оплаты: Pay in N (3 or 4) parts, Pay in 30 Days, Pay in Full, Financing. Полная схема проведения оплаты в одну стадию выглядит следующим образом.

Рис. 4. Проведение оплаты через 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.

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

Информация о форматах запросов и оповещений, используемых для проведения оплат методом 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. Для указания варианта проведения оплаты, отличного от заданного по умолчанию для используемого проекта, необходимо указывать параметр operation_type со значением sale (для незамедлительного списания средств при оплате в одну стадию) или auth (для предварительной блокировки средств при оплате в две стадии).
  4. Должна указываться информация о пользователе через следующие параметры:
    • identify_doc_number — идентификатор документа, удостоверяющего личность пользователя, формат зависит от страны регистрации пользователя:
      • Швеция — Personal Identity Number вида YYYYMMDD-SSSS
      • Норвегия — National Identity Number вида DDMMYYIIIKK
      • Италия— Fiscal Code вида LLLLLLYYMMDDSSSC
      • Финляндия— Personal Identity Code вида DDMMYYCZZZQ
      • Испания— National Identity Document вида SSSSSSSSA
      • Дания— Personal Identification Number вида DDMMYY-SSSS
      • США— Social Secutity Number, состоит из 9 цифр
    • identify_doc_issue_country — код страны, в которой выпущен документ, удостоверяющий личность пользователя, в формате ISO 3166-1 alpha-2.
    • customer_account_info — информация об учётной записи пользователя на стороне веб-сервиса в виде строки, полученной в результате кодирования исходного JSON-объекта с применением алгоритма Base64. Этот объект должен включать в себя следующие объекты и параметры:
      • account — объект со сведениями об учётной записи пользователя на стороне веб-сервиса мерчанта:
        • date — дата создания учётной записи пользователя на стороне веб-сервиса в формате ДД-ММ-ГГГГ
        • loyalty_level — индикатор уровня пользователя в программе лояльности веб-сервиса мерчанта, (параметр можно не указывать, если в объект account включается объект purchase_history):
          • 01 — высокий
          • 02 — средний
          • 03 — низкий
        • purchase_history — массив объектов со сведениями о предыдущих заказах пользователя (параметр можно не указывать, если в объект account включается объект loyalty_level):
          • number_of_purchases — количество оформленных заказов за последние 12 месяцев
          • number_of_paid_purchases — количество оплаченных заказов за последние 12 месяцев
          • total_amount — общая сумма, на которую были сформированы заказы за последние 12 месяцев, в дробных единицах валюты, указанной в параметре currency этого же объекта
          • currency — код валюты для указанной суммы в формате ISO-4217 alpha-3
          • payment_method — указатель типа используемого платёжного инструмента, который может принимать одно из следующих значений: 01 — платёжная карта той платёжной системы, через которую инициируется проведение платежа, 02 — счёт с возможностью прямого списания средств, 03 — мобильный кошелёк, 04 — платёжная карта другой платёжной системы, 999 — иной инструмент.
          • first_purchase_at — дата и время первой покупки пользователя в веб-сервисе в формате ДД-ММ-ГГГГчч:мм
          • last_purchase_at — дата и время последней покупки пользователя в веб-сервисе в формате ДД-ММ-ГГГГчч:мм
    • purchase_data — информация о товарных позициях оплачиваемого заказа, представляет собой строку, полученную в результате кодирования исходного JSON-объекта с применением алгоритма Base64, и включает в себя массив объектов positions с различными сведениями из числа допустимых:
      • positions — массив, содержащий информацию о товарных позициях, относящихся с оплате, должен содержать хотя бы один объект, включающий в себя следующие параметры (для каждой позиции товаров или услуг):
        • type — указатель типа оплачиваемой позиции, который может принимать одно из следующих значений, определяющих состав необходимых параметров для указания в объекте positions: discount — скидка или промокод (на какие-либо товары или услуги), flight — авиаперелёт, car — аренда автомобиля, bus — поездка на автобусе, ferry — паромная переправа, train — поездка на поезде, hotel — проживание в отеле, voucher — ваучер или подарочный сертификат, insurance — страхование, event — посещение мероприятия (например, концерта или выставки), subscription — товар или услуга по подписке с регулярными списаниями (например, доступ к просмотру фильмов в онлайн-кинотеатре на месяц), ondemand — товар или услуга по подписке с нерегулярными списаниями (например, просмотр фильма в онлайн-кинотеатре), marketplace — товар или услуга на торговой площадке, product — товар иной категории, service — услуга иной категории, other — иной вид сервиса, оказываемого пользователю.
        • name — название позиции.
        • quantity — количество товаров или услуг в рамках позиции.
        • amount_total — итоговая стоимость товаров или услуг в рамках позиции, в дробных единицах валюты платежа или в виде дефиса (-) для позиций с типом discount.

          Для типов product, service, discount и other достаточно указания параметров type, name, quantity и amount_total.

      • Обязательность следующих параметров для указания в массиве positions зависит от типа позиции.
        Рис. 5. Для типа flight
        • departure — объект, содержащий информацию о вылете:
          • airport — трёхбуквенный код, присвоенный аэропорту вылета Международной ассоциацией воздушного транспорта (IATA).
          • date — дата вылета в формате ДД-ММ-ГГГГ.
          • country — код страны в адресе места вылета в формате ISO 3166-1 alpha-2.
        • arrival — объект, содержащий информацию о прибытии:
          • airport — трёхбуквенный код, присвоенный аэропорту прибытия Международной ассоциацией воздушного транспорта (ИАТА).
          • country — код страны в адресе места прибытия в формате ISO 3166-1 alpha-2.
        • passengers — массив объектов со сведениями о пассажирах:
          • first_name — имя пассажира.
          • last_name — фамилия пассажира.
        Рис. 6. Для типа car
        • departure — объект, содержащий информацию об отправлении:
          • city — название города в адресе места отправления.
          • country — код страны в адресе места отправления в формате ISO 3166-1 alpha-2.
        • arrival — объект, содержащий информацию о прибытии:
          • city — название города в адресе места прибытия.
          • country — код страны в адресе места прибытия в формате ISO 3166-1 alpha-2.
        • passengers — массив объектов со сведениями о пассажирах:
          • first_name — имя пассажира.
          • last_name — фамилия пассажира.
        Рис. 7. Для типов bus, train, ferry
        • departure — объект, содержащий информацию об отправлении:
          • date — дата отправления в формате ДД-ММ-ГГГГ.
          • city — название города в адресе места отправления.
          • country — код страны в адресе места отправления в формате ISO 3166-1 alpha-2.
        • arrival — объект, содержащий информацию о прибытии:
          • city — название города в адресе места прибытия.
          • country — код страны в адресе места прибытия в формате ISO 3166-1 alpha-2.
        • passengers — массив объектов со сведениями о пассажирах:
          • first_name — имя пассажира.
          • last_name — фамилия пассажира.
        Рис. 8. Для типа hotel
        • hotel_name — название объекта размещения (например, отеля или хостела).
        • start_date — дата начала оказания услуги (например, дата въезда в отель) в формате ДД-ММ-ГГГГ
        • end_date — дата окончания услуги (например, дата выезда из отеля) в формате ДД-ММ-ГГГГ.
        • city — название города в адресе объекта размещения.
        • country — код страны в адресе объекта размещения в формате ISO 3166-1 alpha-2.
        • guests — массив объектов со сведениями о постояльцах:
          • first_name — имя постояльца.
          • last_name — фамилия постояльца.
        Рис. 9. Для типа voucher
        • start_date — дата начала действия ваучера или сертификата в формате ДД-ММ-ГГГГ.
        • company — название организации, предоставляющей ваучер или сертификат.
        Рис. 10. Для типа event
        • event_type — тип мероприятия, возможные значения: CONCERT — концерт, FESTIVAL — фестиваль, TOUR — экскурсия или тур, IN_PERSON_EDUCATION — образовательное мероприятие в очном формате, DIGITAL_EDUCATION — образовательное мероприятие в формате онлайн, SPORT — спортивное мероприятие, CONFERENCE — конференция, EXPO — выставка.
        • start_date — дата начала мероприятия в формате ДД-ММ-ГГГГ.
        • end_date — дата окончания мероприятия в формате ДД-ММ-ГГГГ.
        • country — код страны в адресе места проведения мероприятия в формате ISO 3166-1 alpha-2.
        Рис. 11. subscription
        • billing_plans — массив объектов со сведениями о подписке:
          • start_date — дата начала списаний в формате ДД-ММ-ГГГГ, начиная со следующего дня от даты проведения платежа.
          • interval — указатель базового периода списаний, который может принимать одно из следующих значений:
            • DAY — день.
            • WEEK — неделя.
            • MONTH — месяц.
            • YEAR — год.
          • frequency — множитель для кратного увеличения базового периода списаний
        Рис. 12. ondemand
        • interval — указатель ориентировочного базового периода списаний, который может принимать одно из следующих значений:
          • DAY — день.
          • WEEK — неделя.
          • MONTH — месяц.
          • YEAR — год.
        • frequency — множитель для кратного увеличения ориентировочного базового периода списаний.
        Рис. 13. Для типа marketplace
        • seller — объект со сведениями о продавце на торговой площадке:
          • name — имя или название продавца на торговой площадке.
          • city — название города местонахождения продавца.
          • country — код страны местонахождения продавца в формате ISO 3166-1 alpha-2.
          • registation — дата регистрации продавца на торговой площадке в формате ДД-ММ-ГГГГ.
        • product_category — указатель категории товара или услуги, который может принимать одно из допустимых значений:
          • ACCESSORIES — аксессуары
          • APPLIANCES — бытовая техника
          • APPS_AND_GAMES — приложения и игры
          • ARTS_CRAFTS_AND_SEWING — товары для рукоделия и творчества
          • AUTOMOTIVE — товары для автомобилей
          • BEAUTY — товары для ухода за собой
          • BABY — товары для детей
          • BABY_CLOTHING — одежда для детей
          • BAGS_AND_PURSES — сумки и кошельки
          • BOOKS — книги и другие печатные издания
          • CDS_AND_VINYL — компакт-диски, виниловые пластинки и другие физические носители с аудиозаписями
          • CELL_PHONES_AND_ACCESSORIES — мобильные телефоны и аксессуары для них
          • COLLECTIBLES_AND_FINE_ARTS — предметы искусства и коллекционирования
          • DIGITAL_MUSIC — музыкальные записи в электронном формате
          • ELECTRONICS — электронные устройства
          • GROCERY_AND_GOURMET_FOOD — продукты питания и деликатесы
          • HANDMADE — изделия ручной работы
          • HEALTH_AND_PERSONAL_CARE — товары для здоровья и личной гигиены
          • HOME_AND_KITCHEN — товары для дома и кухни
          • INDUSTRIAL_AND_SCIENTIFIC — промышленное и научное оборудование
          • LUGGAGE_AND_TRAVEL_GEAR — чемоданы, дорожные аксессуары и другие товары для путешествий
          • MAGAZINE_SUBSCRIPTIONS — подписки на печатные или цифровые периодические издания
          • MEN_CLOTHING — мужская одежда
          • MUSICAL_INSTRUMENTS — музыкальные инструменты
          • OFFICE_PRODUCTS — офисные товары
          • PATIO_LAWN_AND_GARDEN — товары для сада и дачи
          • PET_SUPPLIES — товары для животных
          • SHOES — обувь
          • SOFTWARE — программное обеспечение
          • SPORTS_AND_OUTDOORS — товары для спорта и активного отдыха
          • TOOLS_AND_HOME_IMPROVEMENT — строительные инструменты и товары для ремонта
          • TOYS_AND_GAMES — игрушки и игры
          • VIDEO_GAMES — видеоигры
          • WOMEN_CLOTHING — женская одежда
    • additional_info — строковый объект с дополнительными сведениями, которые могут быть актуальны для проведения платежа в отдельных случаях:
      • integration_metadata, object — объект со сведениями о том, как технически был инициирован платёж:
        • originators, array of objects — массив объектов со сведениями о компонентах, использованных для инициирования платежа (на стороне веб-сервиса мерчанта; вплоть до шести объектов):
          • name, string — название пользовательского сервиса, с помощью которого был инициирован платёж, в виде прописных (заглавных) букв, цифр и нижних подчёркиваний (_) вместо пробелов (например, COSMO_GAMES_STORE)
          • module_name, string — название технического модуля, с помощью которого был инициирован платёж, например cosmoshopPlugin
          • module_version, string — номер версии технического модуля, с помощью которого был инициирован платёж, например 2.1
          • session_reference, string — идентификатор операции или сеанса работы в рамках веб-сервиса в виде универсального уникального идентификатора версии 7 (UUIDv7) в соответствии со стандартом RFC 9562, например 018b163d-0b83-7ba0-b837-da575d0ff824
  5. Для соответствия пользовательского интерфейса требованиям сервиса Klarna рекомендуется указывать код языка отображения платёжной формы в параметре language_code и код региона в адресе проживания пользователя в параметре region_code. Код языка должен указываться в соответствии с кодом региона и следующими правилами соответствия.

    Рис. 14. Перечень допустимых языков для разных регионов
    Код региона Допустимые языки
    AT de, en
    AU en
    BE nl, fr, en
    CA en, fr
    CH en, de, fr, it
    CZ cs, en
    DE de, en
    DK da, en
    ES es, en
    FI fi, sv, en
    FR fr, en
    GB en
    GR el, en
    HU hu, en
    IE en
    IT it, en
    NL nl, en
    NO nb, nn, en
    NZ en
    PL pl, en
    PT pt, en
    RO ro, en
    SE sv, en
    SK sk, en
    US en

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

  6. Для предварительного выбора метода Klarna необходимо указывать код этого метода в параметре force_payment_method — klarna.
  7. Дополнительно могут использоваться любые другие параметры из числа доступных для работы с Payment Page (подробнее).
  8. После указания всех целевых параметров необходимо составлять подпись (подробнее).

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

{
  "project_id": 12345,
  "payment_amount": 663800,
  "payment_currency": "EUR",
  "payment_id": "ORDER-20260309-0001",
  "payment_description": "Order with 2 computers, 2 flight tickets and 1 event reservation",
  "customer_id": "cust-9001001",
  "customer_first_name": "John",
  "customer_last_name": "Smith",
  "customer_phone": "+31612345678",
  "customer_street": "Herengracht",
  "building_address": "101",
  "customer_state": "NH",
  "customer_email": "john@example.com",
  "customer_city": "Amsterdam",
  "region_code": "NL",
  "language_code": "nl",
  "customer_zip": "1015BG",
  "customer_day_of_birth": "15-04-1985",
  "identify_doc_number": "19850415-1234",
  "doc_issue_country": "NL",
  "customer_account_info": "eyJkYXRlIjoiMTAtMDItMjAyMSIsImNoYW5nZV9kYXRlIjoiMDiOnsibG95YWx0eV9sZXZlbCI6IkhJR0giLCJhdXRoX3RpbWUiOiIwOS0wMy0yMDI2MTA6MTUiLCJhdXRoX21ldGhvZCI6IlBBU1NXT1JEIn19",
  "purchase_data": "eyJkYXRlIjoiMTAtMDItMjAyMSIsImNoYW5nZV9kYXRlIjoiMDEtMDMtMjAgiLCJhdXRoX3RpbWUiOiIwOS0wMy0yMDI2MTA6MTUiLCJhdXRoX21ldGhvZCI6IlBBU1NXT1JEIn18",
  "additional_info":{
   "integration_metadata":{
     "originators":[{
      "moduleName":"cosmoshopPlugin",
      "moduleVersion":"2.1",
      "name":"COSMO_GAMES_STORE",
      "session_reference":"018b163d-0b83-7ba0-b837-da575d0ff824"
    }]
   }
  }
}
Рис. 15. Пример достаточного набора данных для запроса на оплату
{
  "project_id": 12345,
  "payment_amount": 663800,
  "payment_currency": "EUR",
  "payment_id": "ORDER-20260309-0001",
  "payment_description": "Order with 2 computers, 2 flight tickets and 1 event reservation",
  "customer_id": "cust-9001001",
  "customer_first_name": "John",
  "customer_last_name": "Smith",
  "customer_phone": "+31612345678",
  "customer_street": "Herengracht",
  "building_address": "101",
  "customer_state": "NH",
  "customer_email": "john@example.com",
  "customer_city": "Amsterdam",
  "region_code": "NL",
  "language_code": "nl",
  "customer_zip": "1015BG",
  "customer_day_of_birth": "15-04-1985",
  "identify_doc_number": "19850415-1234",
  "doc_issue_country": "NL",
  "customer_account_info": "eyJkYXRlIjoiMTAtMDItMjAyMSIsImNoYW5nZV9kYXRlIjoiMDiOnsibG95YWx0eV9sZXZlbCI6IkhJR0giLCJhdXRoX3RpbWUiOiIwOS0wMy0yMDI2MTA6MTUiLCJhdXRoX21ldGhvZCI6IlBBU1NXT1JEIn19",
  "purchase_data": "eyJkYXRlIjoiMTAtMDItMjAyMSIsImNoYW5nZV9kYXRlIjoiMDEtMDMtMjAgiLCJhdXRoX3RpbWUiOiIwOS0wMy0yMDI2MTA6MTUiLCJhdXRoX21ldGhvZCI6IlBBU1NXT1JEIn18",
  "additional_info":{
   "integration_metadata":{
     "originators":[{
      "moduleName":"cosmoshopPlugin",
      "moduleVersion":"2.1",
      "name":"COSMO_GAMES_STORE",
      "session_reference":"018b163d-0b83-7ba0-b837-da575d0ff824"
    }]
   }
  }
}

Расширенный перечень допустимых параметров

В данном разделе представлен расширенный список параметров для указания в запросах на оплату. Обязательные параметры представлены в разделе Формат запросов.

Параметр Описание

additional_info
string, optional

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

Рис. 16. Допустимые сведения
  • integration_metadata, object — объект со сведениями о том, как технически был инициирован платёж:
    • originators, array of objects — массив объектов со сведениями о компонентах, использованных для инициирования платежа (на стороне веб-сервиса мерчанта; вплоть до шести объектов):
      • name, string — название пользовательского сервиса, с помощью которого был инициирован платёж, в виде прописных (заглавных) букв, цифр и нижних подчёркиваний (_) вместо пробелов (например, COSMO_GAMES_STORE)
      • module_name, string — название технического модуля, с помощью которого был инициирован платёж, например cosmoshopPlugin
      • module_version, string — номер версии технического модуля, с помощью которого был инициирован платёж, например 2.1
      • session_reference, string — идентификатор операции или сеанса работы в рамках веб-сервиса в виде универсального уникального идентификатора версии 7 (UUIDv7) в соответствии со стандартом RFC 9562, например 018b163d-0b83-7ba0-b837-da575d0ff824
  • klarna_network_session_token, string — токен, полученный от платёжной системы или провайдера и предназначенный для безопасного взаимодействия в рамках сеанса работы (Klarna Network Session Token)
  • klarna_network_data, string—строковый объект, содержащий информацию, которая может быть использована для обеспечения совместимости между сервисом Klarna и его партнёрами. Информация, указанная в этом параметре, может дополнять информацию, указанную в других параметрах. Длина значения должна быть от 1 до 10240 символов (включительно). Объект должен быть отформатирован следующим образом:
    "{\"content\":{\"customer_account_info\":[{\"unique_account_identifier\":\"test@example.com\",\"account_registration_date\":\"2017-02-13T10:49:20Z\",\"account_last_modified\":\"2019-03-13T11:45:27Z\"}]},\"content_type\":\"application/vnd.klarna.internal.emd-v2+json\"}"
Рис. 17. Пример исходного JSON-объекта
"integration_metadata":{
   "originators":[{
      "moduleName":"cosmoshopPlugin",
      "moduleVersion":"2.1",
      "name":"COSMO_GAMES_STORE",
      "session_reference":"018b163d-0b83-7ba0-b837-da575d0ff824"
    }]
   },
"klarna_network_session_token":"453",
"klarna_network_data": {\"content\":{\"customer_account_info\":[{\"unique_account_identifier\":\"test@gmail.com\",\"account_registration_date\":\"2017-02-13T10:49:20Z\",\"account_last_modified\":\"2019-03-13T11:45:27Z\"}]},\"content_type\":\"application/vnd.klarna.internal.emd-v2+json\"}"

customer_shipping
string, optional

Информация о доставке товара или услуги пользователю

Представляет собой строку,полученную в результате кодирования исходного JSON-объекта с применением алгоритма Base64. Этот объект может включать в себя различные сведения из числа допустимых.

Рис. 18. Допустимые сведения
  • shipping_extended, array of objects — массив объектов со сведениями о доставке, который может быть актуален для отдельных альтернативных платёжных методов и может включать в себя следующие сведения:
    • address, string — основные сведения об адресе доставки в виде названия улицы и номера дома
    • address2, string — дополнительные сведения об адресе доставки в виде названия района, дополнений к номеру дома или других сведений
    • carrier, string — название организации, осуществляющей доставку
    • city, string — название города (или иного населённого пункта) в адресе доставки
    • country, string, ^[A-Z]{2}$ — код страны в адресе доставки в формате ISO 3166-1 alpha-2
    • email, string — адрес электронной почты
    • first_name, string — имя получателя доставки
    • last_name, string — фамилия получателя доставки
    • phone, string, ^[0-9]{4,24}$ — номер телефона получателя доставки, в виде последовательности цифр без использования разделителей
    • postal, string — почтовый индекс в адресе доставки
    • region_code, string, ^[0-9A-Z]{1,3}$ — внутренний код региона в адресе доставки, представляет собой вторую часть международного кода территории (в формате ISO 3166-2), без двухбуквенного кода страны и разделительного дефиса
    • shipping_reference, string — идентификатор доставки в рамках веб-сервиса или службы доставки, обязательный при указании в одном запросе сведений о разных доставках
    • type, string — указатель варианта доставки, который может принимать одно из следующих значений:
      • 011 — доставка до двери на платёжный адрес пользователя
      • 012 — доставка до строения на платёжный адрес пользователя
      • 013 — доставка в почтовый ящик по платёжному адресу пользователя
      • 021 — доставка до двери на другой подтверждённый адрес
      • 022 — доставка до строения на другой подтверждённый адрес
      • 023 — доставка в почтовый ящик по другому подтверждённому адресу
      • 031 — доставка до двери на адрес, не совпадающий с платёжным и не являющийся подтверждённым
      • 032 — доставка до строения на адрес, не совпадающий с платёжным и не являющийся подтверждённым
      • 033 — доставка в почтовый ящик по адресу, не совпадающему с платёжным и не являющемуся подтверждённым
      • 041 — самовывоз из магазина
      • 042 — самовывоз со склада
      • 043 — самовывоз из почтомата
      • 044 — самовывоз из пункта выдачи заказов
      • 051 — доставка на адрес электронной почты
      • 052 — доставка с загрузкой файла в веб-сервисе
      • 059 — другой способ электронной доставки
      • 071 — другой способ физической доставки
    • type_attributes, array of strings — массив строк с перечнем указателей дополнительных параметров доставки, в числе которых могут использоваться следующие значения:
      • 01 — указатель необходимости подтверждения доставки пользователем (с получением его подписи)
      • 02 — указатель необходимости подтверждения личности получателя (с проверкой сведений специалистом доставки)
      • 03 — указатель необходимости бесконтактной доставки
      • 04 — указатель необходимости доставки товара до двери
      • 05 — указатель необходимости доставки товара до строения
      • 06 — указатель необходимости доставки товара соседям
      • 07 — указатель необходимости экспресс-доставки
      • 08 — указатель использования отслеживаемой доставки
      • 09 — указатель использования неотслеживаемой доставки
Рис. 19. Пример исходного JSON-объекта
"customer_shipping": [
    {
      "first_name": "John",
      "last_name": "Smith",
      "email": "john@example.com",
      "phone": "+31612345678",
      "address": "Herengracht 101",
      "address2": "Herengracht 101, apt 1",
      "postal": "1015BG",
      "city": "Amsterdam",
      "region_code": "NH",
      "country": "NL",
      "type": "TO_DOOR",
      "type_attributes": [
        "TRACKED",
        "SIGNATURE_REQUIRED"
      ],
      "carrier": "PostNL",
      "shipping_reference": "SHIP-COMPUTER-1"
    },
    {
      "first_name": "Jane",
      "last_name": "Smith",
      "email": "jane@example.com",
      "phone": "+31698765432",
      "address": "Keizersgracht 250",
      "address2": "Keizersgracht 250, office reception",
      "postal": "1016EV",
      "city": "Amsterdam",
      "region_code": "NH",
      "country": "NL",
      "type": "TO_DOOR",
      "type_attributes": [
        "TRACKED",
        "EXPRESS"
      ],
      "carrier": "DHL",
      "shipping_reference": "SHIP-COMPUTER-2"
    }
  ]
Рис. 20. Пример соответствующей строки
ImN1c3RvbWVyX3NoaXBwaW5nIjogWwogICAgewogICAgICAiZmlyc3RfbmFtZSI6ICJKb2huIiwKICAgICAgImxhc3RfbmFtZSI6ICJTbWl0aCIsCiAgICAgICJlbWFpbCI6ICJqb2huQGV4YW1wbGUuY29tIiwKICAgICAgInBob25lIjogIiszMTYxMjM0NTY3OCIsCiAgICAgICJhZGRyZXNzIjogIkhlcmVuZ3JhY2h0IDEwMSIsCiAgICAgICJhZGRyZXNzMiI6ICJIZXJlbmdyYWNodCAxMDEsIGFwdCAxIiwKICAgICAgInBvc3RhbCI6ICIxMDE1QkciLAogICAgICAiY2l0eSI6ICJBbXN0ZXJkYW0iLAogICAgICAicmVnaW9uX2NvZGUiOiAiTkgiLAogICAgICAiY291bnRyeSI6ICJOTCIsCiAgICAgICJ0eXBlIjogIlRPX0RPT1IiLAogICAgICAidHlwZV9hdHRyaWJ1dGVzIjogWwogICAgICAgICJUUkFDS0VEIiwKICAgICAgICAiU0lHTkFUVVJFX1JFUVVJUkVEIgogICAgICBdLAogICAgICAiY2FycmllciI6ICJQb3N0TkwiLAogICAgICAic2hpcHBpbmdfcmVmZXJlbmNlIjogIlNISVAtQ09NUFVURVItMSIKICAgIH0sCiAgICB7CiAgICAgICJmaXJzdF9uYW1lIjogIkphbmUiLAogICAgICAibGFzdF9uYW1lIjogIlNtaXRoIiwKICAgICAgImVtYWlsIjogImphbmVAZXhhbXBsZS5jb20iLAogICAgICAicGhvbmUiOiAiKzMxNjk4NzY1NDMyIiwKICAgICAgImFkZHJlc3MiOiAiS2VpemVyc2dyYWNodCAyNTAiLAogICAgICAiYWRkcmVzczIiOiAiS2VpemVyc2dyYWNodCAyNTAsIG9mZmljZSByZWNlcHRpb24iLAogICAgICAicG9zdGFsIjogIjEwMTZFViIsCiAgICAgICJjaXR5IjogIkFtc3RlcmRhbSIsCiAgICAgICJyZWdpb25fY29kZSI6ICJOSCIsCiAgICAgICJjb3VudHJ5IjogIk5MIiwKICAgICAgInR5cGUiOiAiVE9fRE9PUiIsCiAgICAgICJ0eXBlX2F0dHJpYnV0ZXMiOiBbCiAgICAgICAgIlRSQUNLRUQiLAogICAgICAgICJFWFBSRVNTIgogICAgICBdLAogICAgICAiY2FycmllciI6ICJESEwiLAogICAgICAic2hpcHBpbmdfcmVmZXJlbmNlIjogIlNISVAtQ09NUFVURVItMiIKICAgIH0KICBdCg==

customer_account_info
string, optional

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

Представляет собой строку, полученную в результате кодирования исходного JSON-объекта с применением алгоритма Base64.Этот объект может включать в себя объект customer с различными сведениями из числа допустимых.

Рис. 21. Допустимые сведения
  • address_match, string — указатель совпадения платёжного адреса пользователя с адресом доставки, указанным в объекте shipping, в виде одного из следующих значений:
    • Y — адреса совпадают
    • N — адреса не совпадают
  • account, object — объект со сведениями об учётной записи пользователя на стороне веб-сервиса мерчанта:
    • activity_day, integer — количество попыток проведения оплаты за последние 24 часа, в виде числа от 0 до 999
    • activity_year, integer — количество попыток проведения оплаты за последние 365 дней, в виде числа от 0 до 999
    • additional, string — дополнительная информация об учётной записи пользователя, например её идентификатор, в произвольном формате с использованием до 64 символов
    • age_indicator, string, ^0[1-5]$ — индикатор давности учётной записи, который может принимать одно из следующих значений:
      • 01 — при невозможности оценить давность (при инициировании платежа без аутентификации пользователя)
      • 02 — при нулевой давности (при создании учётной записи для инициирования платежа)
      • 03 — при давности менее 30 дней
      • 04 — при давности от 30 до 60 дней
      • 05 — при давности более 60 дней
    • auth_data, string — дополнительная информация об аутентификации на стороне веб-сервиса, в произвольном формате с использованием не более 255 символов
    • auth_method, string, ^(0[1-4]|0[1-4][1-6])$ — указатель способа последней аутентификации пользователя на стороне веб-сервиса, который может принимать одно из следующих значений:
      • для классических карточных платежей:
        • 01 — отсутствие аутентификации
        • 02 — аутентификация с использованием данных, сохранённых на стороне веб-сервиса мерчанта
        • 03 — аутентификация с использованием технологии Federated Identity (например, Google Account или Facebook)
        • 04 — аутентификация с использованием аутентификатора, соответствующего стандартам Fast IDentity Online (FIDO)
      • для платежей с использованием альтернативных платёжных методов:
        • 021 — аутентификация с использованием пароля учётной записи
        • 022 — аутентификация с использованием многоразового кода
        • 023 — аутентификация с использованием одноразового проверочного кода (One Time PIN, OTP), полученного в коротком сообщении (SMS)
        • 024 — аутентификация с использованием одноразового проверочного кода (One Time PIN, OTP), полученного в электронном письме
        • 025 — аутентификация по ссылке, полученной в электронном письме
        • 026 — аутентификация по ссылке, полученной в коротком сообщении (SMS)
        • 031 — „бесшовная“ сетевая аутентификация (Silent Network Authentication)
        • 032 — аутентификация с использованием Federated Identity по номеру телефона
        • 041 — аутентификация с использованием электронного ключа (passkey)
    • auth_time, string, ^\\d{2}-\\d{2}-\\d{4}\\d{2}:\\d{2}$ — дата и время последней аутентификации пользователя на стороне веб-сервиса в формате ДД-ММ-ГГГГчч:мм
    • change_date, string, ^\\d{2}-\\d{2}-\\d{4}$ — дата последних изменений в учётной записи, за исключением изменения или сброса пароля, в формате ДД-ММ-ГГГГ
    • change_indicator, string, ^0[1-4]$ — индикатор давности изменений в учётной записи, за исключением изменения или сброса пароля, который может принимать одно из следующих значений:
      • 01 — при нулевой давности (при изменениях в день проведения платежа)
      • 02 — при давности менее 30 дней
      • 03 — при давности от 30 до 60 дней
      • 04 — при давности более 60 дней
    • date, string, ^\\d{2}-\\d{2}-\\d{4}$ — дата создания учётной записи в формате ДД-ММ-ГГГГ
    • device_purchase_history, array of objects — массив объектов со сведениями о предыдущих заказах с используемого устройства пользователя:
      • number_of_purchases, number — количество оформленных заказов за последние 12 месяцев
      • number_of_paid_purchases, number — количество оплаченных заказов за последние 12 месяцев
      • number_of_disputed_purchases, number — количество заказов с опротестованиями за последние 12 месяцев
      • total_amount, number — общая сумма, на которую были сформированы заказы за последние 12 месяцев, в дробных единицах валюты, указанной в параметре currency этого же объекта
      • currency, string, ^[A-Z]{3}$ — код валюты для указанной суммы в формате ISO-4217 alpha-3
      • payment_method, string — указатель типа используемого платёжного инструмента, который может принимать одно из следующих значений:
        • 01 — платёжная карта той платёжной системы, через которую инициируется проведение платежа
        • 02 — счёт с возможностью прямого списания средств
        • 03 — мобильный кошелёк
        • 04 — платёжная карта другой платёжной системы
        • 999 — иной инструмент
      • first_purchase_at, string, ^\\d{2}-\\d{2}-\\d{4}\\d{2}:\\d{2}$ — дата и время первой покупки пользователя в веб-сервисе в формате ДД-ММ-ГГГГчч:мм
      • last_purchase_at, string, ^\\d{2}-\\d{2}-\\d{4}\\d{2}:\\d{2}$ — дата и время последней покупки пользователя в веб-сервисе в формате ДД-ММ-ГГГГчч:мм
    • loyalty_level, string — индикатор уровня пользователя в программе лояльности веб-сервиса мерчанта, приведённый к одному из следующих значений:
      • 01 — высокий
      • 02 — средний
      • 03 — низкий
    • pass_change_date, string, ^\\d{2}-\\d{2}-\\d{4}$ — дата последнего изменения или сброса пароля в формате ДД-ММ-ГГГГ
    • pass_change_indicator, string, ^0[1-5]$ — индикатор давности последнего изменения или сброса пароля, который может принимать одно из следующих значений:
      • 01 — при невозможности оценить давность (пароль не был изменён или сброшен)
      • 02 — при нулевой давности (пароль был изменён или сброшен в день проведения платежа)
      • 03 — при давности менее 30 дней
      • 04 — при давности от 30 до 60 дней
      • 05 — при давности более 60 дней
    • payment_age, string, ^\\d{2}-\\d{2}-\\d{4}$ — дата добавления реквизитов платёжного инструмента в формате ДД-ММ-ГГГГ
    • payment_age_indicator, string, ^0[1-5]$ — давность сохранения данных платёжного инструмента, используемой для проведения платежа, который может принимать одно из следующих значений:
      • 01 — при невозможности оценить давность (платёж проводится без аутентификации в учётной записи)
      • 02 — при нулевой давности (данные карты сохранены в день проведения платежа)
      • 03 — при давности менее 30 дней
      • 04 — при давности от 30 до 60 дней
      • 05 — при давности более 60 дней
    • provision_attempts, integer — количество попыток сохранения реквизитов для новых платёжных инструментов за последние 24 часа, от 0 до 999
    • purchase_history, array of objects — массив объектов со сведениями о предыдущих заказах пользователя:
      • number_of_purchases, number — количество оформленных заказов за последние 12 месяцев
      • number_of_paid_purchases, number — количество оплаченных заказов за последние 12 месяцев
      • number_of_disputed_purchases, number — количество заказов с опротестованиями за последние 12 месяцев
      • total_amount, number — общая сумма, на которую были сформированы заказы за последние 12 месяцев, в дробных единицах валюты, указанной в параметре currency этого же объекта
      • currency, string, ^[A-Z]{3}$ — код валюты для указанной суммы в формате ISO-4217 alpha-3
      • payment_method, string — указатель типа используемого платёжного инструмента, который может принимать одно из следующих значений:
        • 01 — платёжная карта той платёжной системы, через которую инициируется проведение платежа
        • 02 — счёт с возможностью прямого списания средств
        • 03 — мобильный кошелёк
        • 04 — платёжная карта другой платёжной системы
        • 999 — иной инструмент
      • first_purchase_at, string, ^\\d{2}-\\d{2}-\\d{4}\\d{2}:\\d{2}$ — дата и время первой покупки пользователя в веб-сервисе в формате ДД-ММ-ГГГГчч:мм
      • last_purchase_at, string, ^\\d{2}-\\d{2}-\\d{4}\\d{2}:\\d{2}$ — дата и время последней покупки пользователя в веб-сервисе в формате ДД-ММ-ГГГГчч:мм
    • purchase_number, integer — количество покупок, совершённых через учётную запись за последние 6 месяцев, от 0 до 9999
    • suspicious_activity, string, ^0[1-2]$ — индикатор подозрительной активности, который может принимать одно из следующих значений:
      • 01 — без выявления подозрительной активности
      • 02 — с выявлением подозрительной активности
    • home_phone, string — номер домашнего телефона пользователя, в виде последовательности цифр без использования разделителей
    • work_phone, string — номер рабочего телефона пользователя, в виде последовательности цифр без использования разделителей
Рис. 22. Пример исходного JSON-объекта
"date": "10-02-2021",
"change_date": "01-03-2026",
"additional": {
  "loyalty_level": "HIGH",
  "auth_time": "09-03-202610:15",
  "auth_method": "PASSWORD",
  "purchase_history": [
    {
      "number_of_purchases": 18,
      "number_of_paid_purchases": 17,
      "number_of_disputed_purchases": 1,
      "total_amount": 845900,
      "currency": "EUR",
      "payment_method": "CREDIT_CARD",
      "first_purchase_at": "14-03-202309:40",
      "last_purchase_at": "01-03-202620:25"
    }
  ]
Рис. 23. Пример соответствующей строки
eyAKICAiY3VzdG9tZXIiOnsgCiAgICAiYWRkcmVzc19tYXRjaCI6IlkiLAogICAgImhvbWVfcGhvbmUiOiI3OTEwNTIxMTExMSIsCiAgICAid29ya19waG9uZSI6Ijc0OTU1MjExMTExIiwKICAgICJhY2NvdW50Ijp7IAogICAgICAiYWRkaXRpb25hbCI6ImdhbWVyMTIzNDUiLAogICAgICAiYWdlX2luZGljYXRvciI6IjAxIiwKICAgICAgImRhdGUiOiIwMS0xMC0yMDIyIiwKICAgICAgImNoYW5nZV9pbmRpY2F0b3IiOiIwMSIsCiAgICAgICJjaGFuZ2VfZGF0ZSI6IjAxLTEwLTIwMjIiLAogICAgICAicGFzc19jaGFuZ2VfaW5kaWNhdG9yIjoiMDEiLAogICAgICAicGFzc19jaGFuZ2VfZGF0ZSI6IjAxLTEwLTIwMjIiLAogICAgICAicHVyY2hhc2VfbnVtYmVyIjoxMiwKICAgICAgInByb3Zpc2lvbl9hdHRlbXB0cyI6MTYsCiAgICAgICJhY3Rpdml0eV9kYXkiOjIyLAogICAgICAiYWN0aXZpdHlfeWVhciI6MjIyMiwKICAgICAgInBheW1lbnRfYWdlX2luZGljYXRvciI6IjAxIiwKICAgICAgInBheW1lbnRfYWdlIjoiMDEtMTAtMjAyMiIsCiAgICAgICJzdXNwaWNpb3VzX2FjdGl2aXR5IjoiMDEiLAogICAgICAiYXV0aF9tZXRob2QiOiIwMSIsCiAgICAgICJhdXRoX3RpbWUiOiIwMS0xMC0yMDIyMTM6MTIiLAogICAgICAiYXV0aF9kYXRhIjoibG9naW5fMDEwMiIKICAgIH0KICB9Cn0==

purchase_data
string, optional

Информация о товарных позициях оплачиваемого заказа.

Представляет собой строку, полученную в результате кодирования исходного JSON-объекта с применением алгоритма Base64, и включает в себя массив объектов positions с различными сведениями из числа допустимых.

Рис. 24. Допустимые сведения

В состав массива positions могут включаться следующие сведения.

Общие сведения о каждой позиции (применимые для любых позиций и достаточные для позиций с типами discount, product, service и other)

  • type, string — указатель типа оплачиваемой позиции, который может принимать одно из следующих значений:
    • bus — поездка на автобусе
    • car — аренда автомобиля
    • discount — скидка или промокод (на какие-либо товары или услуги)
    • event — посещение мероприятия (например, концерта или выставки)
    • ferry — паромная переправа
    • flight — авиаперелёт
    • hotel — проживание в отеле
    • insurance — страхование
    • marketplace — товар или услуга на торговой площадке
    • ondemand — товар или услуга по подписке с нерегулярными списаниями (например, просмотр фильма в онлайн-кинотеатре)
    • subscription — товар или услуга по подписке с регулярными списаниями (например, доступ к просмотру фильмов в онлайн-кинотеатре на месяц)
    • train — поездка на поезде
    • voucher — ваучер или подарочный сертификат
    • product — товар иной категории
    • service — услуга иной категории
    • other — иной вид сервиса, оказываемого пользователю
  • name, string — название позиции
  • amount, integer — стоимость единицы товара или услуги в рамках позиции, в дробных единицах валюты платежа, для позиций с типом discount указывается отрицательное значение (например, -1000)
  • quantity, number — количество товаров или услуг в рамках позиции
  • amount_total, number — итоговая стоимость товаров или услуг в рамках позиции, в дробных единицах валюты платежа или в виде дефиса (-) для позиций с типом discount
  • tax_total, number — сумма налога или комиссии, включённая в стоимость позиции, в дробных единицах валюты платежа или в виде дефиса (-) для позиций с типом discount
  • product_reference, string — идентификатор товара или услуги в рамках веб-сервиса
  • product_url, string — адрес страницы веб-сервиса с карточкой товара или услуги
  • product_image, string — адрес файла с изображением товара или услуги
  • item_reference, string — идентификатор позиции в рамках перечня всех приобретаемых позиций
  • shipping_reference, string — идентификатор доставки по позиции в рамках веб-сервиса или службы доставки

Частные сведения об услугах перевозки (для позиций с типами bus, car, ferry, flight и train)

  • departure, object — объект со сведениями об отправлении:
    • address, string — основные сведения об адресе места отправления в виде названия улицы и номера дома (не указывается для типа flight)
    • address2, string — дополнительные сведения об адресе места отправления в виде названия района, дополнений к номеру дома или других сведений (не указывается для типа flight)
    • date, string, ^\\d{2}-\\d{2}-\\d{4}$ — дата отправления в формате ДД-ММ-ГГГГ
    • city, string — название города в адресе места отправления
    • country, string, ^[A-Z]{2}$ — код страны в адресе места отправления в формате ISO 3166-1 alpha-2
    • location, string — название места отправления (не указывается для типа flight)
    • postal, string — почтовый индекс в адресе места отправления (не указывается для типа flight)
    • region_code, string, ^[0-9A-Z]{1,3}$ — внутренний код региона (штата, провинции или иной территориальной области) в адресе места отправления, представляет собой вторую часть международного кода территории (в формате ISO 3166-2), без двухбуквенного кода страны и разделительного дефиса (не указывается для типа flight)
    • airport, string — трёхбуквенный код, присвоенный аэропорту вылета Международной ассоциацией воздушного транспорта (IATA)
  • arrival, object — объект со сведениями о прибытии:
    • address, string — основные сведения об адресе прибытия в виде названия улицы и номера дома (не указывается для типа flight)
    • address2, string — дополнительные сведения об адресе прибытия в виде названия района, дополнений к номеру дома или других сведений (не указывается для типа flight)
    • city, string — название города в адресе места прибытия
    • country, string, ^[A-Z]{2}$ — код страны в адресе места прибытия в формате ISO 3166-1 alpha-2 (не указывается для типа flight)
    • postal, string — почтовый индекс в адресе места прибытия (не указывается для типа flight)
    • region_code, string, ^[0-9A-Z]{1,3}$ — внутренний код региона (штата, провинции или иной территориальной области) в адресе места прибытия, представляет собой вторую часть международного кода территории (в формате ISO 3166-2), без двухбуквенного кода страны и разделительного дефиса (не указывается для типа flight)
    • airport, string — трёхбуквенный код, присвоенный аэропорту прибытия Международной ассоциацией воздушного транспорта (IATA)
  • bus_company, string — название организации, осуществляющей автобусную перевозку (указывается только для типа bus)
  • car_rental_company, string — название организации, предоставляющей автомобиль в аренду
  • ferry_line, string — название организации, осуществляющей паромную переправу
  • airline, string — двухбуквенный код, присвоенный авиакомпании Международной ассоциацией воздушного транспорта (IATA)
  • train_company, string — название организации, осуществляющей железнодорожную перевозку
  • affiliate, string — название партнёрской организации, предоставляющей услугу
  • booking_reference, string — идентификатор (код) бронирования, актуальный для авиаперелёта
  • passengers, array of objects — массив объектов со сведениями о пассажирах:
    • first_name, string — имя пассажира
    • last_name, string — фамилия пассажира
  • class, string — указатель класса обслуживания, который может принимать одно из следующих значений:
    • COMPACT — компакт-класс
    • ECONOMY — экономкласс
    • PREMIUM_ECONOMY — улучшенный экономкласс
    • BUSINESS — бизнес-класс
    • FIRST_CLASS — первый класс
  • insurances, array of objects — массив объектов со сведениями о страховых услугах:
    • company, string — название страховой организации
    • insurance_type, string — указатель типа страховой услуги, который может принимать одно из следующих значений:
      • BANKRUPTCY — страхование от банкротства поставщика услуги
      • CANCELATION — страхование отмены услуги
      • EMERGENCY — страхование экстренной помощи
      • MEDICAL — медицинское страхование
    • amount, number — стоимость страховой услуги в дробных единицах валюты, указанной в параметре currency этого же объекта
    • currency, string, ^[A-Z]{3}$ — код валюты для стоимости страховой услуги в формате ISO-4217 alpha-3
  • price, number — стоимость билета или бронирования в дробных единицах валюты, указанной в параметре currency этого же объекта
  • currency, string, ^[A-Z]{3}$ — код валюты для стоимости билета или бронирования в формате ISO-4217 alpha-3

Частные сведения о проживании (для позиций с указателем типа hotel)

  • hotel_name, string — название объекта размещения (например, отеля или хостела)
  • affiliate, string — название партнёрской организации, предоставляющей услугу
  • host, object — объект со сведениями об арендодателе или ином владельце объекта размещения:
    • type, string — указатель типа аренды:
      • HOSTEL — бронирование номера или койко-места в хостеле
      • HOTEL — бронирование номера в отеле
      • OWNER — аренда объекта напрямую у владельца
      • RENTAL_AGENCY — аренда объекта через агентство
    • host_reference, string — идентификатор арендодателя в рамках используемого сервиса бронирования
    • country, string, ^[A-Z]{2}$ — код страны в адресе арендодателя (юридического адреса для юридического лица или адреса проживания для физического лица) в формате ISO 3166-1 alpha-2
    • registration_date, string, ^\\d{2}-\\d{2}-\\d{4}$ — дата регистрации арендодателя в рамках используемого сервиса бронирования в формате ДД-ММ-ГГГГ
    • reservations, number — количество бронирований у арендодателя в рамках используемого сервиса бронирования за последние 12 месяцев
  • lodging_type, string — указатель типа объекта размещения, который может принимать одно из следующих значений:
    • ROOM — комната
    • CABANA — кабана (пляжный павильон)
    • STANDARD — номер базовой категории
    • SUITE — номер повышенной комфортности
    • APARTMENT — апартаменты
    • HOUSE — дом
    • VILLA — жильё повышенной комфортности
    • PENTHOUSE — премиальные апартаменты или номер на верхнем этаже здания
  • address, string — основные сведения об адресе объекта размещения в виде названия улицы и номера дома
  • address2, string — дополнительные сведения об адресе объекта размещения в виде названия района, дополнений к номеру дома или других сведений
  • city, string — название города в адресе объекта размещения
  • country, string, ^[A-Z]{2}$ — код страны в адресе объекта размещения в формате ISO 3166-1 alpha-2
  • postal, string — почтовый индекс в адресе объекта размещения
  • region_code, string, ^[0-9A-Z]{1,3}$ — внутренний код региона (штата, провинции или иной территориальной области) в адресе объекта размещения, представляет собой вторую часть международного кода территории (в формате ISO 3166-2), без двухбуквенного кода страны и разделительного дефиса
  • rooms, number — количество бронируемых объектов размещения (например, комнат или номеров)
  • start_date, string, ^\\d{2}-\\d{2}-\\d{4}$ — дата начала оказания услуги (например, дата въезда в отель) в формате ДД-ММ-ГГГГ
  • end_date, string, ^\\d{2}-\\d{2}-\\d{4}$ — дата окончания услуги (например, дата выезда из отеля) в формате ДД-ММ-ГГГГ
  • guests, array of objects — массив объектов со сведениями о постояльцах:
    • first_name, string — имя постояльца
    • last_name, string — фамилия постояльца
  • insurances, array of objects — массив объектов со сведениями о страховых услугах:
    • company, string — название страховой организации
    • insurance_type, string — указатель типа страховой услуги, который может принимать одно из следующих значений:
      • BANKRUPTCY — страхование от банкротства поставщика услуги
      • CANCELATION — страхование отмены услуги
      • EMERGENCY — страхование экстренной помощи
      • MEDICAL — медицинское страхование
    • amount, number — стоимость страховой услуги в дробных единицах валюты, указанной в параметре currency этого же объекта
    • currency, string, ^[A-Z]{3}$ — код валюты для стоимости страховой услуги в формате ISO-4217 alpha-3
  • price, number — стоимость услуги в дробных единицах валюты, указанной в параметре currency этого же объекта
  • currency, string, ^[A-Z]{3}$ — код валюты, в которой указана стоимость услуги, в формате ISO-4217 alpha-3

Частные сведения о ваучере или подарочном сертификате (для позиций с типом voucher)

  • company, string — название организации, предоставляющей ваучер или сертификат
  • affiliate, string — название партнёрской организации, предоставляющей ваучер или сертификат
  • start_date, string, ^\\d{2}-\\d{2}-\\d{4}$ — дата начала действия ваучера или сертификата в формате ДД-ММ-ГГГГ
  • end_date, string, ^\\d{2}-\\d{2}-\\d{4}$ — дата окончания действия ваучера или сертификата в формате ДД-ММ-ГГГГ
  • voucher_type, string — указатель типа ваучера или сертификата, который может принимать одно из следующих значений:
    • DIGITAL_PRODUCT — ваучер на получение цифрового товара
    • DISCOUNT — ваучер на получение скидки, в относительной или абсолютной сумме
    • GIFT_CARD — подарочный сертификат с фиксированным номиналом
    • PHYSICAL_PRODUCT — ваучер на получение материального товара
    • SERVICES — ваучер на получение услуги

Частные сведения об услуге страхования (для позиций с типом insurance)

  • company, string — название организации, предоставляющей услугу
  • insurance_type, string — указатель типа страховой услуги, который может принимать одно из следующих значений:
    • BANKRUPTCY — страхование от банкротства поставщика услуги
    • CANCELATION — страхование отмены услуги
    • EMERGENCY — страхование экстренной помощи
    • MEDICAL — медицинское страхование
  • amount, number — стоимость страховой услуги в дробных единицах валюты, указанной в параметре currency этого же объекта
  • currency, string, ^[A-Z]{3}$ — код валюты для стоимости страховой услуги в формате ISO-4217 alpha-3

Частные сведения о мероприятии (для позиций с типом event)

  • event_type, string — указатель типа мероприятия, который может принимать одно из следующих значений:
    • CONCERT — концерт
    • CONFERENCE — конференция
    • DIGITAL_EDUCATION — образовательное мероприятие в формате онлайн
    • EXPO — выставка
    • FESTIVAL — фестиваль
    • IN_PERSON_EDUCATION — образовательное мероприятие в очном формате
    • SPORT — спортивное мероприятие
    • TOUR — экскурсия или тур
  • company, string — название организации, предоставляющей услугу
  • affiliate, string — название партнёрской организации, предоставляющей услугу
  • venue_name, string — название места проведения мероприятия (например, название парка или конференц-зала)
  • address, string — основные сведения об адресе места проведения мероприятия в виде названия улицы и номера дома
  • address2, string — дополнительные сведения об адресе места проведения мероприятия в виде названия района, дополнений к номеру дома или других сведений
  • city, string — название города в адресе места проведения мероприятия
  • country, string, ^[A-Z]{2}$ — код страны в адресе места проведения мероприятия в формате ISO 3166-1 alpha-2
  • postal, string — почтовый индекс в адресе места проведения мероприятия
  • region_code, string, ^[0-9A-Z]{1,3}$ — внутренний код региона (штата, провинции или иной территориальной области) в адресе места проведения мероприятия, представляет собой вторую часть международного кода территории (в формате ISO 3166-2), без двухбуквенного кода страны и разделительного дефиса
  • start_date, string, ^\\d{2}-\\d{2}-\\d{4}$ — дата начала мероприятия в формате ДД-ММ-ГГГГ
  • end_date, string, ^\\d{2}-\\d{2}-\\d{4}$ — дата окончания мероприятия в формате ДД-ММ-ГГГГ
  • access_controlled, boolean — индикатор наличия цифрового контроля доступа к услуге
  • insurances, array of objects — массив объектов со сведениями о страховых услугах:
    • company, string — название страховой организации
    • insurance_type, string — указатель типа страховой услуги, который может принимать одно из следующих значений:
      • BANKRUPTCY — страхование от банкротства поставщика услуги
      • CANCELATION — страхование отмены услуги
      • EMERGENCY — страхование экстренной помощи
      • MEDICAL — медицинское страхование
    • amount, number — стоимость страховой услуги в дробных единицах валюты, указанной в параметре currency этого же объекта
    • currency, string, ^[A-Z]{3}$ — код валюты для стоимости страховой услуги в формате ISO-4217 alpha-3

Частные сведения об услуге с нерегулярными списаниями (для позиций с указателем типа ondemand)

  • amount_min, number — минимально допустимая сумма одного списания в дробных единицах валюты, указанной в параметре currency этого же объекта
  • amount_max, number — максимально допустимая сумма одного списания в дробных единицах валюты, указанной в параметре currency этого же объекта
  • amount_average, number — ориентировочная средняя сумма одного списания в дробных единицах валюты, указанной в параметре currency этого же объекта
  • currency, string, ^[A-Z]{3}$ — код валюты для отдельного списания в формате ISO-4217 alpha-3
  • interval, string — указатель ориентировочного базового периода списаний, который может принимать одно из следующих значений:
    • DAY — день
    • WEEK — неделя
    • MONTH — месяц
    • YEAR — год
  • frequency, number — множитель для кратного увеличения ориентировочного базового периода списаний

Частные сведения об услуге с регулярными списаниями (для позиций с типом subscription)

  • billing_plans, array of objects — массив объектов со сведениями о подписке:
    • amount, number — сумма отдельного списания в дробных единицах валюты, указанной в параметре currency этого же объекта
    • currency, string, ^[A-Z]{3}$ — код валюты для отдельного списания в формате ISO-4217 alpha-3
    • interval, string — указатель базового периода списаний, который может принимать одно из следующих значений:
      • DAY — день
      • WEEK — неделя
      • MONTH — месяц
      • YEAR — год
    • frequency, number — множитель для кратного увеличения базового периода списаний
    • start_date, string, ^\\d{2}-\\d{2}-\\d{4}$ — дата начала списаний в формате ДД-ММ-ГГГГ, начиная со следующего дня от даты проведения платежа
  • free_trial, string — указатель использования пробного периода, который может принимать одно из следующих значений:
    • ACTIVE — с пробным периодом
    • INACTIVE — без пробного периода
  • subscription_reference, string — идентификатор услуги или её типа в рамках веб-сервиса, который может быть неуникальным (например, PREMIUM_MONTHLY)

Частные сведения о товаре или услуге на торговой площадке (для позиций с типом marketplace)

  • seller, object — объект со сведениями о продавце на торговой площадке:
    • name, string — имя или название продавца на торговой площадке
    • address, string — основные сведения об адресе местонахождения продавца в виде названия улицы и номера дома
    • address2, string — дополнительные сведения об адресе местонахождения продавца в виде названия района, дополнений к номеру дома или других сведений
    • city, string — название города местонахождения продавца
    • country, string, ^[A-Z]{2}$ — код страны местонахождения продавца в формате ISO 3166-1 alpha-2
    • postal, string — почтовый индекс местонахождения продавца
    • region_code, string, ^[0-9A-Z]{1,3}$ — внутренний код региона (штата, провинции или иной территориальной области) в адресе местонахождения продавца, представляет собой вторую часть международного кода территории (в формате ISO 3166-2), без двухбуквенного кода страны и разделительного дефиса
    • rating, string — рейтинг продавца на торговой площадке, приведённый к одному из следующих значений:
      • VERY_HIGH — очень высокий
      • HIGH — высокий
      • MEDIUM — средний
      • LOW — низкий
      • VERY_LOW — очень низкий
    • registration, string, ^\\d{2}-\\d{2}-\\d{4}$ — дата регистрации продавца на торговой площадке в формате ДД-ММ-ГГГГ
    • registration_updated, string, ^\\d{2}-\\d{2}-\\d{4}$ — дата последних изменений в сведениях о продавце в формате ДД-ММ-ГГГГ
    • last_login, string, ^\\d{2}-\\d{2}-\\d{4}$ — дата последней аутентификации продавца на торговой площадке в формате ДД-ММ-ГГГГ
    • reference, string — идентификатор продавца на торговой площадке
  • number_of_transactions, number — количество платёжных операций у посредника, через которого осуществляется продажа товара, за последние 12 месяцев
  • volume_of_transactions, number — сумма, на которую были выполнены платёжные операции у посредника, через которого осуществляется продажа товара, за последние 12 месяцев, в дробных единицах валюты
  • product_category, string — указатель категории товара или услуги, который может принимать одно из следующих значений:
    • ACCESSORIES — аксессуары
    • APPLIANCES — бытовая техника
    • APPS_AND_GAMES — приложения и игры
    • ARTS_CRAFTS_AND_SEWING — товары для рукоделия и творчества
    • AUTOMOTIVE — товары для автомобилей
    • BEAUTY — товары для ухода за собой
    • BABY — товары для детей
    • BABY_CLOTHING — одежда для детей
    • BAGS_AND_PURSES — сумки и кошельки
    • BOOKS — книги и другие печатные издания
    • CDS_AND_VINYL — компакт-диски, виниловые пластинки и другие физические носители с аудиозаписями
    • CELL_PHONES_AND_ACCESSORIES — мобильные телефоны и аксессуары для них
    • COLLECTIBLES_AND_FINE_ARTS — предметы искусства и коллекционирования
    • DIGITAL_MUSIC — музыкальные записи в электронном формате
    • ELECTRONICS — электронные устройства
    • GROCERY_AND_GOURMET_FOOD — продукты питания и деликатесы
    • HANDMADE — изделия ручной работы
    • HEALTH_AND_PERSONAL_CARE — товары для здоровья и личной гигиены
    • HOME_AND_KITCHEN — товары для дома и кухни
    • INDUSTRIAL_AND_SCIENTIFIC — промышленное и научное оборудование
    • LUGGAGE_AND_TRAVEL_GEAR — чемоданы, дорожные аксессуары и другие товары для путешествий
    • MAGAZINE_SUBSCRIPTIONS — подписки на печатные или цифровые периодические издания
    • MEN_CLOTHING — мужская одежда
    • MUSICAL_INSTRUMENTS — музыкальные инструменты
    • OFFICE_PRODUCTS — офисные товары
    • PATIO_LAWN_AND_GARDEN — товары для сада и дачи
    • PET_SUPPLIES — товары для животных
    • SHOES — обувь
    • SOFTWARE — программное обеспечение
    • SPORTS_AND_OUTDOORS — товары для спорта и активного отдыха
    • TOOLS_AND_HOME_IMPROVEMENT — строительные инструменты и товары для ремонта
    • TOYS_AND_GAMES — игрушки и игры
    • VIDEO_GAMES — видеоигры
    • WOMEN_CLOTHING — женская одежда
  • line_item_references, array of strings — массив адресов страниц веб-сервиса с карточками приобретаемых товаров или услуг
  • shipping_references, array of strings — массив строк с перечнем идентификаторов доставки для приобретаемых товаров в рамках веб-сервиса или службы доставки

identify_doc_issue_country
string, optional

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

Указывается в формате ISO 3166-1 alpha-2.

Пример: GB

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

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

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

Рис. 25. Пример данных из оповещения о проведении оплаты
{
        "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=="
    }

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

Рис. 26. Пример данных из оповещения об отклонении оплаты
{
        "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 также могут быть полезны следующие материалы:

  • Быстрый старт — инструкция по оперативной организации приёма платежей через Payment Page, с использованием SDK и примеров исходного кода.
  • Организация взаимодействия — статья о том, как строится работа с платёжной платформой через Payment Page и как можно организовывать эту работу со стороны веб-сервиса в различных случаях.
  • Работа с подписью к данным — статья о порядке создания и проверки подписи, используемой в программных запросах, ответах и оповещениях для обеспечения защищённого обмена данными при взаимодействии с платёжной платформой.
  • Проведение платежей — статьи о типах платежей, которые можно проводить через платформу, схемах их проведения и допустимых операциях и статусах.
  • Проведение оплат — статья о порядке проведения через Payment Page разовых одностадийных оплат с незамедлительными списаниями.
  • Блокировка средств — статья о порядке выполнения через Payment Page предварительных блокировок средств в рамках разовых двухстадийных оплат с последующими списаниями.
  • Работа с информацией об операциях — статья о статусах и служебных кодах, которые используются в платформе, чтобы фиксировать состояние операций и причины их отклонения.

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

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

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

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

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

Рис. 27. Проведение оплаты через 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/klarna/sale для проведения оплаты в одну стадию,
    • /v2/payment/klarna/auth для проведения оплаты в две стадии.
  2. В каждом запросе должны использоваться следующие объекты и параметры:
    • general — объект, содержащий основные идентификационные сведения запроса:
      • project_id — идентификатор проекта, полученный от Ecommpay при интеграции;,
      • payment_id — идентификатор платежа, уникальный в рамках проекта;,
      • signature — подпись запроса, составленная после указания всех целевых параметров (подробнее — в разделе Работа с подписью к данным); (подробнее),
    • payment — объект, содержащий сведения о платеже:
      • amount — сумма платежа;,
      • currency — код валюты платежа в формате ISO-4217 alpha-3;,
    • customer — объект, содержащий сведения о пользователе:
      • id — идентификатор пользователя, уникальный в рамках проекта;,
      • ip_address — IP-адрес пользователя, актуальный для инициируемого платежа
      • identify — объект, содержащий сведения о документе, удостоверяющем личность пользователя:
        • doc_number — идентификатор документа, удостоверяющего личность пользователя, формат зависит от страны регистрации пользователя:
          • Швеция — Personal Identity Number вида YYYYMMDD-SSSS
          • Норвегия — National Identity Number вида DDMMYYIIIKK
          • Италия— Fiscal Code вида LLLLLLYYMMDDSSSC
          • Финляндия— Personal Identity Code вида DDMMYYCZZZQ
          • Испания— National Identity Document вида SSSSSSSSA
          • Дания— Personal Identification Number вида DDMMYY-SSSS
          • США— Social Secutity Number, состоит из 9 цифр
      • doc_issue_country — код страны, в которой выпущен документ, удостоверяющий личность пользователя, указывается в формате ISO 3166-1 alpha-2.
    • account — объект с информацией об учётной записи пользователя на стороне веб-сервиса:
      • date — дата создания учётной записи пользователя на стороне веб-сервиса в формате ДД-ММ-ГГГГ
      • loyalty_level — индикатор уровня пользователя в программе лояльности веб-сервиса мерчанта, (параметр можно не указывать, если в объект account включается объект purchase_history):
        • 01 — высокий
        • 02 — средний
        • 03 — низкий
      • purchase_history — массив объектов со сведениями о предыдущих заказах пользователя (параметр можно не указывать, если в объект account включается объект loyalty_level):
        • number_of_purchases — количество оформленных заказов за последние 12 месяцев
        • number_of_paid_purchases — количество оплаченных заказов за последние 12 месяцев
        • total_amount — ообщая сумма, на которую были сформированы заказы за последние 12 месяцев, в дробных единицах валюты, указанной в параметре currency этого же объекта
        • currency — код валюты для указанной суммы в формате ISO-4217 alpha-3
        • payment_method — указатель типа используемого платёжного инструмента, который может принимать одно из следующих значений: допустимые значения: 01 — платёжная карта той платёжной системы, через которую инициируется проведение платежа, 02 — счёт с возможностью прямого списания средств, 03 — мобильный кошелёк, 04 — платёжная карта другой платёжной системы; 999 — иной инструмент.
        • first_purchase_at — дата и время первой покупки пользователя в веб-сервисе в формате ДД-ММ-ГГГГчч:мм
        • last_purchase_at — дата и время последней покупки пользователя в веб-сервисе в формате ДД-ММ-ГГГГчч:мм
    • purchase_data — массив с информацией о товарных позициях оплачиваемого заказа с различными сведениями из числа допустимых:
      • positions — массив, содержащий информацию о товарных позициях, относящихся с оплате, должен содержать хотя бы один объект, включающий в себя следующие параметры (для каждой позиции товаров или услуг):
        • type — указатель типа оплачиваемой позиции, который может принимать одно из следующих значений, определяющих состав необходимых параметров для указания в объекте positions: discount — скидка или промокод (на какие-либо товары или услуги), flight — авиаперелёт, car — аренда автомобиля, bus — поездка на автобусе, ferry — паромная переправа, train — поездка на поезде, hotel — проживание в отеле, voucher — ваучер или подарочный сертификат, insurance — страхование, event — посещение мероприятия (например, концерта или выставки), subscription — товар или услуга по подписке с регулярными списаниями (например, доступ к просмотру фильмов в онлайн-кинотеатре на месяц), ondemand — товар или услуга по подписке с нерегулярными списаниями (например, просмотр фильма в онлайн-кинотеатре), marketplace — товар или услуга на торговой площадке, product — товар иной категории, service — услуга иной категории, other — иной вид сервиса, оказываемого пользователю.
        • name — название позиции.
        • quantity — количество товаров или услуг в рамках позиции.
        • amount_total — итоговая стоимость товаров или услуг в рамках позиции, в дробных единицах валюты платежа или в виде дефиса (-) для позиций с типом discount.

          Для типов product, service, discount и other достаточно указания параметров type, name, quantity и amount_total.

      • Обязательность следующих параметров для указания в массиве positions зависит от типа позиции.

        Рис. 28. Для типа flight
        • departure — объект, содержащий информацию о вылете:
          • airport — трёхбуквенный код, присвоенный аэропорту вылета Международной ассоциацией воздушного транспорта (ИАТА).
          • date — дата вылета в формате ДД-ММ-ГГГГ.
          • country — код страны в адресе места вылета в формате ISO 3166-1 alpha-2.
        • arrival — объект, содержащий информацию о прибытии:
          • airport — трёхбуквенный код, присвоенный аэропорту прибытия Международной ассоциацией воздушного транспорта (ИАТА).
          • country — код страны в адресе места прибытия в формате ISO 3166-1 alpha-2.
        • passengers — массив объектов со сведениями о пассажирах:
          • first_name — имя пассажира.
          • last_name — фамилия пассажира.
        Рис. 29. Для типа car
        • departure — объект, содержащий информацию об отправлении:
          • city — название города в адресе места отправления.
          • country — код страны в адресе места отправления в формате ISO 3166-1 alpha-2.
        • arrival — объект, содержащий информацию о прибытии:
          • city — название города в адресе места прибытия.
          • country — код страны в адресе места прибытия в формате ISO 3166-1 alpha-2.
        • passengers — массив объектов со сведениями о пассажирах:
          • first_name — имя пассажира.
          • last_name — фамилия пассажира.
        Рис. 30. Для типов bus, train, ferry
        • departure — объект, содержащий информацию об отправлении:
          • date — дата отправления в формате ДД-ММ-ГГГГ.
          • city — название города в адресе места отправления.
          • country — код страны в адресе места отправления в формате ISO 3166-1 alpha-2.
        • arrival — объект, содержащий информацию о прибытии:
          • city — название города в адресе места прибытия.
          • country — код страны в адресе места прибытия в формате ISO 3166-1 alpha-2.
        • passengers — массив объектов со сведениями о пассажирах:
          • first_name — имя пассажира.
          • last_name — фамилия пассажира.
        Рис. 31. Для типа hotel
        • hotel_name — название объекта размещения (например, отеля или хостела).
        • start_date — дата начала оказания услуги (например, дата въезда в отель) в формате ДД-ММ-ГГГГ
        • end_date — дата окончания услуги (например, дата выезда из отеля) в формате ДД-ММ-ГГГГ.
        • city — название города в адресе объекта размещения.
        • country — код страны в адресе объекта размещения в формате ISO 3166-1 alpha-2.
        • guests — массив объектов со сведениями о постояльцах:
          • first_name — имя постояльца.
          • last_name — фамилия постояльца.
        Рис. 32. Для типа voucher
        • start_date — дата начала действия ваучера или сертификата в формате ДД-ММ-ГГГГ.
        • company — название организации, предоставляющей ваучер или сертификат.
        Рис. 33. Для типа event
        • event_type — тип мероприятия, возможные значения: CONCERT — концерт, FESTIVAL — фестиваль, TOUR — экскурсия или тур, IN_PERSON_EDUCATION — образовательное мероприятие в очном формате, DIGITAL_EDUCATION — образовательное мероприятие в формате онлайн, SPORT — спортивное мероприятие, CONFERENCE — конференция, EXPO — выставка.
        • start_date — дата начала мероприятия в формате ДД-ММ-ГГГГ.
        • end_date — дата окончания мероприятия в формате ДД-ММ-ГГГГ.
        • country — код страны в адресе места проведения мероприятия в формате ISO 3166-1 alpha-2.
        Рис. 34. subscription
        • billing_plans — массив объектов со сведениями о подписке:
          • start_date — дата начала списаний в формате ДД-ММ-ГГГГ, начиная со следующего дня от даты проведения платежа.
          • interval — указатель базового периода списаний, который может принимать одно из следующих значений:
            • DAY — день.
            • WEEK — неделя.
            • MONTH — месяц.
            • YEAR — год.
          • frequency — множитель для кратного увеличения базового периода списаний
        Рис. 35. ondemand
        • interval — указатель ориентировочного базового периода списаний, который может принимать одно из следующих значений:
          • DAY — день.
          • WEEK — неделя.
          • MONTH — месяц.
          • YEAR — год.
        • frequency — множитель для кратного увеличения ориентировочного базового периода списаний.
        Рис. 36. Для типа marketplace
        • seller — объект со сведениями о продавце на торговой площадке:
          • name — имя или название продавца на торговой площадке.
          • city — название города местонахождения продавца.
          • country — код страны местонахождения продавца в формате ISO 3166-1 alpha-2.
          • registation — дата регистрации продавца на торговой площадке в формате ДД-ММ-ГГГГ.
        • product_category — указатель категории товара или услуги, который может принимать одно из допустимых значений:
          • ACCESSORIES — аксессуары
          • APPLIANCES — бытовая техника
          • APPS_AND_GAMES — приложения и игры
          • ARTS_CRAFTS_AND_SEWING — товары для рукоделия и творчества
          • AUTOMOTIVE — товары для автомобилей
          • BEAUTY — товары для ухода за собой
          • BABY — товары для детей
          • BABY_CLOTHING — одежда для детей
          • BAGS_AND_PURSES — сумки и кошельки
          • BOOKS — книги и другие печатные издания
          • CDS_AND_VINYL — компакт-диски, виниловые пластинки и другие физические носители с аудиозаписями
          • CELL_PHONES_AND_ACCESSORIES — мобильные телефоны и аксессуары для них
          • COLLECTIBLES_AND_FINE_ARTS — предметы искусства и коллекционирования
          • DIGITAL_MUSIC — музыкальные записи в электронном формате
          • ELECTRONICS — электронные устройства
          • GROCERY_AND_GOURMET_FOOD — продукты питания и деликатесы
          • HANDMADE — изделия ручной работы
          • HEALTH_AND_PERSONAL_CARE — товары для здоровья и личной гигиены
          • HOME_AND_KITCHEN — товары для дома и кухни
          • INDUSTRIAL_AND_SCIENTIFIC — промышленное и научное оборудование
          • LUGGAGE_AND_TRAVEL_GEAR — чемоданы, дорожные аксессуары и другие товары для путешествий
          • MAGAZINE_SUBSCRIPTIONS — подписки на печатные или цифровые периодические издания
          • MEN_CLOTHING — мужская одежда
          • MUSICAL_INSTRUMENTS — музыкальные инструменты
          • OFFICE_PRODUCTS — офисные товары
          • PATIO_LAWN_AND_GARDEN — товары для сада и дачи
          • PET_SUPPLIES — товары для животных
          • SHOES — обувь
          • SOFTWARE — программное обеспечение
          • SPORTS_AND_OUTDOORS — товары для спорта и активного отдыха
          • TOOLS_AND_HOME_IMPROVEMENT — строительные инструменты и товары для ремонта
          • TOYS_AND_GAMES — игрушки и игры
          • VIDEO_GAMES — видеоигры
          • WOMEN_CLOTHING — женская одежда
    • additional — объект с дополнительными сведениями, которые могут быть актуальны для проведения платежа в отдельных случаях:
      • integration_metadata, object — объект со сведениями о том, как технически был инициирован платёж:
        • originators, array of objects — массив объектов со сведениями о компонентах, использованных для инициирования платежа (на стороне веб-сервиса мерчанта; вплоть до шести объектов):
          • name, string — название пользовательского сервиса, с помощью которого был инициирован платёж, в виде прописных (заглавных) букв, цифр и нижних подчёркиваний (_) вместо пробелов (например, COSMO_GAMES_STORE)
          • module_name, string — название технического модуля, с помощью которого был инициирован платёж, например cosmoshopPlugin
          • module_version, string — номер версии технического модуля, с помощью которого был инициирован платёж, например 2.1
          • session_reference, string — идентификатор операции или сеанса работы в рамках веб-сервиса в виде универсального уникального идентификатора версии 7 (UUIDv7) в соответствии со стандартом RFC 9562, например 018b163d-0b83-7ba0-b837-da575d0ff824
  3. Для соответствия пользовательского интерфейса требованиям сервиса Klarna рекомендуется указывать код страны в адресе проживания пользователя в параметре country объекта customer. Если в запросе не указывается код языка или указывается код одной из стран, которые не поддерживаются официально, элементы интерфейса сервиса Klarna могут отображаться на английском языке, что может вести к снижению конверсии.
  4. Дополнительно могут использоваться любые другие параметры из числа указанных в спецификации.

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

{
    "general": {
        "project_id": 123456,
        "payment_id": "PMT123456-789",
        "signature": "<signature>",
    },
    "payment": {
        "amount": 10000,
        "currency": EUR,
        "description": "Order ORD123456-789",
    },
    "customer": {
        "id": "cust-9001001",
        "first_name": "John",
        "last_name": "Smith",
        "phone": "31612345678",
        "street": "Herengracht",
        "address": "101",
        "state": "NH",
        "email": "john@example.com",
        "city": "Amsterdam",
        "country": "NL",
        "zip": "1015BG",
        "day_of_birth": "15-04-1985",
        "ip_address": "1.0.0.4",
        "identify": {
            "doc_number": "19850415-1234",
            "doc_issue_country": "SE",
        },
        "account": {
            "date": "10-02-2021",
            "change_date": "01-03-2026",
            "loyalty_level": "01",
            "auth_time": "09-03-202610:15",
            "auth_method": "021",
            "purchase_history": [
                {
                    "number_of_purchases": 18,
                    "number_of_paid_purchases": 17,
                    "number_of_disputed_purchases": 1,
                    "total_amount": 845900,
                    "currency": "EUR",
                    "payment_method": "01",
                    "first_purchase_at": "14-03-202309:40",
                    "last_purchase_at": "01-03-202620:25",
                }
            ],
            "device_purchase_history": [
                {
                    "number_of_purchases": 18,
                    "number_of_paid_purchases": 17,
                    "number_of_disputed_purchases": 1,
                    "total_amount": 845900,
                    "currency": "EUR",
                    "payment_method": "01",
                    "first_purchase_at": "14-03-202309:40",
                    "last_purchase_at": "01-03-202620:25",
                }
            ],
        },
        "shipping_extended": [
            {
                "first_name": "John",
                "last_name": "Smith",
                "email": "john@example.com",
                "phone": "31612345678",
                "address": "Herengracht 101",
                "address2": "Herengracht 101",
                "postal": "1015BG",
                "city": "Amsterdam",
                "region_code": "NH",
                "country": "NL",
                "type": "011",
                "type_attributes": ["08", "01"],
                "carrier": "PostNL",
                "shipping_reference": "SHIP-COMPUTER-1",
            },
            {
                "first_name": "Jane",
                "last_name": "Smith",
                "email": "jane@example.com",
                "phone": "31698765432",
                "address": "Keizersgracht 250",
                "address2": "Keizersgracht 250",
                "postal": "1016EV",
                "city": "Amsterdam",
                "region_code": "NH",
                "country": "NL",
                "type": "011",
                "type_attributes": ["08", "07", "02"],
                "carrier": "DHL",
                "shipping_reference": "SHIP-COMPUTER-2",
            },
        ],
    },
    "return_url": {
        "return": "https://example.com/echo/success",
    },
    "purchase_data": {
        "positions": [
            {
                "type": "product",
                "name": "ExampleName",
                "quantity": 1,
                "amount_total": 189900,
                "tax_total": 32958,
                "amount": 189900,
                "product_url": "https://merchant.example.com",
                "product_image": "https://merchant.example.com",
                "product_reference": "SKU-LEN-X1G12",
                "item_reference": "ITEM-001",
                "shipping_reference": "SHIP-001",
            },
            {
                "type": "service",
                "name": "Extended Warranty 2 Years",
                "quantity": 1,
                "amount_total": 19900,
                "tax_total": 3458,
                "amount": 19900,
                "product_url": "https://merchant.example.com",
                "product_image": "https://merchant.example.com",
                "product_reference": "SVC-WARRANTY-2Y",
                "item_reference": "ITEM-002",
                "shipping_reference": "SHIP-001",
            },
            {
                "type": "discount",
                "name": "Summer Sale 10%",
                "quantity": 1,
                "amount_total": 20990,
                "tax_total": 3643,
                "amount": 20990,
                "item_reference": "ITEM-003",
            },
            {
                "type": "other",
                "name": "some",
                "quantity": 1,
                "amount_total": 20990,
                "tax_total": 3643,
                "amount": 20990,
                "item_reference": "ITEM-003",
            },
            {
                "type": "flight",
                "name": "Amsterdam → Stockholm",
                "quantity": 2,
                "amount_total": 45000,
                "tax_total": 7820,
                "amount": 22500,
                "item_reference": "ITEM-004",
                "booking_reference": "KL-20260601-AMS-ARN",
                "departure": {"airport": "AMS", "date": "01-06-2026", "city": "Amsterdam", "country": "NL"},
                "arrival": {"airport": "ARN", "city": "Stockholm", "country": "SE"},
                "airline": "KL",
                "price": 22500,
                "currency": "EUR",
                "class": "ECONOMY",
                "passengers": [
                    {"first_name": "John", "last_name": "Smith"}
                ],
                "insurances": [{"company": "AXA", "insurance_type": "CANCELATION", "amount": 2500, "currency": "EUR"}],
                "affiliate": "ExamplePartner BV",
            },
            {
                "type": "car",
                "name": "7 days rental",
                "quantity": 1,
                "amount_total": 35000,
                "tax_total": 6079,
                "amount": 35000,
                "item_reference": "ITEM-005",
                "departure": {
                    "address": "Schiphol Airport",
                    "address2": "Terminal 3",
                    "postal": "1118CP",
                    "city": "Amsterdam",
                    "region_code": "NH",
                    "country": "NL",
                    "date": "15-06-2026",
                },
                "arrival": {
                    "address": "Arlanda Airport",
                    "address2": "Terminal 5",
                    "postal": "19060",
                    "city": "Stockholm",
                    "region_code": "AB",
                    "country": "SE",
                },
                "car_rental_company": "Hertz",
                "price": 35000,
                "currency": "EUR",
                "class": "ECONOMY",
                "passengers": [{"first_name": "John", "last_name": "Smith"}],
                "insurances": [{"company": "Allianz", "insurance_type": "LOSS_DAMAGE_WAIVER", "amount": 1500, "currency": "EUR"}],
                "affiliate": "example.com",
            },
            {
                "type": "bus",
                "name": "Amsterdam → Brussels Express",
                "quantity": 1,
                "amount_total": 2500,
                "tax_total": 434,
                "amount": 2500,
                "item_reference": "ITEM-006",
                "departure": {
                    "date": "15-06-2026",
                    "location": "Amsterdam",
                    "address": "Orlyplein",
                    "address2": "1",
                    "postal": "1043DP",
                    "city": "Amsterdam",
                    "region_code": "NH",
                    "country": "NL",
                },
                "arrival": {
                    "address": "Rue du Progrès",
                    "address2": "80",
                    "postal": "1210",
                    "city": "Brussels",
                    "region_code": "BRU",
                    "country": "BE",
                },
                "bus_company": "FlixBus",
                "price": 2500,
                "currency": "EUR",
                "class": "ECONOMY",
                "passengers": [{"first_name": "John", "last_name": "Smith"}],
                "insurances": [{"company": "AXA", "insurance_type": "CANCELATION", "amount": 500, "currency": "EUR"}],
                "affiliate": "example.eu",
            },
            {
                "type": "train",
                "name": "Amsterdam → Newcastle Ferry",
                "quantity": 2,
                "amount_total": 18000,
                "tax_total": 3127,
                "amount": 9000,
                "item_reference": "ITEM-007",
                "departure": {
                    "date": "20-06-2026",
                    "location": "IJmuiden",
                    "address": "Sluisplein",
                    "address2": "33",
                    "postal": "1975AG",
                    "city": "IJmuiden",
                    "region_code": "NH",
                    "country": "NL",
                },
                "arrival": {
                    "address": "Royal Quays",
                    "address2": "Coble Dene",
                    "postal": "NE29 6EA",
                    "city": "Newcastle",
                    "region_code": "ENG",
                    "country": "GB",
                },
                "train_company": "DFDS",
                "price": 9000,
                "currency": "EUR",
                "class": "PREMIUM_ECONOMY",
                "passengers": [
                    {"first_name": "John", "last_name": "Smith"},
                    {"first_name": "Jane", "last_name": "Smith"},
                ],
                "insurances": [
                    {"company": "Allianz", "insurance_type": "CANCELATION", "amount": 1000, "currency": "EUR"}
                ],
                "affiliate": "example.eu",
            },
            {
                "type": "ferry",
                "name": "Amsterdam → Newcastle Ferry",
                "quantity": 2,
                "amount_total": 18000,
                "tax_total": 3127,
                "amount": 9000,
                "item_reference": "ITEM-007",
                "departure": {
                    "date": "20-06-2026",
                    "location": "IJmuiden Ferry",
                    "address": "Sluisplein",
                    "address2": "33",
                    "postal": "1975AG",
                    "city": "IJmuiden",
                    "region_code": "NH",
                    "country": "NL",
                },
                "arrival": {
                    "address": "Royal Quays, Coble Dene",
                    "address2": "Royal Quays, Coble Dene",
                    "postal": "NE29 6EA",
                    "city": "Newcastle",
                    "region_code": "ENG",
                    "country": "GB",
                },
                "ferry_line": "DFDS",
                "price": 9000,
                "currency": "EUR",
                "class": "PREMIUM_ECONOMY",
                "passengers": [
                    {"first_name": "John", "last_name": "Smith"},
                ],
                "insurances": [
                    {"company": "Allianz", "insurance_type": "CANCELATION", "amount": 1000, "currency": "EUR"}
                ],
                "affiliate": "example.eu",
            },
            {
                "type": "hotel",
                "name": "Hotel 1",
                "quantity": 1,
                "amount_total": 75000,
                "tax_total": 13025,
                "amount": 75000,
                "item_reference": "ITEM-008",
                "hotel_name": "Hotel",
                "start_date": "01-06-2026",
                "end_date": "04-06-2026",
                "address": "Nes",
                "address2": "49",
                "postal": "1012KD",
                "city": "Amsterdam",
                "region_code": "NH",
                "country": "NL",
                "lodging_type": "ROOM",
                "rooms": 1,
                "price": 25000,
                "currency": "EUR",
                "guests": [{"first_name": "John", "last_name": "Smith"}, {"first_name": "Jane", "last_name": "Smith"}],
                "host": {
                    "host_reference": "HOST-0042",
                    "type": "HOTEL",
                    "country": "NL",
                    "registration_date": "12-01-2015",
                    "reservations": 312,
                },
                "insurances": [
                    {"company": "Europ", "insurance_type": "CANCELATION", "amount": 3000, "currency": "EUR"}
                ],
                "affiliate": "example.com",
            },
            {
                "type": "voucher",
                "name": "Gift Card",
                "quantity": 1,
                "amount_total": 5000,
                "tax_total": 869,
                "amount": 5000,
                "item_reference": "ITEM-009",
                "start_date": "01-06-2026",
                "end_date": "01-06-2027",
                "voucher_type": "GIFT_CARD",
                "company": "example.com",
                "affiliate": "example.nl",
            },
            {
                "type": "insurance",
                "name": "Travel",
                "quantity": 1,
                "amount_total": 4500,
                "tax_total": 782,
                "item_reference": "ITEM-010",
                "company": "AXA",
                "insurance_type": "MEDICAL",
                "amount": 4500,
                "currency": "EUR",
            },
            {
                "type": "event",
                "name": "Dance Event",
                "quantity": 2,
                "amount_total": 15000,
                "tax_total": 2607,
                "amount": 7500,
                "item_reference": "ITEM-011",
                "company": "ID&T",
                "event_type": "FESTIVAL",
                "start_date": "14-10-2026",
                "end_date": "18-10-2026",
                "venue_name": "Example Dome",
                "access_controlled": True,
                "address": "De Passage 100",
                "address2": "De Passage 100",
                "postal": "1101AX",
                "city": "Amsterdam",
                "region_code": "NH",
                "country": "NL",
                "insurances": [{"company": "AXA", "insurance_type": "CANCELATION", "amount": 1500, "currency": "EUR"}],
                "affiliate": "example.nl",
            },
            {
                "type": "marketplace",
                "name": "Jacket",
                "quantity": 1,
                "amount_total": 12500,
                "tax_total": 2172,
                "amount": 12500,
                "product_url": "https://marketplace.example.com",
                "product_image": "https://marketplace.example.com",
                "product_reference": "SKU-VLJ-001",
                "item_reference": "ITEM-014",
                "shipping_reference": "SHIP-002",
                "seller": {
                    "reference": "SELLER-7890",
                    "name": "BV",
                    "address": "263",
                    "address2": "123",
                    "postal": "1016GV",
                    "city": "Amsterdam",
                    "region_code": "NH",
                    "country": "NL",
                    "registration": "15-03-2019",
                    "registration_updated": "10-01-2025",
                    "last_login": "16-04-2026",
                    "rating": "HIGH",
                },
                "product_category": "WOMEN_CLOTHING",
                "line_item_references": ["ITEM-014"],
                "shipping_references": ["SHIP-002"],
                "number_of_transactions": 145,
                "volume_of_transactions": 1875000,
            },
        ]
    },
    "additional": {
        "integration_metadata": {
           "originators": [
              "moduleName":"cosmoshopPlugin",
              "moduleVersion":"2.1",
              "name":"COSMO_GAMES_STORE",
              "session_reference":"018b163d-0b83-7ba0-b837-da575d0ff824"
    ]
   }
 }
}
Рис. 37. Пример достаточного набора данных для запроса на оплату в одну стадию
{
    "general": {
        "project_id": 123456,
        "payment_id": "PMT123456-789",
        "signature": "<signature>",
    },
    "payment": {
        "amount": 10000,
        "currency": EUR,
        "description": "Order ORD123456-789",
    },
    "customer": {
        "id": "cust-9001001",
        "first_name": "John",
        "last_name": "Smith",
        "phone": "31612345678",
        "street": "Herengracht",
        "address": "101",
        "state": "NH",
        "email": "john@example.com",
        "city": "Amsterdam",
        "country": "NL",
        "zip": "1015BG",
        "day_of_birth": "15-04-1985",
        "ip_address": "1.0.0.4",
        "identify": {
            "doc_number": "19850415-1234",
            "doc_issue_country": "SE",
        },
        "account": {
            "date": "10-02-2021",
            "change_date": "01-03-2026",
            "loyalty_level": "01",
            "auth_time": "09-03-202610:15",
            "auth_method": "021",
            "purchase_history": [
                {
                    "number_of_purchases": 18,
                    "number_of_paid_purchases": 17,
                    "number_of_disputed_purchases": 1,
                    "total_amount": 845900,
                    "currency": "EUR",
                    "payment_method": "01",
                    "first_purchase_at": "14-03-202309:40",
                    "last_purchase_at": "01-03-202620:25",
                }
            ],
            "device_purchase_history": [
                {
                    "number_of_purchases": 18,
                    "number_of_paid_purchases": 17,
                    "number_of_disputed_purchases": 1,
                    "total_amount": 845900,
                    "currency": "EUR",
                    "payment_method": "01",
                    "first_purchase_at": "14-03-202309:40",
                    "last_purchase_at": "01-03-202620:25",
                }
            ],
        },
        "shipping_extended": [
            {
                "first_name": "John",
                "last_name": "Smith",
                "email": "john@example.com",
                "phone": "31612345678",
                "address": "Herengracht 101",
                "address2": "Herengracht 101",
                "postal": "1015BG",
                "city": "Amsterdam",
                "region_code": "NH",
                "country": "NL",
                "type": "011",
                "type_attributes": ["08", "01"],
                "carrier": "PostNL",
                "shipping_reference": "SHIP-COMPUTER-1",
            },
            {
                "first_name": "Jane",
                "last_name": "Smith",
                "email": "jane@example.com",
                "phone": "31698765432",
                "address": "Keizersgracht 250",
                "address2": "Keizersgracht 250",
                "postal": "1016EV",
                "city": "Amsterdam",
                "region_code": "NH",
                "country": "NL",
                "type": "011",
                "type_attributes": ["08", "07", "02"],
                "carrier": "DHL",
                "shipping_reference": "SHIP-COMPUTER-2",
            },
        ],
    },
    "return_url": {
        "return": "https://example.com/echo/success",
    },
    "purchase_data": {
        "positions": [
            {
                "type": "product",
                "name": "ExampleName",
                "quantity": 1,
                "amount_total": 189900,
                "tax_total": 32958,
                "amount": 189900,
                "product_url": "https://merchant.example.com",
                "product_image": "https://merchant.example.com",
                "product_reference": "SKU-LEN-X1G12",
                "item_reference": "ITEM-001",
                "shipping_reference": "SHIP-001",
            },
            {
                "type": "service",
                "name": "Extended Warranty 2 Years",
                "quantity": 1,
                "amount_total": 19900,
                "tax_total": 3458,
                "amount": 19900,
                "product_url": "https://merchant.example.com",
                "product_image": "https://merchant.example.com",
                "product_reference": "SVC-WARRANTY-2Y",
                "item_reference": "ITEM-002",
                "shipping_reference": "SHIP-001",
            },
            {
                "type": "discount",
                "name": "Summer Sale 10%",
                "quantity": 1,
                "amount_total": 20990,
                "tax_total": 3643,
                "amount": 20990,
                "item_reference": "ITEM-003",
            },
            {
                "type": "other",
                "name": "some",
                "quantity": 1,
                "amount_total": 20990,
                "tax_total": 3643,
                "amount": 20990,
                "item_reference": "ITEM-003",
            },
            {
                "type": "flight",
                "name": "Amsterdam → Stockholm",
                "quantity": 2,
                "amount_total": 45000,
                "tax_total": 7820,
                "amount": 22500,
                "item_reference": "ITEM-004",
                "booking_reference": "KL-20260601-AMS-ARN",
                "departure": {"airport": "AMS", "date": "01-06-2026", "city": "Amsterdam", "country": "NL"},
                "arrival": {"airport": "ARN", "city": "Stockholm", "country": "SE"},
                "airline": "KL",
                "price": 22500,
                "currency": "EUR",
                "class": "ECONOMY",
                "passengers": [
                    {"first_name": "John", "last_name": "Smith"}
                ],
                "insurances": [{"company": "AXA", "insurance_type": "CANCELATION", "amount": 2500, "currency": "EUR"}],
                "affiliate": "ExamplePartner BV",
            },
            {
                "type": "car",
                "name": "7 days rental",
                "quantity": 1,
                "amount_total": 35000,
                "tax_total": 6079,
                "amount": 35000,
                "item_reference": "ITEM-005",
                "departure": {
                    "address": "Schiphol Airport",
                    "address2": "Terminal 3",
                    "postal": "1118CP",
                    "city": "Amsterdam",
                    "region_code": "NH",
                    "country": "NL",
                    "date": "15-06-2026",
                },
                "arrival": {
                    "address": "Arlanda Airport",
                    "address2": "Terminal 5",
                    "postal": "19060",
                    "city": "Stockholm",
                    "region_code": "AB",
                    "country": "SE",
                },
                "car_rental_company": "Hertz",
                "price": 35000,
                "currency": "EUR",
                "class": "ECONOMY",
                "passengers": [{"first_name": "John", "last_name": "Smith"}],
                "insurances": [{"company": "Allianz", "insurance_type": "LOSS_DAMAGE_WAIVER", "amount": 1500, "currency": "EUR"}],
                "affiliate": "example.com",
            },
            {
                "type": "bus",
                "name": "Amsterdam → Brussels Express",
                "quantity": 1,
                "amount_total": 2500,
                "tax_total": 434,
                "amount": 2500,
                "item_reference": "ITEM-006",
                "departure": {
                    "date": "15-06-2026",
                    "location": "Amsterdam",
                    "address": "Orlyplein",
                    "address2": "1",
                    "postal": "1043DP",
                    "city": "Amsterdam",
                    "region_code": "NH",
                    "country": "NL",
                },
                "arrival": {
                    "address": "Rue du Progrès",
                    "address2": "80",
                    "postal": "1210",
                    "city": "Brussels",
                    "region_code": "BRU",
                    "country": "BE",
                },
                "bus_company": "FlixBus",
                "price": 2500,
                "currency": "EUR",
                "class": "ECONOMY",
                "passengers": [{"first_name": "John", "last_name": "Smith"}],
                "insurances": [{"company": "AXA", "insurance_type": "CANCELATION", "amount": 500, "currency": "EUR"}],
                "affiliate": "example.eu",
            },
            {
                "type": "train",
                "name": "Amsterdam → Newcastle Ferry",
                "quantity": 2,
                "amount_total": 18000,
                "tax_total": 3127,
                "amount": 9000,
                "item_reference": "ITEM-007",
                "departure": {
                    "date": "20-06-2026",
                    "location": "IJmuiden",
                    "address": "Sluisplein",
                    "address2": "33",
                    "postal": "1975AG",
                    "city": "IJmuiden",
                    "region_code": "NH",
                    "country": "NL",
                },
                "arrival": {
                    "address": "Royal Quays",
                    "address2": "Coble Dene",
                    "postal": "NE29 6EA",
                    "city": "Newcastle",
                    "region_code": "ENG",
                    "country": "GB",
                },
                "train_company": "DFDS",
                "price": 9000,
                "currency": "EUR",
                "class": "PREMIUM_ECONOMY",
                "passengers": [
                    {"first_name": "John", "last_name": "Smith"},
                    {"first_name": "Jane", "last_name": "Smith"},
                ],
                "insurances": [
                    {"company": "Allianz", "insurance_type": "CANCELATION", "amount": 1000, "currency": "EUR"}
                ],
                "affiliate": "example.eu",
            },
            {
                "type": "ferry",
                "name": "Amsterdam → Newcastle Ferry",
                "quantity": 2,
                "amount_total": 18000,
                "tax_total": 3127,
                "amount": 9000,
                "item_reference": "ITEM-007",
                "departure": {
                    "date": "20-06-2026",
                    "location": "IJmuiden Ferry",
                    "address": "Sluisplein",
                    "address2": "33",
                    "postal": "1975AG",
                    "city": "IJmuiden",
                    "region_code": "NH",
                    "country": "NL",
                },
                "arrival": {
                    "address": "Royal Quays, Coble Dene",
                    "address2": "Royal Quays, Coble Dene",
                    "postal": "NE29 6EA",
                    "city": "Newcastle",
                    "region_code": "ENG",
                    "country": "GB",
                },
                "ferry_line": "DFDS",
                "price": 9000,
                "currency": "EUR",
                "class": "PREMIUM_ECONOMY",
                "passengers": [
                    {"first_name": "John", "last_name": "Smith"},
                ],
                "insurances": [
                    {"company": "Allianz", "insurance_type": "CANCELATION", "amount": 1000, "currency": "EUR"}
                ],
                "affiliate": "example.eu",
            },
            {
                "type": "hotel",
                "name": "Hotel 1",
                "quantity": 1,
                "amount_total": 75000,
                "tax_total": 13025,
                "amount": 75000,
                "item_reference": "ITEM-008",
                "hotel_name": "Hotel",
                "start_date": "01-06-2026",
                "end_date": "04-06-2026",
                "address": "Nes",
                "address2": "49",
                "postal": "1012KD",
                "city": "Amsterdam",
                "region_code": "NH",
                "country": "NL",
                "lodging_type": "ROOM",
                "rooms": 1,
                "price": 25000,
                "currency": "EUR",
                "guests": [{"first_name": "John", "last_name": "Smith"}, {"first_name": "Jane", "last_name": "Smith"}],
                "host": {
                    "host_reference": "HOST-0042",
                    "type": "HOTEL",
                    "country": "NL",
                    "registration_date": "12-01-2015",
                    "reservations": 312,
                },
                "insurances": [
                    {"company": "Europ", "insurance_type": "CANCELATION", "amount": 3000, "currency": "EUR"}
                ],
                "affiliate": "example.com",
            },
            {
                "type": "voucher",
                "name": "Gift Card",
                "quantity": 1,
                "amount_total": 5000,
                "tax_total": 869,
                "amount": 5000,
                "item_reference": "ITEM-009",
                "start_date": "01-06-2026",
                "end_date": "01-06-2027",
                "voucher_type": "GIFT_CARD",
                "company": "example.com",
                "affiliate": "example.nl",
            },
            {
                "type": "insurance",
                "name": "Travel",
                "quantity": 1,
                "amount_total": 4500,
                "tax_total": 782,
                "item_reference": "ITEM-010",
                "company": "AXA",
                "insurance_type": "MEDICAL",
                "amount": 4500,
                "currency": "EUR",
            },
            {
                "type": "event",
                "name": "Dance Event",
                "quantity": 2,
                "amount_total": 15000,
                "tax_total": 2607,
                "amount": 7500,
                "item_reference": "ITEM-011",
                "company": "ID&T",
                "event_type": "FESTIVAL",
                "start_date": "14-10-2026",
                "end_date": "18-10-2026",
                "venue_name": "Example Dome",
                "access_controlled": True,
                "address": "De Passage 100",
                "address2": "De Passage 100",
                "postal": "1101AX",
                "city": "Amsterdam",
                "region_code": "NH",
                "country": "NL",
                "insurances": [{"company": "AXA", "insurance_type": "CANCELATION", "amount": 1500, "currency": "EUR"}],
                "affiliate": "example.nl",
            },
            {
                "type": "subscription",
                "name": "Adobe Creative",
                "quantity": 1,
                "amount_total": 5999,
                "tax_total": 1042,
                "amount": 5999,
                "item_reference": "ITEM-012",
                "subscription_reference": "ADOBE-CC-MONTHLY",
                "free_trial": "INACTIVE",
                "billing_plans": [
                    {"amount": 5999, "currency": "EUR", "start_date": "01-06-2026", "interval": "MONTH", "frequency": 1}
                ],
            },
            {
                "type": "ondemand",
                "name": "Cloud Storage",
                "quantity": 1,
                "amount_total": 1500,
                "tax_total": 261,
                "amount": 1500,
                "item_reference": "ITEM-013",
                "amount_average": 1200,
                "amount_min": 500,
                "amount_max": 3000,
                "currency": "EUR",
                "interval": "MONTH",
                "frequency": 1,
            },
            {
                "type": "marketplace",
                "name": "Jacket",
                "quantity": 1,
                "amount_total": 12500,
                "tax_total": 2172,
                "amount": 12500,
                "product_url": "https://marketplace.example.com",
                "product_image": "https://marketplace.example.com",
                "product_reference": "SKU-VLJ-001",
                "item_reference": "ITEM-014",
                "shipping_reference": "SHIP-002",
                "seller": {
                    "reference": "SELLER-7890",
                    "name": "BV",
                    "address": "263",
                    "address2": "123",
                    "postal": "1016GV",
                    "city": "Amsterdam",
                    "region_code": "NH",
                    "country": "NL",
                    "registration": "15-03-2019",
                    "registration_updated": "10-01-2025",
                    "last_login": "16-04-2026",
                    "rating": "HIGH",
                },
                "product_category": "WOMEN_CLOTHING",
                "line_item_references": ["ITEM-014"],
                "shipping_references": ["SHIP-002"],
                "number_of_transactions": 145,
                "volume_of_transactions": 1875000,
            },
        ]
    },
    "additional": {
        "integration_metadata": {
           "originators": [
              "moduleName":"cosmoshopPlugin",
              "moduleVersion":"2.1",
              "name":"COSMO_GAMES_STORE",
              "session_reference":"018b163d-0b83-7ba0-b837-da575d0ff824"
    ]
   }
 }
}

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

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

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

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

{
  "general": {
    "project_id": 210,
    "payment_id": "test_payment",
    "signature": "PJkV8ej\/UG0Di8hTng6JvC7vQsaC6ta/9MTO8yJA=="
  },
  "payment": {
    "amount": 1000,
    "currency": "EUR"
  }
Рис. 38. Пример достаточного набора данных для запроса на списание средств
{
  "general": {
    "project_id": 210,
    "payment_id": "test_payment",
    "signature": "PJkV8ej\/UG0Di8hTng6JvC7vQsaC6ta/9MTO8yJA=="
  },
  "payment": {
    "amount": 1000,
    "currency": "EUR"
  }

Формат запросов на отмену блокировки средств

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

  1. Для инициирования каждой отмены блокировки средств должен использоваться отдельный POST-запрос к конечной точке /v2/payment/klarna/cancel.
  2. В каждом запросе должны использоваться следующие объекты и параметры:
    • general — объект, содержащий основные идентификационные сведения запроса:
      • project_id — идентификатор проекта, полученный от Ecommpay при интеграции;,
      • payment_id — идентификатор платежа, уникальный в рамках проекта;,
      • signature — подпись запроса, составленная после указания всех целевых параметров (подробнее — в разделе Работа с подписью к данным); (подробнее),
  3. Дополнительно могут использоваться любые другие параметры из числа указанных в спецификации.

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

{
  "general": {
    "project_id": 210,
    "payment_id": "test_payment",
    "signature": "PJkV8ej\/UG0Di8hTng6JvC7pTv+AWoXW\/9MTO8yJA=="
  }
}
Рис. 39. Пример достаточного набора данных для запроса на отмену блокировки средств
{
  "general": {
    "project_id": 210,
    "payment_id": "test_payment",
    "signature": "PJkV8ej\/UG0Di8hTng6JvC7pTv+AWoXW\/9MTO8yJA=="
  }
}

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

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

  • body — объект с данными для отправки в теле запроса, включает в себя параметр payment_request_id с данными для использования SDK Klarna при перенаправлении пользователя;
  • method — параметр с указанием HTTP-метода отправки запроса (GET или POST);
  • url — параметр со ссылкой для перенаправления.
Рис. 40. Пример объекта redirect_data
  "redirect_data": {
    "body": {
      "payment_request_id": "krn:payment:eu1:request:e6bab34f"
    },
    "method": "GET",
    "url": "https://pay.examople.com/eu/requests/92ba6a6b"
  },

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

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

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

Рис. 41. Пример данных из оповещения о проведении оплаты
{
        "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=="
    }

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

Рис. 42. Пример данных из оповещения об отклонении оплаты
{
        "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 с использованием метода Klarna со стороны веб-сервиса необходимо отправить запрос, содержащий требуемые параметры и подпись, на рабочий URL Ecommpay и принять оповещение о результате. Полная схема выполнения возврата выглядит следующим образом.

Рис. 43. Выполнение возврата через 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/refund.
  2. В каждом запросе должны использоваться следующие объекты и параметры:
    • general — объект, содержащий основные идентификационные сведения запроса:
      • project_id — идентификатор проекта, полученный от Ecommpay при интеграции;,
      • payment_id — идентификатор платежа, для которого необходимо выполнить возврат;,
      • signature — подпись запроса, составленная после указания всех целевых параметров (подробнее — в разделе Работа с подписью к данным); (подробнее)),
    • payment — объект, содержащий сведения о возврате:
      • description — комментарий к возврату или его описание;
      • amount — сумма возврата в дробных единицах валюты (является обязательной при частичном возврате);,
      • currency — код валюты возврата в формате ISO-4217 alpha-3 (является обязательным при частичном возврате);,
    • customer — объект, содержащий сведения о пользователе:
      • ip_address — IP-адрес пользователя, актуальный для инициируемого возврата.
    • purchase_data — массив с информацией о товарных позициях заказа, возврат по которым необходимо инициировать (в случае полного возврата необходимо указать все позиции, по которым была проведена оплата или блокировка средств). Структура и формат данных для указания в параметре совпадают с описанной в разделе Оплаты через Gate.
  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"
  },
    "purchase_data": {
        "positions": [
            {
                "type": "product",
                "name": "Lenovo",
                "quantity": 1,
                "amount_total": 189900,
                "tax_total": 32958,
                "amount": 189900,
                "product_url": "https://example.com",
                "product_image": "https://example.com",
                "product_reference": "SKU-LEN-X1G12",
                "item_reference": "ITEM-001",
                "shipping_reference": "SHIP-001",
            }
          ]
}
Рис. 44. Пример достаточного набора данных для запроса на возврат
{
  "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"
  },
    "purchase_data": {
        "positions": [
            {
                "type": "product",
                "name": "Lenovo",
                "quantity": 1,
                "amount_total": 189900,
                "tax_total": 32958,
                "amount": 189900,
                "product_url": "https://example.com",
                "product_image": "https://example.com",
                "product_reference": "SKU-LEN-X1G12",
                "item_reference": "ITEM-001",
                "shipping_reference": "SHIP-001",
            }
          ]
}

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

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

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

Рис. 45. Пример данных из оповещения о выполнении возврата
{
        "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=="
    }

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

Рис. 46. Пример данных из оповещения об отклонении возврата
{
        "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 также могут быть полезны следующие материалы:

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

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

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

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

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

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

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

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

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

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