Использование плагина от ecommpay для commercetools

Введение

В этой статье представлена информация о работе с платёжным плагином от ecommpay для платформы commercetools. Плагин описываемой версии 1.0 может использоваться в веб-сервисах, в работе которых применяется решение Composable Commerce от commercetools. Он позволяет формировать URL для вызова со стороны веб-сервиса платёжной формы Payment Page и обеспечивать необходимые действия для проведения платежей.

Плагин от ecommpay устанавливается на локальном сервере мерчанта или в стороннем облачном сервисе (в таком как AWS Lambda, Azure Functions или Google Cloud Functions). С помощью этого плагина выполняется автоматическое формирование URL для вызова со стороны веб-сервиса платёжной формы Payment Page и обеспечиваются необходимые действия для проведения платежей, как в части взаимодействия с пользователями, так и в части взаимодействия с платёжной платформой ecommpay.

Работа плагина от ecommpay основывается на использовании двух модулей, реализованных по модели FaaS (Function-as-a-Service): модуля расширения — для приёма запросов от платформы commercetools и модуля уведомлений — для передачи информации об оплатах, проводимых в платёжной платформе, к платформе commercetools.

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

Возможности

При использовании плагина от ecommpay можно:

  • Встраивать в веб-сервис возможность вызова платёжной формы Payment Page от ecommpay.

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

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

    Для этого следует оформить тестовый проект в платёжной платформе ecommpay (что можно сделать через заявку на основном сайте компании).

  • Проводить разовые одностадийные оплаты с применением различных платёжных методов.

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

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

    Для этого можно использовать HTTP API платформы commercetools и, если актуально, интерфейсы платёжной платформы ecommpay (пользовательский интерфейс Dashboard и Gate API). Вместе с тем, при использовании интерфейсов платёжной платформы ecommpay информация о платежах в платформе commercetools обновляется, только если настроена отправка оповещений со стороны платёжной платформы (подробнее).

  • Контролировать информацию о платежах, проводимых с помощью плагина.

    Это можно делать через HTTP API и пользовательcкий интерфейс Merchant Center от commercetools и, если актуально, — через Data API и пользовательский интерфейс Dashboard от ecommpay.

  • Управлять заказами, оплаты по которым проводятся с помощью плагина, через интерфейс Merchant Center и HTTP API от commercetools.

    При этом можно отменять такие заказы и корректировать их статусы вручную. Также следует учитывать, что автоматическое изменение статусов заказов при работе с плагином от ecommpay не предусмотрено, но может быть настроено специалистами мерчанта с использованием возможностей, предоставляемых в рамках решения Composable Commerce платформы commercetools.

  • Применять различные возможности, обеспечиваемые со стороны ecommpay.

    В частности, можно применять процедуру подтверждения зачислений при работе с платёжными методами Open Banking, делать доступными для пользователей повторные попытки оплаты (подробнее) и подключать отправку пользователям уведомлений о результатах оплат (подробнее). Для подключения этих возможностей следует обращаться к специалистам технической поддержки ecommpay.

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

Схема работы

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

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

В рамках представленной общей схемы пользователь сначала подтверждает формирование заказа и платежа в платформе commercetools на странице перехода к оплате в веб-сервисе, а затем указывает необходимые данные в открывшейся платёжной форме и подтверждает формирование оплаты в платформе ecommpay (с помощью кнопки Оплатить). При этом сначала в рамках платежа на стороне платформы commercetools создаётся транзакция типа Charge, а затем для этой транзакции в рамках оплаты на стороне платформы ecommpay инициируется операция типа sale. Исключением являются случаи, когда пользователь подтверждает формирование заказа и платежа в веб-сервисе, но не подтверждает формирование оплаты в платёжной форме Payment Page, — в такой ситуации в платформе commercetools создаётся транзакция типа Charge в статусе Initial, но оплата на стороне ecommpay не инициируется.

Статусы транзакций в платформе commercetools изменяются автоматически в соответствии с документацией commercetools (подробнее) и в зависимости от изменений статусов операций в платформе ecommpay. Однако статусы заказов и платежей, формируемых в платформе commercetools при работе с плагином от ecommpay, по умолчанию не изменяются. При создании заказа ему присваивается статус Open, а платежу в рамках этого заказа статус не присваивается, но в обоих случаях эти параметры можно задавать вручную и настроить их автоматическое изменение, используя инструменты и возможности commercetools.

Наряду с этим, заказам, платежам и транзакциям на стороне платформы commercetools автоматически присваиваются идентификаторы, состоящие из тридцати двух случайных символов, а оплатам в платформе ecommpay — идентификаторы, соответствующие идентификаторам платежей в платформе commercetools (например, eeb30cda-a8a1-4895-ab43-5ef8bb29ee80), и статусы в соответствии с моделью проведения платежей ecommpay (подробнее). С вопросами о соответствии статусов заказов и платежей можно обращаться к курирующему менеджеру ecommpay.

Установка

Чтобы начать работу с плагином от ecommpay версии 1.0, необходимо:

  1. Создать учётную запись (API client) с доступом к следующим возможностям (scopes) в рамках проекта в платформе commercetools:
    • Управление платежами;
    • Управление наборами дополнительных полей (custom types).

    После этого мерчанту разово предоставляется доступ к данным о созданной учётной записи, которые указываемым в параметрах project_key, client_id, secret, scope, API URL и Auth URL. Эти данные следует сохранить для последующей работы с плагином в рамках созданной учётной записи.

  2. Установить модули плагина в используемой среде в соответствии с одной из инструкций, на портале GitHub.
  3. Создать наборы дополнительных полей (custom types) для указания в этих полях информации о платежах, инициируемых в платёжной платформе ecommpay.

    Для этого в платформу commercetools следует направить соответствующие запросы с указанием идентификаторов сущностей payment-interface-interaction и payment.

    Рис. 2. Данные для указания в запросе на создание дополнительных полей для сущности payment-interface-interaction
    {
      "key": "ecommpay-integration-interaction-payment-type",
      "name": {
        "en": "commercetools ecommpay integration payment interface interaction type"
      },
      "resourceTypeIds": ["payment-interface-interaction"],
      "fieldDefinitions": [
        {
          "name": "operation_id",
          "label": {
            "en": "Operation id"
          },
          "required": false,
          "type": {
            "name": "Number"
          },
          "inputHint": "SingleLine"
        },
        {
          "name": "operation_type",
          "label": {
            "en": "Operation type"
          },
          "required": false,
          "type": {
            "name": "String"
          },
          "inputHint": "SingleLine"
        },
        {
          "name": "operation_status",
          "label": {
            "en": "Operation status"
          },
          "required": false,
          "type": {
            "name": "String"
          },
          "inputHint": "SingleLine"
        },
        {
          "name": "date",
          "label": {
            "en": "Date"
          },
          "required": false,
          "type": {
            "name": "DateTime"
          },
          "inputHint": "SingleLine"
        },
        {
          "name": "sum_initial",
          "label": {
            "en": "Sum initial"
          },
          "required": false,
          "type": {
            "name": "String"
          },
          "inputHint": "SingleLine"
        },
            {
          "name": "sum_converted",
          "label": {
            "en": "Sum converted"
          },
          "required": false,
          "type": {
            "name": "String"
          },
          "inputHint": "SingleLine"
        },
            {
          "name": "message",
          "label": {
            "en": "Message"
          },
          "required": false,
          "type": {
            "name": "String"
          },
          "inputHint": "SingleLine"
        }
      ]
    }

    В результате выполнения такого запроса в платформе commercetools создаются поля для указании информации об операциях, передаваемой в оповещениях от платёжной платформы. Эти поля отображаются в карточках заказов интерфейса Merchant Center (на странице с данными об операциях из платёжной платформы), а также включаются в ответы на запросы информации о платежах, отправляемые с использованием HTTP API.

    Рис. 3. Данные для указания в запросе на создание дополнительных полей для сущности payment
    {
      "key": "ecommpay-integration",
      "name": {
        "en": "commercetools ecommpay integration"
      },
      "resourceTypeIds": ["payment"],
      "fieldDefinitions": [
            {
          "name": "initial_request",
          "label": {
            "en": "Initial request"
          },
          "type": {
            "name": "String"
          },
          "inputHint": "SingleLine",
          "required": false
        },
        {
          "name": "pp_url",
          "label": {
            "en": "Payment Page URL"
          },
          "type": {
            "name": "String"
          },
          "inputHint": "SingleLine",
          "required": false
        }    ]
    }

    В результате выполнения такого запроса в платформе commercetools создаются поля Initial request и Payment Page URL для указания дополнительных параметров открытия Payment Page и для указания URL для открытия платёжной формы соответственно. Поле Initial request может использоваться в запросах на инициирование платежей, отправляемых в платформу commercetools, а также, наряду с параметром для указания URL, отображается в карточках заказов интерфейса Merchant Center (в секции commercetools ecommpay integration) и включаются в ответы на запросы информации о платежах, отправляемые с использованием HTTP API от commercetools.

  4. Создать расширение API (API extension) для взаимодействия платформы commercetools с плагином от ecommpay. Для этого в платформу commercetools следует направить соответствующий запрос с указанием в объекте destination URL модуля расширения от ecommpay.
    Рис. 4. Данные для указания в запросе на создание расширения API
    {
      "key": "ecommpay-integration-payment-extension",
      "destination": {
        "type": "HTTP",
        "url": "<extension url>" // URL модуля расширения от ecommpay
      },
      "triggers": [
        {
          "resourceTypeId": "payment",
          "actions": ["Create","Update"],
          "condition": "paymentMethodInfo is defined AND paymentMethodInfo(paymentInterface is defined) AND paymentMethodInfo(paymentInterface=\"ecommpay-integration\")"
        }
      ],
      "timeoutInMs": 10000

Тестирование

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

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

Наряду с этим следует учитывать, что при работе с плагином от ecommpay для платформы commercetools вызов Payment Page обеспечивается на стороне веб-сервиса с учётом параметров, включённых в URL для открытия Payment Page. Если необходимо использовать дополнительные параметры вызова платёжной формы, их следует передать в запросе, отправляемом в платформу commercetools для инициирования платежа, — в параметре initial_request в объекте fields внутри объекта custom. Информация об организации работы с платёжной формой Payment Page представлена в соответствующей статье этого портала.

Рис. 5. Пример данных из запроса на инициирование платежа с использованием плагина от ecommpay
{
  "amountPlanned": {
    "currencyCode": "EUR",
    "centAmount": 1000
  },
  "paymentMethodInfo": {
    "paymentInterface": "ecommpay-integration",
    "method": "ecommpay-integration"
  },
  "custom": {
    "type": {
      "typeId": "type",
      "key": "ecommpay-integration"
    },
    "fields": {
      "initial_request": "\"{\\\"customer_id\\\":123,\\\"billing_country\\\":\\\"DE\\\",\\\"customer_country\\\":\\\"DE\\\"}\""
    }
  }
}

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

В рамках работы с плагином можно проводить тестовые оплаты в веб-сервисе и получать базовые сведения о них через интерфейс Merchant Center и через HTTP API от commercetools. При этом можно использовать специальные платёжные реквизиты, позволяющие тестировать заданные сценарии работы.

Чтобы тестировать проведение карточных платежей, можно использовать номера тестовых карт. При этом для тестирования по заданным кратчайшим сценариям (без эмулирования аутентификации 3‑D Secure) можно использовать следующие номера карт:

  • 4000 0000 0000 0077 — для проведения оплаты;
  • 4111 1111 1111 1111 — для отклонения оплаты.

Для более масштабного тестирования можно использовать расширенный набор тестовых данных для карточных платежей (подробнее). (в том числе с аутентификацией 3‑D Secure), представленных в статье Тестовые карты.

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

Выполнение тестовых возвратов

Введение

После проведения тестовых оплат можно тестировать выполнение возвратов через HTTP API от commercetools, и если актуально, через интерфейсы Gate и Dashboard от ecommpay. При этом можно учитывать, что вся информация о тестовых возвратах, представленная в этом подразделе, актуальна и для выполнения возвратов в рабочей среде.

Обеспечение синхронизации данных между платформами

При инициировании возвратов через интерфейсы платёжной платформы ecommpay (Dashboard и Gate API) информация о платежах в платформе commercetools обновляется, только если настроена отправка оповещений со стороны платёжной платформы. Поэтому в случаях, когда со стороны мерчанта допускаются возвраты через интерфейсы платформы ecommpay и контроль информации о платежах через интерфейсы платформы commercetools, важно обеспечить отправку и приём оповещений для автоматического обновления информации в платформе commercetools. Для этого должны выполняться следующие условия:

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

  • Для используемого проекта настроена отправка оповещений от платёжной платформы к модулю уведомлений плагина, на URL, указанный при установке плагина в качестве переменной среды для модуля расширения.

    Информация о работе с правилами отправки оповещений представлена в отдельной статье.

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

    В ином случае в протоколах работы среды, в которой установлен плагин, при обновлении информации о платеже в платформе commercetools могут возникать ошибки.

  • На стороне веб-сервиса обеспечена доступность URL, используемого для получения оповещений со стороны платёжной платформы, IP-адреса ecommpay добавлены в список доверенных и оповещения не блокируются на уровне межсетевых экранов или других сетевых устройств.

    Это может быть актуальным, в частности, при работе с платформами Docker и Node.js.

Процедуры

Выполнять возвраты можно для тех оплат, которые были проведены и по которым не были возвращены их полные суммы. На стороне платёжной платформы ecommpay таким оплатам соответствуют статусы success, partially reversed или partially refunded. В свою очередь, контролировать выполнение возвратов можно через интерфейсы платформ ecommpay и commercetools.

Чтобы выполнить возврат через HTTP API платформы commercetools, следует направить соответствующий запрос на обновление информации о платеже (подробнее). При этом в запросе следует передать массив actions со следующими данными:

  • Параметр action с названием действия, которое необходимо выполнить в рамках платежа, — addTransaction.

    Для инициирования возврата следует указать значение addTransaction.

  • Объект transaction со следующими данными:
    • Параметр type с типом транзакции Refund в платформе commercetools.

      Для инициирования возврата следует указать значение Refund.

    • Объект amount с параметрами currencyCode и centAmount, в которых следует указать валюту и сумму возврата соответственно.

      Для выполнения частичного возврата можно указать сумму, не превышающую актуальную сумму платежа.

Рис. 6. Пример использования массива actions в запросе на возврат
"actions": [
    {
      "action": "addTransaction",
      "transaction": {
        "type": "Refund",
        "amount": {
          "centAmount": 8300,
          "currencyCode": "EUR"
        }
      }
    }
  ]

Чтобы выполнить возврат через Gate API или Dashboard платформы ecommpay, следует использовать процедуры, представленные в соответствующих статьях: Возвраты средств после оплат (для Gate API) и Выполнение возвратов (для интерфейса Dashboard).

Использование

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

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

Наряду с этим, следует учитывать, что при работе с плагином от ecommpay для платформы commercetools вызов Payment Page обеспечивается на стороне веб-сервиса с учётом параметров, включённых в URL для открытия Payment Page. Если необходимо использовать дополнительные параметры вызова платёжной формы, их следует передать в запросе, отправляемом в платформу commercetools для инициирования платежа, — в параметре initial_request в объекте fields внутри объекта custom. Информация об организации работы с платёжной формой Payment Page представлена в соответствующей статье этого портала.

Внимание: С 12 августа 2024 года в связи с вступлением в силу новых требований платёжной системы Visa расширяется набор сведений, необходимых для аутентификации 3‑D Secure при проведении оплат с использованием карт этой платёжной системы. Для сбора и передачи таких сведений на странице перехода к оплате должны использоваться поля для указания пользователем номера его телефона или адреса электронной почты.

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

Выполнение возвратов

Введение

После проведения оплат можно выполнять возвраты по ним через HTTP API от commercetools, и если актуально, через интерфейсы Gate и Dashboard от ecommpay. При этом все возможности и процедуры по работе с возвратами в рабочей среде соответствуют тем, которые доступны в тестовой среде.

Обеспечение синхронизации данных между платформами

При инициировании возвратов через интерфейсы платёжной платформы ecommpay (Dashboard и Gate API) информация о платежах в платформе commercetools обновляется, только если настроена отправка оповещений со стороны платёжной платформы. Поэтому в случаях, когда со стороны мерчанта допускаются возвраты через интерфейсы платформы ecommpay и контроль информации о платежах через интерфейсы платформы commercetools, важно обеспечить отправку и приём оповещений для автоматического обновления информации в платформе commercetools. Для этого должны выполняться следующие условия:

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

  • Для используемого проекта настроена отправка оповещений от платёжной платформы к модулю уведомлений плагина, на URL, указанный при установке плагина в качестве переменной среды для модуля расширения.

    Информация о работе с правилами отправки оповещений представлена в отдельной статье.

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

    В ином случае в протоколах работы среды, в которой установлен плагин, при обновлении информации о платеже в платформе commercetools могут возникать ошибки.

  • На стороне веб-сервиса обеспечена доступность URL, используемого для получения оповещений со стороны платёжной платформы, IP-адреса ecommpay добавлены в список доверенных и оповещения не блокируются на уровне межсетевых экранов или других сетевых устройств.

    Это может быть актуальным, в частности, при работе с платформами Docker и Node.js.

Процедуры

Выполнять возвраты можно для тех оплат, которые были проведены и по которым не были возвращены их полные суммы. На стороне платёжной платформы ecommpay таким оплатам соответствуют статусы success, partially reversed или partially refunded. В свою очередь, контролировать выполнение возвратов можно через интерфейсы платформ ecommpay и commercetools.

Чтобы выполнить возврат через HTTP API платформы commercetools, следует направить соответствующий запрос на обновление информации о платеже (подробнее). При этом в запросе следует передать массив actions со следующими данными:

  • Параметр action с названием действия, которое необходимо выполнить в рамках платежа, — addTransaction.

    Для инициирования возврата следует указать значение addTransaction.

  • Объект transaction со следующими данными:
    • Параметр type с типом транзакции Refund в платформе commercetools.

      Для инициирования возврата следует указать значение Refund.

    • Объект amount с параметрами currencyCode и centAmount, в которых следует указать валюту и сумму возврата соответственно.

      Для выполнения частичного возврата можно указать сумму, не превышающую актуальную сумму платежа.

Рис. 7. Пример использования массива actions в запросе на возврат
"actions": [
    {
      "action": "addTransaction",
      "transaction": {
        "type": "Refund",
        "amount": {
          "centAmount": 8300,
          "currencyCode": "EUR"
        }
      }
    }
  ]

Чтобы выполнить возврат через Gate API или Dashboard платформы ecommpay, следует использовать процедуры, представленные в соответствующих статьях: Возвраты средств после оплат (для Gate API) и Выполнение возвратов (для интерфейса Dashboard).

Контроль платежей и заказов

Контролировать информацию о платежах, проводимых с помощью плагина от ecommpay, а также о соответствующих заказах можно через интерфейс Merchant Center и HTTP API от commercetools. Также при необходимости можно использовать интерфейсы Dashboard и Data API от ecommpay, но следует учитывать, что в этом случае можно получать информацию только о платежах, инициируемых в платёжной платформе.

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

Рис. 8. Реестр заказов в интерфейсе Merchant Center

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

  • General — с информацией о заказе и расчётном адресе пользователя;
  • Custom Fields — с набором дополнительных полей, используемых в рамках заказа;
  • Shipping & Delivery — с информацией о способе доставки товаров;
  • Returns — с информацией о возврате товаров;
  • Payments — с информацией о платежах и транзакциях в рамках заказа.

Для получения информации о платеже, проведённом через плагин от ecommpay, следует перейти на вкладку Payments. На этой вкладке отображается код платёжного метода (в параметре Payment method name), название способа оплаты (в параметре Payment method), сумма и валюта платежа (в параметре Amount planned), статус, присвоенный платежу в платформе ecommpay, (в параметре PSP Status Code) и другие сведения.

Рис. 9. Карточка заказа в интерфейсе Merchant Center

В таблице Payment transactions отображается информация о транзакциях в платформе commercetools. Эта таблица состоит из следующих столбцов:

  • Date — дата создания транзакции;
  • Transaction type — тип транзакции (Charge для операции типа sale и Refund для операции типа refund или reversal);
  • Status — статус транзакции;
  • Amount — сумма и валюта транзакции;
  • Interaction ID — идентификатор операции, относящейся к конкретной транзакции, присвоенный на стороне ecommpay;
  • Transaction ID — идентификатор транзакции.

Статус каждой транзакции в платформе commercetools зависит от состояния соответствующей операции в платформе ecommpay и может быть одним из следующих: Initial, Pending, Successful или Failure. Так, транзакциям присваиваются следующие статусы:

  • Initial, если оповещение с информацией о соответствующей операции ещё не поступило в платформу commercetools;
  • Pending, если операция находится в промежуточном статусе;

  • Successful, если операция выполнена;
  • Failure, если операция отклонена.
Рис. 10. Таблица с данными о транзакциях в карточке заказа интерфейса Merchant Center

Для получения информации об операциях, инициированных в платформе ecommpay, следует щёлкнуть ссылку View PSP transaction log, в результате чего открывается страница с данными обо всех операциях в рамках конкретного платежа. Эти данные передаются в оповещениях от платёжной платформы и сохраняются в полях, созданных на этапе установки плагина.

Рис. 11. Страница с данными об операциях из оповещений от платёжной платформы

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

Рис. 12. Пример данных из ответа на запрос информации о платеже через commercetools
{
      "id": "7c081cc3-353d-4a80-8879-36e2f7dc5ac4",
      "version": 15,
      "versionModifiedAt": "2023-12-19T11:47:37.374Z",
      "lastMessageSequenceNumber": 10,
      "createdAt": "2023-12-19T11:27:56.278Z",
      "lastModifiedAt": "2023-12-19T11:47:37.374Z",
      "lastModifiedBy": {
        "clientId": "4cD5VUC9rScyTo69eOueu6Jh",
        "isPlatformClient": false
      },
      "createdBy": {
        "clientId": "4cD5VUC9rScyTo69eOueu6Jh",
        "isPlatformClient": false,
        "anonymousId": "f661235a-abf9-4ec6-915a-e7c4b3154902"
      },
      "amountPlanned": {
        "type": "centPrecision",
        "currencyCode": "EUR",
        "centAmount": 12300,
        "fractionDigits": 2
      },
      "paymentMethodInfo": {
        "paymentInterface": "ecommpay-integration",
        "method": "ecommpay-integration",
        "name": {
          "en": "card"
        }
      },
      "custom": {
        "type": {
          "typeId": "type",
          "id": "62408c35-a8b1-4bd0-9c15-99aa86cf8efc"
        },
        "fields": {
          "initial_request": "{\"redirect_success_url\":\"https://example.com/complete-redirect?id=success\"...}",
          "pp_url": "https://paymentpage.ecommpay.com/payment?project_id=109751&interface_type=33..."
        }
      },
      "paymentStatus": {
        "interfaceCode": "success"
      },
      "transactions": [
        {
          "id": "a503a5e0-9677-46d8-bab2-2dbbb10595ce",
          "timestamp": "2023-12-19T11:27:56.272Z",
          "type": "Charge",
          "amount": {
            "type": "centPrecision",
            "currencyCode": "EUR",
            "centAmount": 12300,
            "fractionDigits": 2
          },
          "interactionId": "47382010085133",
          "state": "Success"
        },
        {
          "id": "424ca2fd-0d31-475c-98f1-0f945a30a9ef",
          "type": "Refund",
          "amount": {
            "type": "centPrecision",
            "currencyCode": "EUR",
            "centAmount": 8300,
            "fractionDigits": 2
          },
          "interactionId": "0",
          "state": "Initial"
        }
      ],
      "interfaceInteractions": [
        {
          "type": {
            "typeId": "type",
            "id": "8978cfd5-fb49-4082-a4cf-2e49237e1c86"
          },
          "fields": {
            "operation_type": "sale",
            "sum_initial": "{\"amount\":12300,\"currency\":\"EUR\"}",
            "date": "2023-12-19T11:47:18+0000",
            "operation_id": 47382010085133,
            "operation_status": "awaiting 3ds result",
            "message": "Awaiting processing",
            "sum_converted": "{\"amount\":10592,\"currency\":\"GBP\"}"
          }
        },
        {
          "type": {
            "typeId": "type",
            "id": "8978cfd5-fb49-4082-a4cf-2e49237e1c86"
          },
          "fields": {
            "operation_type": "sale",
            "sum_initial": "{\"amount\":12300,\"currency\":\"EUR\"}",
            "date": "2023-12-19T11:47:25+0000",
            "operation_id": 47382010085133,
            "operation_status": "awaiting 3ds result",
            "message": "Awaiting processing",
            "sum_converted": "{\"amount\":10592,\"currency\":\"GBP\"}"
          }
        },
        {
          "type": {
            "typeId": "type",
            "id": "8978cfd5-fb49-4082-a4cf-2e49237e1c86"
          },
          "fields": {
            "operation_type": "sale",
            "sum_initial": "{\"amount\":12300,\"currency\":\"EUR\"}",
            "date": "2023-12-19T11:47:35+0000",
            "operation_id": 47382010085133,
            "operation_status": "success",
            "message": "Success",
            "sum_converted": "{\"amount\":10592,\"currency\":\"GBP\"}"
          }
        }
      ],
      "anonymousId": "f661235a-abf9-4ec6-915a-e7c4b3154902"
    }
  }
}

Более подробная информация о работе с платежами и заказами с использованием инструментов платформы commercetools представлена в документации commercetools.