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

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

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

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

Схема работы

Давайте разберёмся, как это работает.

Мерчанты
Ваши
пользователи
Ваш веб-сервис
Ваш персонал
ECommPay
Payment Page
Gate
Dashboard
Платёжная платформа
Партнёры
Платёжная
среда
Партнёры

Примеры

Давайте посмотрим, как с этим работать.

Как провести оплату через Payment Page?
* Подключаем SDK

Если SDK ещё не подключён, стоит загрузить его c GitHub  и подключить через пакетный менеджер.

npm install ecommpay
yarn add ecommpay

После этого можно проводить оплаты и использовать другие возможности SDK.

Заполняем заявку и формируем запрос

Для проведения оплаты, прежде всего, надо заполнить заявку — мы, такие-то (идентификатор и ключ проекта), просим провести новый платёж (идентификатор платежа) с переводом средств в нашу пользу (данные о платеже).
На основе заполненной заявки SDK позволяет автоматически генерировать запрос на открытие платёжной формы с заданными параметрами платежа.

/* Импорт модуля Payment SDK */
const { Payment } = require('ecommpay');

/* Создание объекта ECP с идентификатором проекта и секретным ключом */
const e = new Payment('112', 'secret_key');
                    
/* Заполнение заявки на оплату */
e.paymentId = 'test_payment_1539'; // Идентификатор платежа, уникальный в рамках проекта
e.paymentAmount = 3415;            // Сумма платежа в минорных единицах валюты
e.paymentCurrency = 'RUB';         // Валюта платежа в формате ISO-4217 alpha-3

/* Получение URL для вызова платёжной формы */
const url = e.getUrl();

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

Отправляем запрос и ждём пользователя

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

В данном примере мы вызываем платёжную форму в новой вкладке браузера. А можно и иначе. Подробнее .
Узнаём о результатах

Чтобы узнать о результатах инициированной оплаты, надо разобрать соответствующее оповещение
от ECommPay.

/* Код для разбора и обработки оповещений */
const { Callback } = require('ecommpay');

app.post('/payment/callback', function(req, res) {
  const callback = new Callback(req.body);
  if (callback.isPaymentSuccess()) {
    const paymentId = callback.getPaymentId();     // Получаем идентификатор платежа
    // Выполняем необходимые действия, например, перевод заказа в статус "Оплачен"
  }
});

/* Пример оповещения об успешной оплате */
{
      "project_id": 112,       // Идентификатор проекта
      "payment": {             // Информация о платеже
          "id": "test_payment_1539",        // Идентификатор платежа
          "type": "purchase",  // Тип платежа
          "status": "success", // Статус платежа
          "date": "2018-08-28T09:11:28+0000",  // Дата и время проведения платежа
          "method": "card",  // Платёжный метод
          "sum": {           // Сумма и валюта платежа
            "amount": 31415,
            "currency": "RUB"
          },
          "description": "Тестовый платёж"  // Описание платежа
      },
      "account": {           // Информация о платёжном средстве
          "number": "431422******0056",
          "token": "9cb38282187b7a5b5b91b5814c6b814162741b29c0c486fbbc500cd451abb8b2",
          "type": "visa",
          "card_holder": "ADA LOVELACE",
          "id": 778804,
          "expiry_month": "11",
          "expiry_year": "2021"
      },
      "operation": {     // Информация о последней операции в рамках платежа
        "id": 17839000001150,  // Идентификатор операции
        "type": "sale",        // Тип операции
        "status": "success",   // Статус операции
        "date": "2018-08-28T09:11:28+0000", // Дата и время проведения операции
        "created_date": "2018-08-28T09:10:50+0000",
        "request_id": "2c8af331519833f2c96c4a1aaf60edfcffb...", 
          // Идентификатор запроса
        "sum_initial": {    // Сумма и валюта операции, указанные в запросе
          "amount": 31415,
          "currency": "RUB"
        },
        "sum_converted": {
          // Сумма и валюта операции с учётом настроенных для проекта 
          // правил конвертации
            "amount": 31415,
            "currency": "RUB"
        },
        "provider": {     // Информация о проведении платежа в платёжной системе
          "id": 6,
          "payment_id": "15354474886323",
          "date": "2018-02-07T08:34:24+0000",
          "auth_code": "563253",
          "endpoint_id": 6
        },
        "code": "0",          // Унифицированный код ответа ECommPay
        "message": "Success", // Расшифровка кода ответа ECommPay
        "eci": "05"
      },
      "signature": "22YlUIIgoppli/JX8w5F5+c2h12RXi81WLmgDx..."   // Подпись оповещения
  }

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

* Подключаем SDK

Если SDK ещё не подключён, стоит загрузить его с GitHub  и подключить через Composer .

composer require ecommpay/paymentpage-sdk

После этого можно проводить оплаты и использовать другие возможности SDK.

Заполняем заявку и формируем запрос

Для проведения оплаты, прежде всего, надо заполнить заявку — мы, такие-то (идентификатор и ключ проекта), просим провести новый платёж (идентификатор платежа) с переводом средств в нашу пользу (данные о платеже).
На основе заполненной заявки SDK позволяет автоматически генерировать запрос на открытие платёжной формы с заданными параметрами платежа.

/* Заявка на оплату */

$payment = new ecommpay\Payment(112);
    // Идентификатор проекта

$payment->setPaymentAmount(31415)->setPaymentCurrency('RUB');
    // Сумма (в минорных единицах валюты) и валюта (в формате ISO-4217 alpha-3)

$payment->setPaymentId('test_payment_1539');
    // Идентификатор платежа, уникальный в рамках проекта
                    
$payment->setPaymentDescription('Тестовый платёж');
    // Описание платежа. Не обязательный, но полезный параметр

$gate = new ecommpay\Gate('secret_key');
    // Секретный ключ проекта, полученный от ECommPay при интеграции

/* Запрос для вызова платёжной формы */
$url = $gate->getPurchasePaymentPageUrl($payment);

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

Отправляем запрос и ждём пользователя

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

В данном примере мы вызываем платёжную форму в новой вкладке браузера. А можно и иначе. Подробнее .
Узнаём о результатах

Чтобы узнать о результатах инициированной оплаты, надо разобрать соответствующее оповещение
от ECommPay.

/* Код для разбора оповещений */
$gate = new ecommpay\Gate('secret_key');
$callback = $gate->handleCallback($data);

// $data — данные в формате JSON, принятые от ECommPay на указанном при интеграции URL
// $callback — объект c информацией об оповещении

/* Методы, поддерживаемые объектом Callback */
// Callback::getPaymentId();            // Получение идентификатора платежа
// Callback::getPaymentStatus();        // Получение статуса платежа
// Callback::getPayment();              // Получение всей информации о платеже


/* Пример оповещения об успешной оплате */
{
      "project_id": 112,       // Идентификатор проекта
      "payment": {             // Информация о платеже
          "id": "test_payment_1539",        // Идентификатор платежа
          "type": "purchase",  // Тип платежа
          "status": "success", // Статус платежа
          "date": "2018-08-28T09:11:28+0000",  // Дата и время проведения платежа
          "method": "card",  // Платёжный метод
          "sum": {           // Сумма и валюта платежа
            "amount": 31415,
            "currency": "RUB"
          },
          "description": "Тестовый платёж"  // Описание платежа
      },
      "account": {           // Информация о платёжном средстве
          "number": "431422******0056",
          "token": "9cb38282187b7a5b5b91b5814c6b814162741b29c0c486fbbc500cd451abb8b2",
          "type": "visa",
          "card_holder": "ADA LOVELACE",
          "id": 778804,
          "expiry_month": "11",
          "expiry_year": "2021"
      },
      "operation": {     // Информация о последней операции в рамках платежа
        "id": 17839000001150,  // Идентификатор операции
        "type": "sale",        // Тип операции
        "status": "success",   // Статус операции
        "date": "2018-08-28T09:11:28+0000", // Дата и время проведения операции
        "created_date": "2018-08-28T09:10:50+0000",
        "request_id": "2c8af331519833f2c96c4a1aaf60edfcffb...", 
          // Идентификатор запроса
        "sum_initial": {    // Сумма и валюта операции, указанные в запросе
          "amount": 31415,
          "currency": "RUB"
        },
        "sum_converted": {
          // Сумма и валюта операции с учётом настроенных для проекта 
          // правил конвертации
            "amount": 31415,
            "currency": "RUB"
        },
        "provider": {     // Информация о проведении платежа в платёжной системе
          "id": 6,
          "payment_id": "15354474886323",
          "date": "2018-02-07T08:34:24+0000",
          "auth_code": "563253",
          "endpoint_id": 6
        },
        "code": "0",          // Унифицированный код ответа ECommPay
        "message": "Success", // Расшифровка кода ответа ECommPay
        "eci": "05"
      },
      "signature": "22YlUIIgoppli/JX8w5F5+c2h12RXi81WLmgDx..."   // Подпись оповещения
  }

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

Заполняем заявку

Первым делом надо заполнить заявку на проведение оплаты — мы, такие-то (идентификатор и ключ проекта), просим провести новый платёж (идентификатор платежа) с переводом средств в нашу пользу (данные о платеже).

/* Исходная заявка */
{
   "project_id": "112",
       // Идентификатор проекта, полученный от ECommPay при интеграции
   "payment_id": "test_payment_1539",
       // Идентификатор платежа, уникальный в рамках проекта
   "payment_currency": "RUB",
       // Валюта в формате ISO-4217 alpha-3
   "payment_amount": "31415",
       // Сумма в минорных единицах валюты
   "payment_description": "Тестовый платёж",
       // Описание платежа. Не обязательный, но полезный параметр
}

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

Заверяем заявку

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

/* Заявка с ключом для генерации подписи */
{
   "project_id": "112",
   "payment_id": "test_payment_1536",
   "payment_currency": "RUB",
   "payment_amount": "31415",
   "payment_description": "Тестовый платёж",
}
   "secret key": "secret_key"
       // Секретный ключ проекта, полученный от ECommPay при интеграции

/* Подпись к заявке */
"signature": "TSzdE5rJZaA9VyJtnfRI3620jOp2hf4RKwmKoWYjTYAKoGpfXri..."

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

Формируем запрос

Подписанную заявку можно упаковывать в запрос на адрес https://paymentpage.ecommpay.com.
Это URL для открытия платёжной формы с заданными параметрами платежа.

/* Заявка с подписью */
{
   "project_id": "112"
   "payment_id": "test_payment_1536"
   "payment_currency": "RUB"
   "payment_amount": "31415"
   "payment_description": "Тестовый платёж"
   "signature": "TSzdE5rJZaA9VyJtnfRI3620jOp2hf4RKwmKoWYjTYAKoGpfXriFf82MxF..."
}

/* Запрос для вызова платёжной формы */
https://paymentpage.ecommpay.com/payment?payment_id=test_payment_1536&payment_am...
Отправляем запрос и ждём пользователя

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

В данном примере мы вызываем платёжную форму в новой вкладке браузера. А можно и иначе. Подробнее .

Узнаём о результатах

Чтобы узнать о результатах инициированной оплаты, надо разобрать соответствующее оповещение
от ECommPay.

/* Пример оповещения об успешной оплате */
{
      "project_id": 112,       // Идентификатор проекта
      "payment": {             // Информация о платеже
          "id": "test_payment_1539",        // Идентификатор платежа
          "type": "purchase",  // Тип платежа
          "status": "success", // Статус платежа
          "date": "2018-08-28T09:11:28+0000",  // Дата и время проведения платежа
          "method": "card",  // Платёжный метод
          "sum": {           // Сумма и валюта платежа
            "amount": 31415,
            "currency": "RUB"
          },
          "description": "Тестовый платёж"  // Описание платежа
      },
      "account": {           // Информация о платёжном средстве
          "number": "431422******0056",
          "token": "9cb38282187b7a5b5b91b5814c6b814162741b29c0c486fbbc500cd451abb8b2",
          "type": "visa",
          "card_holder": "ADA LOVELACE",
          "id": 778804,
          "expiry_month": "11",
          "expiry_year": "2021"
      },
      "operation": {     // Информация о последней операции в рамках платежа
        "id": 17839000001150,  // Идентификатор операции
        "type": "sale",        // Тип операции
        "status": "success",   // Статус операции
        "date": "2018-08-28T09:11:28+0000", // Дата и время проведения операции
        "created_date": "2018-08-28T09:10:50+0000",
        "request_id": "2c8af331519833f2c96c4a1aaf60edfcffb...", 
          // Идентификатор запроса
        "sum_initial": {    // Сумма и валюта операции, указанные в запросе
          "amount": 31415,
          "currency": "RUB"
        },
        "sum_converted": {
          // Сумма и валюта операции с учётом настроенных для проекта 
          // правил конвертации
            "amount": 31415,
            "currency": "RUB"
        },
        "provider": {     // Информация о проведении платежа в платёжной системе
          "id": 6,
          "payment_id": "15354474886323",
          "date": "2018-02-07T08:34:24+0000",
          "auth_code": "563253",
          "endpoint_id": 6
        },
        "code": "0",          // Унифицированный код ответа ECommPay
        "message": "Success", // Расшифровка кода ответа ECommPay
        "eci": "05"
      },
      "signature": "22YlUIIgoppli/JX8w5F5+c2h12RXi81WLmgDx..."   // Подпись оповещения
  }

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