Trustly

Обзор

Trustly — платёжный метод для проведения платежей с помощью интернет-банкинга. Оплаты и повторяемые оплаты осуществляются через Payment Page и Gate, возвраты и выплаты — через Gate.

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

Тип платёжного метода банковские платежи
Платёжные инструменты
  • банковские счета
  • платёжные карты
Регионы использования AT, BE, BG, CY*, CZ, DE, DK, EE, ES, FI, FR*, GB, GR*, HR*, HU, IE, IT, LT, LU*, LV, MT*, NL, NO, PL, PT*, RO, SE, SI, SK
Валюты платежей BGN, CZK, DKK, EUR, GBP, HUF, NOK, PLN, RON, SEK
Конвертация валют На стороне Trustly
Оплаты +
Выплаты +
Оплаты по сохранённым данным + **
Полные возвраты +
Частичные возвраты +
Опротестования
Особенности
  • Для проведения платежей через Gate рекомендуется использовать Дополнение информации о платеже
  • Для проведения платежей через Gate необходимо разместить логотип Trustly на вашей платёжной форме. Подробные требования к размещению можно узнать здесь. Скачать логотипы можно
  • Время обработки выплаты зависит от банка получателя и может достигать трёх дней
Организация и стоимость подключения По согласованию с курирующим менеджером ecommpay

* Для данных стран доступно только проведение выплат.

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

Схема работы

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



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

Интерфейсы Суммы, EUR (или эквивалент) Время**
Payment Page CMS Plug-ins Gate Dashboard минимум максимум базовое предельное
Оплаты + + 1,00 * *
Выплаты + * *
Оплаты по сохранённым данным + + * *
Полные возвраты + * *
Частичные возвраты + * *

* Как правило, проведение платежей с использованием сервиса Trustly укладывается в несколько минут, но в некоторых случаях оно может занимать большее время — вплоть до двух банковских дней и, при пересечении с выходными и праздничными днями, даже более. Подробную информацию при необходимости можно получить у курирующего менеджера ecommpay.

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

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

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

Рис.: Оплата через Payment Page



Рис.: Оплата через Gate



Рис.: Возврат через Gate



Рис.: Выплата через Gate



Детальные сведения о том, что необходимо делать со стороны мерчанта для проведения платежей, а также о том, что можно использовать для анализа информации о проведённых платежах и операциях, представлены далее.

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

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

Для оплаты через Payment Page с использованием метода Trustly со стороны веб-сервиса необходимо отправить запрос, содержащий требуемые параметры и подпись, на рабочий URL ecommpay и принять оповещение о результате оплаты. При этом метод Trustly можно сделать предварительно выбранным (подробнее — в разделе Предварительный выбор платёжных методов). Полная схема проведения оплаты представлена далее.



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

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

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

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

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

  1. Должен использоваться базовый минимум параметров — параметры, обязательные для любого платёжного метода:
    • project_id — идентификатор проекта, полученный от ecommpay при интеграции;
    • payment_id — идентификатор платежа, уникальный в рамках проекта;
    • payment_currency — валюта платежа в формате ISO-4217 alpha-3;
    • payment_amount — сумма платежа в дробных единицах;
    • customer_id — идентификатор пользователя в рамках проекта.
  2. Валютой платежа может быть любая, указанная в разделе Характеристика.
  3. Для проведения оплаты необходимы дополнительные параметры. Они не являются обязательными для открытия Payment Page, но всегда запрашиваются у пользователя, если не были переданы в запросе. Дополнительные (обязательные) параметры для проведения оплаты:

    • customer_first_name — имя пользователя,
    • customer_last_name — фамилия пользователя,
    • customer_email — адрес электронной почты пользователя,
    • customer_country — код страны в формате ISO 3166-1 alpha-2,
    • language_code — язык платёжной формы в формате ISO 639-1 alpha-2.
  4. Для предварительного выбора метода Trustly необходимо указывать код платёжного метода в параметре force_payment_methodonline-banking-trustly.
  5. Также могут быть запрошены дополнительные параметры, которые зависят от типа бизнеса мерчанта. Эти параметры можно передать в запросе на открытие платёжной формы или оставить их для заполнения пользователем на Payment Page.

    Список возможных параметров:
    • identify_doc_number — номер документа, подтверждающего личность пользователя;
    • payment_extra_param — объект с дополнительными данными:
      • beneficiary — информация о получателе перевода денежных средств:
        • party_type — тип получателя (PERSON или ORGANISATION),
        • first_name — имя получателя (для организации значение параметра может быть пустым),
        • last_name — фамилия пользователя или наименование организации-получателя,
        • country — код страны в формате ISO 3166-1 alpha-2.
  6. Дополнительно могут использоваться любые другие параметры из числа доступных для работы с Payment Page. Детальная информация обо всех параметрах приведена в разделе Параметры вызова платёжной формы.
  7. После определения всех параметров необходимо составить подпись. Подробную информацию см. в Работа с подписью к данным.

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

EPayWidget.run(
    { payment_id: 'X03936', 
      payment_amount: 1000, 
      payment_currency: 'EUR', 
      project_id: 100,
      customer_id: '1234567', 
      signature: "kUi2x9dKHAVNU0FYldJrxh4yo+52Kt8KU+Y1Y4HASCQ9vySO\/R
                             LCvhtT4DqtVUkDJrOcZzUCwX6R\/ekpZhkIQg=="
    }
)
Корректный запрос на открытие платёжной формы для проведения оплат (с передачей дополнительных параметров) представлен далее:
EPayWidget.run(
   {    
"payment_id": "X03936",
"payment_amount": 1000,
"payment_currency": 'EUR',
"project_id": 100, 
"signature": "kUi2x9dKHAVNU0FYldJrxh4yo+52Kt8KU+Y1Y4HASCQ9vySO\/R
                             LCvhtT4DqtVUkDJrOcZzUCwX6R\/ekpZhkIQg==",
"customer_id": "1234567",
"customer_first_name": "John",
"customer_last_name": "Smith",
"customer_email": "john.smith@test.com"
"customer_country": "SE",
"language_code": "en",
"identify_doc_number": "SE987546-654",
"payment_extra_param": {
    "beneficiary": {
        "party_type": "PERSON",
        "first_name": "Eddy",
        "last_name": "Stockmann",
        "country": "SE"
        }
    }    
}
)

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

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

В следующем примере оповещение свидетельствует о том, что в рамках проекта 200 пользователь 1 успешно совершил оплату на сумму 20,00 EUR.

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

 {
        "project_id": 200,
        "payment": {
            "id": "ECT_TEST_1561994171758",
            "type": "purchase",
            "status": "success",
            "date": "2019-07-01T15:26:40+0000",
            "method": "trustly",
            "sum": {
                "amount": 2000,
                "currency": "EUR"
            },
            "description": "ECT_TEST_1561994171752"
        },
        "customer": {
            "id": "1"
        },
        "operation": {
            "id": 28970000003316,
            "type": "sale",
            "status": "decline",
            "date": "2019-07-01T15:26:40+0000",
            "created_date": "2019-07-01T15:26:08+0000",
            "request_id": "63088b14f83a0bb48882dedfe2cc7fa6aaff",
            "sum_initial": {
                "amount": 2000,
                "currency": "EUR"
            },
            "sum_converted": {
                "amount": 2000,
                "currency": "EUR"
            },
            "provider": {
                "id": 1246,
                "payment_id": "1076832",
                "date": "2019-07-01T15:26:39+0000",
                "auth_code": ""
            },
            "code": "0",
            "message": "Success"
        },
        "signature": "GLZgBiriazPCzp3Kj+Pso7V1FNJvNc0WssilWp0lPfM0sUV0Bv3LZl
                                         KumYVzCi6wy9eTBEyl14X4HYxNwZJ94Q=="
    }
}

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

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

 {
        "project_id": 200,
        "payment": {
            "id": "ECT_TEST_1561994171758",
            "type": "purchase",
            "status": "decline",
            "date": "2019-07-01T15:26:40+0000",
            "method": "trustly",
            "sum": {
                "amount": 2000,
                "currency": "EUR"
            },
            "description": "ECT_TEST_1561994171752"
        },
        "customer": {
            "id": "1"
        },
        "operation": {
            "id": 28970000003316,
            "type": "sale",
            "status": "decline",
            "date": "2019-07-01T15:26:40+0000",
            "created_date": "2019-07-01T15:26:08+0000",
            "request_id": "63088b14f83a0bb48882dedfe2cc7fa6aaff",
            "sum_initial": {
                "amount": 2000,
                "currency": "EUR"
            },
            "sum_converted": {
                "amount": 2000,
                "currency": "EUR"
            },
            "provider": {
                "id": 1246,
                "payment_id": "1076832",
                "date": "2019-07-01T15:26:39+0000",
                "auth_code": ""
            },
            "code": "20301",
            "message": "Account owner cancelled operation"
        },
        "signature": "GLZgBiriazPCzp3Kj+Pso7V1FNJvNc0WssilWp0lPfM0sUV0Bv3LZl
                                         KumYVzCi6wy9eTBEyl14X4HYxNwZJ94Q=="
    }
}

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

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

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

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

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

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

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



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

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

Информация о формате запросов и параметрах инициации оплат методом Trustly через Gate, а также о формате оповещений о результатах оплат приведена далее, общая информация о работе с API см. в разделе Работа с API.

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

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

  1. Должен использоваться запрос /v2/payment/online-banking/trustly/sale, отправляемый методом POST. Этот запрос относится к группе запросов интернет-банкинга: /v2/payment/online-banking/{payment_method}/sale.
  2. В запросе должны использоваться следующие объекты и параметры:
    • general — основные сведения:
      • project_id — идентификатор проекта,
      • payment_id — идентификатор платежа,
      • signature — подпись запроса, составленная после указания целевых параметров (подробнее — в разделе Использование подписи к данным);
    • customer — сведения о пользователе:
      • id — идентификатор, уникальный в рамках проекта,
      • ip_address — используемый IP-адрес,
      • first_name — имя,
      • last_name — фамилия,
      • email — адрес электронной почты,
      • country — код страны в формате ISO 3166-1 alpha-2,
      • language — код языка в формате ISO 639-1.
    • payment — сведения о платеже:
      • amount — сумма платежа в дробных единицах,
      • currency — валюта платежа в формате ISO-4217 alpha-3;
    • return_url — URL для перенаправления пользователя:
      • success — при успехе,
      • decline — при неудаче.
  3. Валютой платежа может быть любая, указанная в разделе Характеристика.
  4. Дополнительно может потребоваться передавать некоторые из следующих параметров:
    • additional_data.beneficiary — информация о получателе перевода денежных средств:
      • party_type — тип получателя (PERSON или ORGANISATION),
      • first_name — имя получателя (для организации значение параметра может быть пустым),
      • last_name — фамилия пользователя или наименование организации-получателя,
      • country — код страны в формате ISO 3166-1 alpha-2.

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

    В противном случае все указанные в пунктах 2 и 4 параметры необходимо передавать в запросе на оплату.

  5. Дополнительно могут использоваться все параметры, указанные в спецификации.

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

Рис.: Пример запроса на оплату (при поддержке запросов на уточнение параметров)

{
  "general": {
    "project_id": 200,
    "payment_id": "ECT_TEST_1561994171758",
    "signature": "+e6gss++zs/St78SnjYwwOdf+fejG8RLjoSlFUdMLR5EJ0pBSulQK
                                   lBQQi3wCFVYnEm7M13MAerP3eTOLViNkA=="
  },
  "customer": {
    "id": "123",
    "email": "example@mail.com",
    "first_name": "John",
    "last_name": "Johnson"
  },
  "payment": {
    "amount": 2000,
    "currency": "EUR"
  }
}

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

Для перенаправления пользователя от веб-сервиса к сервису Trustly необходимо принять оповещение от платёжной платформы, содержащее ссылку для перенаправления в параметре redirect_data.url и данные для отправки в теле запроса redirect_data.body, и использовать эти параметры при открытии HTML-страницы сайта методом, указанным в redirect_data.method.

Далее приведён фрагмент оповещения, содержащего данные для перенаправления.

 "redirect_data": {
                    "body": [],
                    "method": "GET",
                    "url": "https://example.com/en/v1.1/payment/903d8cd4-b8e9-066727d8826c"
                }

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

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

В следующем примере оповещение свидетельствует о том, что в рамках проекта 200 пользователь 1 успешно совершил оплату на сумму 20,00 EUR.

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

 {
        "project_id": 200,
        "payment": {
            "id": "ECT_TEST_1561994171758",
            "type": "purchase",
            "status": "success",
            "date": "2019-07-01T15:26:40+0000",
            "method": "trustly",
            "sum": {
                "amount": 2000,
                "currency": "EUR"
            },
            "description": "ECT_TEST_1561994171752"
        },
        "customer": {
            "id": "1"
        },
        "operation": {
            "id": 28970000003316,
            "type": "sale",
            "status": "decline",
            "date": "2019-07-01T15:26:40+0000",
            "created_date": "2019-07-01T15:26:08+0000",
            "request_id": "63088b14f83a0bb48882dedfe2cc7fa6aaff",
            "sum_initial": {
                "amount": 2000,
                "currency": "EUR"
            },
            "sum_converted": {
                "amount": 2000,
                "currency": "EUR"
            },
            "provider": {
                "id": 1246,
                "payment_id": "1076832",
                "date": "2019-07-01T15:26:39+0000",
                "auth_code": ""
            },
            "code": "0",
            "message": "Success"
        },
        "signature": "GLZgBiriazPCzp3Kj+Pso7V1FNJvNc0WssilWp0lPfM0sUV0Bv3LZl
                                         KumYVzCi6wy9eTBEyl14X4HYxNwZJ94Q=="
    }
}

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

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

 {
        "project_id": 200,
        "payment": {
            "id": "ECT_TEST_1561994171758",
            "type": "purchase",
            "status": "decline",
            "date": "2019-07-01T15:26:40+0000",
            "method": "trustly",
            "sum": {
                "amount": 2000,
                "currency": "EUR"
            },
            "description": "ECT_TEST_1561994171752"
        },
        "customer": {
            "id": "1"
        },
        "operation": {
            "id": 28970000003316,
            "type": "sale",
            "status": "decline",
            "date": "2019-07-01T15:26:40+0000",
            "created_date": "2019-07-01T15:26:08+0000",
            "request_id": "63088b14f83a0bb48882dedfe2cc7fa6aaff",
            "sum_initial": {
                "amount": 2000,
                "currency": "EUR"
            },
            "sum_converted": {
                "amount": 2000,
                "currency": "EUR"
            },
            "provider": {
                "id": 1246,
                "payment_id": "1076832",
                "date": "2019-07-01T15:26:39+0000",
                "auth_code": ""
            },
            "code": "20301",
            "message": "Account owner cancelled operation"
        },
        "signature": "GLZgBiriazPCzp3Kj+Pso7V1FNJvNc0WssilWp0lPfM0sUV0Bv3LZl
                                         KumYVzCi6wy9eTBEyl14X4HYxNwZJ94Q=="
    }
}

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

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

Повторяемые оплаты через Payment Page

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

Метод Trustly поддерживает проведение повторяемых оплат трёх типов: экспресс-оплаты, регулярные оплаты и автооплаты. Подробнее о типах повторяемых оплат — Регистрация повторяемых оплат.

Прим.: Повторяемые оплаты доступны только для пользователей, которые являются клиентами банков Швеции. Не все банки, доступные в рамках метода Trustly поддерживают проведение повторяемых оплат или некоторые их типы.

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

Регистрация повторяемых оплат

Для регистрации повторяемых оплат в момент проведения оплаты пользователь на платёжной форме Trustly должен согласиться на проведение повторяемых оплат с использованием сервиса Trustly. После успешного проведения оплаты по стандартной схеме, описанной в разделе Оплаты через Payment Page, в веб-сервис мерчанта должны прийти два оповещения:
  • оповещение о проведении успешной оплаты,
  • повторное оповещение о проведении успешной оплаты с информацией о зарегистрированных повторяемых оплатах (на следующий рабочий день).

Информация о зарегистрированном повторяемом платеже содержится в объекте recurring.

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

{
        "project_id": 1625,
        "payment": {
            "id": "ID_1234567890000",
            "type": "purchase",
            "status": "success",
            "date": "2019-09-16T15:18:02+0000",
            "method": "trustly",
            "sum": {
                "amount": 100,
                "currency": "EUR"
            },
            "description": "Trustly sale transaction"
        },
        "account": {
            "number": "1902377919"
        },
        "customer": {
            "id": "123"
        },
        "recurring": {
            "id": 1007592570,
            "currency": "EUR",
            "valid_thru": "2020-01-31T00:00:00+0000"
        },
        "operation": {
            "id": 6841000003665,
            "type": "sale",
            "status": "success",
            "date": "2019-09-16T15:18:03+0000",
            "created_date": "2019-09-16T15:15:13+0000",
            "request_id": "==request id==",
            "sum_initial": {
                "amount": 100,
                "currency": "EUR"
            },
            "sum_converted": {
                "amount": 100,
                "currency": "EUR"
            },
            "provider": {
                "id": 1322,
                "payment_id": "1784257774",
                "date": "2019-09-16T15:18:02+0000",
                "auth_code": ""
            },
            "code": "0",
            "message": "Success"
        },
        "signature": "ajfgtBiriazPCzp3Kj+Pso7V1FNJvNc0WssilWp0lPfM0sUV0Bv3LZl
                                         KumYVzCi6wy9eTBEyl14X4HYxNwZJ94Q=="
    }

Проведение экспресс-оплат

После успешной регистрации экспресс-оплаты могут проходить без авторизации пользователя с использованием сохранённых данных. В таком случае они проходят по следующей схеме:



Рис.: Проведение экспресс-оплаты через Payment Page

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

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

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

В следующем примере оповещение свидетельствует о том, что в рамках проекта 1625 для пользователя 123 проведена повторяемая оплата на сумму 1,00 EUR.

Рис.: Пример оповещения о проведённой повторяемой оплате

{
        "project_id": 1625,
        "payment": {
            "id": "ID_1568639174831",
            "type": "recurring",
            "status": "success",
            "date": "2019-09-17T07:12:03+0000",
            "method": "trustly",
            "sum": {
                "amount": 100,
                "currency": "EUR"
            },
            "description": "Trustly COF purchase"
        },
        "customer": {
            "id": "123"
        },
        "recurring": {
            "id": 1007592570,
            "currency": "EUR"
        },
        "operation": {
            "id": 2110000003671,
            "type": "recurring",
            "status": "success",
            "date": "2019-09-17T07:12:03+0000",
            "created_date": "2019-09-17T07:10:02+0000",
            "request_id": "63088b14f83a0bb48882dedfe2cc7fa6aaff",
            "sum_initial": {
                "amount": 100,
                "currency": "EUR"
            },
            "sum_converted": {
                "amount": 100,
                "currency": "EUR"
            },
            "provider": {
                "id": 1322,
                "payment_id": "1562050323",
                "date": "2019-09-17T07:12:01+0000",
                "auth_code": ""
            },
            "code": "0",
            "message": "Success"
        },
        "signature": "khgsuyriazPCzp3Kj+Pso7V1FNJvNc0WssilWp0lPfM0sUV0Bv3LZl
                                         sgjhVzCi6wy9eTBEyl14X4HYxNwZJ94Q=="
    }

Повторяемые оплаты через Gate

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

Метод Trustly поддерживает проведение повторяемых оплат трёх типов: экспресс-оплаты, регулярные оплаты и автооплаты. Подробнее о типах повторяемых оплат — Общая информация.

Прим.: Повторяемые оплаты доступны только для пользователей, которые являются клиентами банков Швеции. Не все банки, доступные в рамках метода Trustly поддерживают проведение повторяемых оплат или некоторые их типы.

Регистрация повторяемых оплат может быть выполнена двумя способами: при проведении первоначальной оплаты и во время проверки действительности платёжного инструмента. В обоих случаях пользователь даёт согласие на проведение повторяемых оплат на платёжной форме Trustly. Далее экспресс-оплаты могут проводиться без повторной авторизации пользователя на платёжной форме Trustly через Payment Page и Gate. Регулярные и автооплаты проводятся без участия пользователя через Gate.

Регистрация с помощью проверки действительности счёта

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



Рис.: Схема регистрации через Gate

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

Формат запросов на проверку действительности счёта пользователя

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

  1. Должен использоваться запрос /v2/payment/online-banking/trustly/account_verification, отправляемый методом POST. Этот запрос относится к группе запросов на проверку действительности платёжного инструмента: /v2/payment/online-banking/{payment_method}/account_verification.
  2. В запросе должны использоваться следующие объекты и параметры:
    • general — основные сведения:
      • project_id — идентификатор проекта,
      • payment_id — идентификатор платежа,
      • signature — подпись запроса, составленная после указания целевых параметров (подробнее — в разделе Использование подписи к данным);
    • customer — сведения о пользователе:
      • id — идентификатор, уникальный в рамках проекта,
      • ip_address — используемый IP-адрес;
    • payment — сведения о платеже:
      • amount — сумма (всегда равна 0),
      • currency — валюта платежа в формате ISO-4217 alpha-3;
    • return_url — URL для перенаправления пользователя:
      • success — при успехе,
      • decline — при неудаче;
    • recurring_register — признак необходимости регистрации повторяемых оплат. Значение параметра должно быть true.
    • recurring — сведения о регистрации повторяемых оплат:
      • type — тип регистрируемых повторяемых оплат (экспресс-оплаты — C, регулярные оплаты — R, автооплаты — U),
      • Параметры, обязательные только для регулярных оплат:
        • time — время проведения повторяемой оплаты,
        • expiry_year — год окончания действия подписки,
        • expiry_month — месяц окончания действия подписки,
        • expiry_day — день окончания действия подписки,
        • interval — интервал между платежами в единицах выбранного периода,
        • amount — сумма повторяемой оплаты,
        • period — периодичность проведения повторяемых оплат (D — каждый день, W — каждую неделю, M — каждый месяц, Q — каждый квартал или Y — каждый год),
        • scheduled_payment_id — идентификатор следующей повторяемой оплаты,
        • start_date — дата и время следующей повторяемой оплаты.
  3. Валютой платежа может быть любая, указанная в разделе Характеристика.

Рис.: Пример запроса на проверку действительности счёта пользователя для регистрации повторяемых оплат

{
    "general": {
        "project_id": 1625,
        "payment_id": "ID_1234567890001"
    },
    "customer": {
        "id": "123",
        "ip_address": "1.2.3.4"
    },
    "payment": {
        "amount": 0,
        "currency": "EUR"
    },
    "recurring_register": true,
    "recurring": {
        "type": "U",
        "expiry_year": 2020,
        "expiry_month": 1
    }
}

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

Рис.: Пример оповещения о действительности счёта пользователя в Trustly

{
        "project_id": 1625,
        "payment": {
            "id": "ID_1234567890001852",
            "type": "account_verification",
            "status": "success",
            "date": "2019-09-17T07:19:03+0000",
            "method": "trustly",
            "sum": {
                "amount": 0,
                "currency": "EUR"
            },
            "description": "Trustly account verification"
        },
        "account": {
            "number": "1902377919"
        },
        "customer": {
            "id": "123",
            "phone": "123456789"
        },
        "operation": {
            "id": 4311000003631,
            "type": "account verification",
            "status": "success",
            "date": "2019-09-17T07:19:03+0000",
            "created_date": "2019-09-17T07:16:47+0000",
            "request_id": "482f8f5649984daa9e09a4e0dfa03170947b5fd842",
            "sum_initial": {
                "amount": 0,
                "currency": "EUR"
            },
            "sum_converted": {
                "amount": 0,
                "currency": "EUR"
            },
            "provider": {
                "id": 1322,
                "payment_id": "1212450138",
                "date": "2019-09-17T07:19:02+0000",
                "auth_code": ""
            },
            "code": "0",
            "message": "Success"
        },
        "signature": "SkqaFkJww6bqUnh+4qslJyIRKlwjqenv5knXcTTaTLMCUT1Jjs2zHrbFl
                                               w5sKRxtDRmnwlwKNGQqROpCrpOCNw=="
    }

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

{
        "project_id": 1625,
        "payment": {
            "id": "ID_1234567890001",
            "type": "account_verification",
            "status": "success",
            "date": "2019-09-09T11:28:25+0000",
            "method": "trustly",
            "sum": {
                "amount": 0,
                "currency": "EUR"
            },
            "description": "Trustly account verification"
        },
        "account": {
            "number": "7840142519"
        },
        "customer": {
            "id": "123",
            "phone": "40000000361"
        },
        "recurring": {
            "id": 63374,
            "currency": "EUR",
            "valid_thru": "2035-01-31T00:00:00+0000"
        },
        "operation": {
            "id": 6517218122349,
            "type": "account verification",
            "status": "success",
            "date": "2019-09-09T11:28:27+0000",
            "created_date": "2019-09-09T11:28:20+0000",
            "request_id": "482f8f5649984daa9e09a4e0dfa03170947b5fd842",
            "sum_initial": {
                "amount": 0,
                "currency": "EUR"
            },
            "sum_converted": {
                "amount": 0,
                "currency": "EUR"
            },
            "provider": {
                "id": 1407,
                "payment_id": "15680285012",
                "date": "2019-09-09T11:28:25+0000",
                "auth_code": ""
            },
            "code": "0",
            "message": "Success"
        },
        "signature": "SkqaFkJww6bqUnh+4qslJyIRKlwjqenv5knXcTTaTLMCUT1Jjs2zHrbFl
                                               w5sKRxtDRmnwlwKNGQqROpCrpOCNw=="
    }

Регистрация с помощью первоначального платежа

Для регистрации повторяемых оплат в момент проведения оплаты пользователь на платёжной форме должен согласиться на регистрацию повторяемых оплат на платёжной форме Trustly. После успешного проведения оплаты по стандартной схеме, описанной в разделе Оплаты через Gate, в веб-сервис мерчанта должны прийти два оповещения:
  • оповещение о проведении успешной оплаты,
  • повторное оповещение о проведении успешной оплаты с информацией о зарегистрированных повторяемых оплатах (на следующий рабочий день).

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

{
        "project_id": 1625,
        "payment": {
            "id": "ID_1234567890000",
            "type": "purchase",
            "status": "success",
            "date": "2019-09-16T15:18:02+0000",
            "method": "trustly",
            "sum": {
                "amount": 100,
                "currency": "EUR"
            },
            "description": "Trustly sale transaction"
        },
        "account": {
            "number": "1902377919"
        },
        "customer": {
            "id": "123"
        },
        "recurring": {
            "id": 1007592570,
            "currency": "EUR",
            "valid_thru": "2020-01-31T00:00:00+0000"
        },
        "operation": {
            "id": 6841000003665,
            "type": "sale",
            "status": "success",
            "date": "2019-09-16T15:18:03+0000",
            "created_date": "2019-09-16T15:15:13+0000",
            "request_id": "khafkuasf575akhafykhaj0cd7absw",
            "sum_initial": {
                "amount": 100,
                "currency": "EUR"
            },
            "sum_converted": {
                "amount": 100,
                "currency": "EUR"
            },
            "provider": {
                "id": 1322,
                "payment_id": "1784257774",
                "date": "2019-09-16T15:18:02+0000",
                "auth_code": ""
            },
            "code": "0",
            "message": "Success"
        },
        "signature": "ajfgtBiriazPCzp3Kj+Pso7V1FNJvNc0WssilWp0lPfM0sUV0Bv3LZl
                                         KumYVzCi6wy9eTBEyl14X4HYxNwZJ94Q=="
    }

Проведение экспресс-оплат

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



Рис.: Проведение экспресс-оплат через Gate

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

Формат запросов для экспресс-оплат

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

  1. Должен использоваться запрос v2/payment/online-banking/trustly/sale/saved, отправляемый методом POST. Этот запрос относится к группе запросов: /v2/payment/online-banking/{payment_method}/sale/saved.
  2. В запросе должны использоваться следующие объекты и параметры:
    • general — основные сведения:
      • project_id — идентификатор проекта,
      • payment_id — идентификатор платежа,
      • signature — подпись запроса, составленная после указания целевых параметров (подробнее — в разделе Использование подписи к данным);
    • customer — сведения о пользователе:
      • id — идентификатор, уникальный в рамках проекта,
      • ip_address — используемый IP-адрес,
    • payment — сведения о платеже:
      • amount — сумма,
      • currency — валюта платежа в формате ISO-4217 alpha-3;
    • return_url — URL для перенаправления пользователя:
      • success — при успехе,
      • decline — при неудаче;
    • recurring_id — идентификатор повторяемой оплаты.
  3. Валютой платежа может быть любая, указанная в разделе Характеристика.

Таким образом, корректный запрос на проведение экспресс-оплаты с применением метода Trustly должен содержать основные данные запроса, информацию о пользователе, платеже, URL для перенаправления, а также идентификатор повторяемой оплаты:

Рис.: Пример запроса

{
  "general": {
    "project_id": 1625,
    "payment_id": "ID_1568639174831"
  },
  "customer": {
    "id": "123",
    "ip_address": "1.1.1.1"
  },
  "payment": {
    "amount": 100,
    "currency": "EUR",
    "description": "Trustly one-click transaction"
  },
  "recurring": {
    "id": 62944
  }
}

Формат запросов для регулярных оплат и автооплат

При работе с запросами на повторяемые оплаты с применением метода Trustly необходимо учитывать следующее:
  1. Должен использоваться запрос /v2/payment/online-banking/trustly/recurring, отправляемый методом POST. Этот запрос относится к группе запросов на проведение платежей через интернет-банкинг: /v2/payment/online-banking/{payment_method}/recurring.
  2. В запросе должны использоваться следующие объекты и параметры:
    • general — основные сведения:
      • project_id — идентификатор проекта,
      • payment_id — идентификатор платежа,
      • signature — подпись запроса, составленная после указания целевых параметров (подробнее — в разделе Использование подписи к данным);
    • customer — сведения о пользователе:
      • id — идентификатор, уникальный в рамках проекта,
      • ip_address — используемый IP-адрес,
    • payment — сведения о платеже:
      • amount — сумма,
      • currency — валюта платежа в формате ISO-4217 alpha-3;
    • recurring_id — идентификатор зарегистрированной повторяемой оплаты.
  3. Валютой платежа может быть любая, указанная в разделе Характеристика.

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

Рис.: Пример запроса

{
  "general": {
    "project_id": 1625,
    "payment_id": "ID_1568639174831"
  },
  "customer": {
    "id": "123",
    "ip_address": "1.1.1.1"
  },
  "payment": {
    "amount": 100,
    "currency": "EUR",
    "description": "Trustly recurring transaction"
  },
  "recurring": {
    "id": 1007592570
  }
}

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

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

В следующем примере оповещение свидетельствует о том, что в рамках проекта 1625 для пользователя 123 проведена повторяемая оплата на сумму 1,00 EUR.

Рис.: Пример оповещения о проведённой повторяемой оплате

{
        "project_id": 1625,
        "payment": {
            "id": "ID_1568639174831",
            "type": "recurring",
            "status": "success",
            "date": "2019-09-17T07:12:03+0000",
            "method": "trustly",
            "sum": {
                "amount": 100,
                "currency": "EUR"
            },
            "description": "Trustly COF purchase"
        },
        "customer": {
            "id": "123"
        },
        "recurring": {
            "id": 1007592570,
            "currency": "EUR"
        },
        "operation": {
            "id": 2110000003671,
            "type": "recurring",
            "status": "success",
            "date": "2019-09-17T07:12:03+0000",
            "created_date": "2019-09-17T07:10:02+0000",
            "request_id": "63088b14f83a0bb48882dedfe2cc7fa6aaff",
            "sum_initial": {
                "amount": 100,
                "currency": "EUR"
            },
            "sum_converted": {
                "amount": 100,
                "currency": "EUR"
            },
            "provider": {
                "id": 1322,
                "payment_id": "1562050323",
                "date": "2019-09-17T07:12:01+0000",
                "auth_code": ""
            },
            "code": "0",
            "message": "Success"
        },
        "signature": "khgsuyriazPCzp3Kj+Pso7V1FNJvNc0WssilWp0lPfM0sUV0Bv3LZl
                                         sgjhVzCi6wy9eTBEyl14X4HYxNwZJ94Q=="
    }

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

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

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



Рис.: Проведение возврата через Gate

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

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

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

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

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

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

Рис.: Пример запроса на возврат

"general": {    
    "project_id": 239,    
    "payment_id": "182",   
    "signature": "of8k9xerKSKpFBR4XL1QFaDH3p9Mh0CIcjmOwSwKJ7agjhcaukyKLTZYO56
                                                            lCv+f1M0Sf/7eg=="
  },  
   "customer": {    
     "ip_address": "1.2.3.4" 
  },  
  "payment": {    
    "amount": 10000,    
    "currency": "EUR"
    "description": "test refund"
  }

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

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

В следующем примере оповещение свидетельствует о том, что в рамках проекта 1625 для пользователя 125 был успешно проведён возврат на счёт № 1902377919.

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

{
        "project_id": 1625,
        "payment": {
            "id": "ID_1234567890000",
            "type": "purchase",
            "status": "partially refunded",
            "date": "2019-09-18T12:25:39+0000",
            "method": "trustly",
            "sum": {
                "amount": 500,
                "currency": "EUR"
            },
            "description": "test payment"
        },
        "account": {
            "number": "1902377919"
        },
        "customer": {
            "id": "123"
        },
        "operation": {
            "id": 6841000003971,
            "type": "refund",
            "status": "success",
            "date": "2019-09-18T12:25:39+0000",
            "created_date": "2019-09-18T12:25:36+0000",
            "request_id": "719ecb2f23f3d482fabb0c5994700fb36b020735ba3c2ae",
            "sum_initial": {
                "amount": 500,
                "currency": "EUR"
            },
            "sum_converted": {
                "amount": 500,
                "currency": "EUR"
            },
            "provider": {
                "id": 1322,
                "payment_id": "1784257774",
                "date": "2019-09-18T12:25:37+0000",
                "auth_code": ""
            },
            "code": "0",
            "message": "Success"
        },
        "signature": "xCafDfCf+h8/5+SB+o6vUQDVS7+C11AZm955u4nasFDam/fdxqmNnnY
                                           KGzFXZZZChOTwnZxttFi+nDhLMcYMzA=="
    }

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

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

{
        "project_id": 1625,
        "payment": {
            "id": "ID_1234567890000",
            "type": "purchase",
            "status": "success",
            "date": "2019-09-18T12:25:39+0000",
            "method": "trustly",
            "sum": {
                "amount": 500,
                "currency": "EUR"
            },
            "description": "test payment"
        },
        "account": {
            "number": "1902377919"
        },
        "customer": {
            "id": "123"
        },
        "operation": {
            "id": 6841000003971,
            "type": "refund",
            "status": "decline",
            "date": "2019-09-18T12:25:39+0000",
            "created_date": "2019-09-18T12:25:36+0000",
            "request_id": "719ecb2f23f3d482fabb0c5994700fb36b020735ba3c2ae",
            "sum_initial": {
                "amount": 500,
                "currency": "EUR"
            },
            "sum_converted": {
                "amount": 500,
                "currency": "EUR"
            },
            "provider": {
                "id": 1322,
                "payment_id": "1784257774",
                "date": "2019-09-18T12:25:37+0000",
                "auth_code": ""
            },
            "code": "20106",
            "message": "Customer account is no longer available"
        },
        "signature": "xCafDfCf+h8/5+SB+o6vUQDVS7+C11AZm955u4nasFDam/fdxqmNnnY
                                           KGzFXZZZChOTwnZxttFi+nDhLMcYMzA=="
    }

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

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

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

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

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

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

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

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

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

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

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

  1. Должен использоваться запрос к конечной точке /v2/payment/online-banking/trustly/payout, отправляемый методом POST. Этот запрос относится к группе запросов интернет-банкинга: /v2/payment/online-banking/{payment_method}/payout.
  2. В запросе должны использоваться следующие объекты и параметры:
    • general — объект, содержащий основные идентификационные сведения запроса:
      • project_id — идентификатор проекта, полученный от ecommpay при интеграции;
      • payment_id — идентификатор платежа, уникальный в рамках проекта;
      • signature — подпись запроса, составленная после указания целевых параметров (подробнее — в разделе Использование подписи к данным);
    • payment — объект, содержащий сведения о платеже:
      • amount — сумма выплаты в дробных единицах,
      • currency — валюта платежа в формате ISO-4217 alpha-3;
    • customer — объект, содержащий сведения о пользователе:
      • id — идентификатор, уникальный в рамках проекта,
      • first_name — имя,
      • last_name — фамилия,
      • ip_address — используемый IP-адрес,
    • account — объект, содержащий сведения о банковском счёте получателя:
      • number — номер счёта,
      • clearinghouse — страна, в которой зарегистрирован межбанковский расчётный центр, с которым сотрудничает банк получателя. Допустимые значения параметра указаны в таблице Соответствие значений параметров,
      • bank_code — международный банковский идентификационный код (БИК или SWIFT) или код, специфичный для межбанковских расчётных центров некоторых стран, указанных в таблице Соответствие значений параметров (в таких случаях значение параметра определяется регулярным выражением),

      Допустимые значения параметров number и bank_code зависят от значения параметра clearinghouse. Значение параметра number определяется регулярными выражениями, соответствующими указанному значению параметра clearinghouse. Значение параметра bank_code определятся регулярными выражениями только когда в значении этого параметра не требуется указать БИК или SWIFT-код, в остальных случаях значение не определяется регулярным выражением (соответствующие ячейки таблицы не заполнены). В следующей таблице указаны соответствия значений параметра clearinghouse и регулярных выражений.

      Табл. 1. Соответствие значений параметров
      clearinghouse bank_code number
      AUSTRIA   ^AT[0-9]{18}$
      BELGIUM   ^BE[0-9]{14}$
      BULGARIA   ^BG[0-9]{2}[A-Z]{4}[0-9]{4}[0-9]{2}[A-Z0-9]{8}$
      CROATIA   ^HR[0-9]{2}[0-9]{7}[0-9]{10}$
      CYPRUS   ^CY[0-9]{10}[0-9A-Z]{16}$
      CZECH_REPUBLIC ^[0-9]{4}$ ^[0-9]{16}$
      DENMARK ^[0-9]{4}$ ^[0-9]{4,10}$
      ESTONIA ^[0-9]{2}$ ^[0-9]{4,14}$
      FINLAND   ^FI[0-9]{16}$
      FRANCE   ^FR[0-9]{12}[0-9A-Z]{11}[0-9]{2}$
      GERMANY   ^DE[0-9]{20}$
      GREECE   ^GR[0-9]{25}$
      HUNGARY ^[0-9]{8}$ ^[0-9]{24}$
      IRELAND   ^IE[0-9]{2}[A-Z]{4}[0-9]{14}$
      ITALY   ^IT[0-9]{2}[A-Z][0-9]{10}[0-9A-Z]{12}$
      LATVIA   ^LV[0-9]{2}[A-Z]{4}[0-9A-Z]{13}$
      LITHUANIA   ^LT[0-9]{18}$
      LUXEMBOURG   ^LU[0-9]{18}$
      MALTA   ^MT[0-9]{2}[A-Z]{4}[0-9]{5}[0-9A-Z]{18}$
      NETHERLANDS   ^NL[0-9]{2}[A-Z]{4}[0-9]{10}$
      NORWAY ^[0-9]{4}$ ^[0-9]{7}$
      POLAND   ^PL[0-9]{26}$
      PORTUGAL ^[0-9]{8}$ ^[0-9]{13}$
      ROMANIA   ^RO[0-9]{2}[A-Z]{4}[0-9A-Z]{16}$
      SLOVAKIA   ^SK[0-9]{22}$
      SLOVENIA   ^SI56[0-9]{15}$
      SPAIN   ^ES[0-9]{22}$
      SWEDEN ^[0-9]{4,5}$ ^[0-9]{1,15}$
      UNITED_KINGDOM ^[0-9]{6}$ ^[0-9]{8}$
  3. Мерчантам, оказывающим услуги, связанные с переводами денежных средств на электронные кошельки или в другие кредитные организации, когда отправителем является не мерчант, но третья сторона, необходимо указать данные отправителя в объекте additional_data.sender:
    • party_type — тип отправителя: "PERSON" или "ORGANISATION",
    • first_name — имя отправителя или название организации,
    • last_name — фамилия отправителя или null для организации,
    • address — адрес отправителя (за исключением страны),
    • country — страна отправителя в формате ISO 3166-1 alpha-2.
  4. Валютой платежа может быть любая, указанная в разделе Характеристика.
  5. Дополнительно могут использоваться все параметры, указанные в спецификации.

Таким образом, корректный запрос на выплату с применением метода Trustly должен содержать идентификаторы проекта и платежа, подпись, валюту и сумму платежа данные пользователя и банковского счёта:

Рис.: Пример запроса на выплату

{
  "general": {
    "project_id": 112,
    "payment_id": "ECT_TEST_156"
  },
  "payment": {
    "amount": 100,
    "currency": "EUR",
    "description": "Trustly account payout"
  },
  "customer": {
    "id": "123",
    "first_name": "Ada",
    "last_name": "Lovelace",
    "ip_address": "1.1.1.1"
  },
  "account": {
    "clearinghouse": "SWEDEN",
    "bank_code": "1234",
    "number": "21312"
  }
 }

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

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

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

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

 {
        "project_id": 1625,
        "payment": {
            "id": "ECT_TEST_1568711984262232",
            "type": "payout",
            "status": "success",
            "date": "2019-09-18T07:18:03+0000",
            "method": "trustly",
            "sum": {
                "amount": 5000,
                "currency": "EUR"
            },
            "description": "Trustly payout"
        },
        "account": {
            "number": "1902377919"
        },
        "customer": {
            "id": "123"
        },
        "operation": {
            "id": 20988000004401,
            "type": "payout",
            "status": "success",
            "date": "2019-09-18T07:18:03+0000",
            "created_date": "2019-09-18T07:12:38+0000",
            "request_id": "821d7c5b4d08587252da9834ab50590d8d4d976d26801a",
            "sum_initial": {
                "amount": 5000,
                "currency": "EUR"
            },
            "sum_converted": {
                "amount": 5000,
                "currency": "EUR"
            },
            "provider": {
                "id": 1322,
                "payment_id": "3063307773",
                "date": "2019-09-18T07:13:03+0000",
                "auth_code": ""
            },
            "code": "0",
            "message": "Success"
        },
        "signature": "fKyx/vYDhDNxQ0myVETvkXfj7r+4Z1lcEp/7dbL4ip+XtpiYp/onBiqLn
                                                QkeKm+cVJJ71MlOSgr5CXprwe8LPw=="
    }

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

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

 {
        "project_id": 1625,
        "payment": {
            "id": "ECT_TEST_1568711984262232",
            "type": "payout",
            "status": "decline",
            "date": "2019-09-18T07:18:03+0000",
            "method": "trustly",
            "sum": {
                "amount": 5000,
                "currency": "EUR"
            },
            "description": "Trustly payout"
        },
        "account": {
            "number": "1902377919"
        },
        "customer": {
            "id": "123"
        },
        "operation": {
            "id": 20988000004401,
            "type": "payout",
            "status": "decline",
            "date": "2019-09-18T07:18:03+0000",
            "created_date": "2019-09-18T07:12:38+0000",
            "request_id": "821d7c5b4d08587252da9834ab50590d8d4d976d26801a",
            "sum_initial": {
                "amount": 5000,
                "currency": "EUR"
            },
            "sum_converted": {
                "amount": 5000,
                "currency": "EUR"
            },
            "provider": {
                "id": 1322,
                "payment_id": "3063307773",
                "date": "2019-09-18T07:13:03+0000",
                "auth_code": ""
            },
            "code": "3028",
            "message": "Insufficient funds on merchant balance"
        },
        "signature": "jfhgfvYDhDNxQ0myVETvkXfj7r+4Z1lcEp/7dbL4ip+XtpiYp/onBiqLn
                                                QkeKm+cVJJ71MlOSgr5CXprwe8LPw=="
    }

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

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

{
        "customer": {
            "id": "123999"
        },
        "account": {
            "number": "20227678"
        },
        "project_id": 10801,
        "payment": {
            "id": "16042021_002",
            "type": "payout",
            "status": "reversed",
            "date": "2021-04-16T14:41:57+0000",
            "method": "trustly",
            "sum": {
                "amount": 100,
                "currency": "EUR"
            },
            "description": "Trustly Payout"
        },
        "operation": {
            "id": 13858010014811,
            "type": "payout reversal",
            "status": "success",
            "date": "2021-04-16T14:41:57+0000",
            "created_date": "2021-04-16T14:41:57+0000",
            "request_id": "153cb9c8b675-9c397f2dbec1bc-00013859",
            "sum_initial": {
                "amount": 100,
                "currency": "EUR"
            },
            "sum_converted": {
                "amount": 100,
                "currency": "EUR"
            },
            "code": "0",
            "message": "Success",
            "provider": {
                "id": 1322,
                "payment_id": "6777981238"
            }
        },
        "signature": "S3Hc3cND9GVS1zITz/UVEE8ZEVWqEw=="
    }
}

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

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

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

Как и при работе с другими платёжными методами, которые предоставляет ecommpay, при использовании метода Trustly доступны разные способы анализа информации о платежах и операциях с применением этого метода — как в отдельности, так и в совокупности с другими методами.

Всю необходимую информацию можно получать и анализировать средствами Dashboard, в том числе с помощью аналитических панелей на вкладке Analytics.

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

  • Dashboard позволяет выгружать данные в форматах CSV и XLS с помощью инструментов на вкладке Платежи. При этом можно выполнять разовые выгрузки информации на локальный компьютер и задействовать периодическую выгрузку и отправку информации на заданные адреса электронной почты.
  • Data API позволяет получать информацию в формате JSON и отправлять ее на заданный URL — для этого применяются запросы /operations/get.

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