Как подключить наши решения?
Прежде всего, со стороны вашей компании должна быть оформлена заявка на подключение платёжных решений  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 = 'USD';                  
   /* Код валюты платежа в формате ISO-4217 alpha-3*/
   
e.customerId = 'customer_51413';            
   /* Идентификатор пользователя в рамках проекта*/
   
e.paymentDescription = 'Тестовый платёж';   
   /* Описание платежа. Не обязательный, но полезный параметр*/

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

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

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

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

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

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

Чтобы узнать о результатах инициированной оплаты, надо разобрать соответствующее оповещение
от 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": "USD"
          },
          "description": "Тестовый платёж"  // Описание платежа
      },
      "account": {           // Информация о платёжном средстве
          "number": "431422******0056",
          "token": "9cb38282187b7a5b5b91b5814c6b814162741b29c0c486fbbc500cd451abb8b2",
          "type": "visa",
          "card_holder": "ADA LOVELACE",
          "id": 778804,
          "expiry_month": "11",
          "expiry_year": "2021"
      },
      "customer": {
        "id": "customer_51413"
      },
      "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": "USD"
        },
        "sum_converted": {
          // Сумма и валюта операции с учётом настроенных для проекта 
          // правил конвертации
            "amount": 31415,
            "currency": "USD"
        },
        "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);
    // Идентификатор проекта, полученный от ECOMMPAY при интеграции

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

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

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

/* Получение URL для вызова платёжной формы */
$url = $gate->getPurchasePaymentPageUrl($payment);

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

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

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

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

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

Чтобы узнать о результатах инициированной оплаты, надо разобрать соответствующее оповещение
от 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": "USD"
          },
          "description": "Тестовый платёж"  // Описание платежа
      },
      "account": {           // Информация о платёжном средстве
          "number": "431422******0056",
          "token": "9cb38282187b7a5b5b91b5814c6b814162741b29c0c486fbbc500cd451abb8b2",
          "type": "visa",
          "card_holder": "ADA LOVELACE",
          "id": 778804,
          "expiry_month": "11",
          "expiry_year": "2021"
      },
      "customer": {
        "id": "customer_51413"
      },
      "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": "USD"
        },
        "sum_converted": {
          // Сумма и валюта операции с учётом настроенных для проекта 
          // правил конвертации
            "amount": 31415,
            "currency": "USD"
        },
        "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": "USD",
       // Код валюты в формате ISO-4217 alpha-3
	   
   "payment_amount": 31415,
       // Сумма в дробных единицах валюты
	   
   "customer_id": "customer_51413",
       // Идентификатор пользователя в рамках проекта
	   
   "payment_description": "Тестовый платёж",
       // Описание платежа. Не обязательный, но полезный параметр
}

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

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

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

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

/* Подпись к заявке */
"signature": "NlxCFRsUYVwbYJG7xj62+sGhiyrCDbVrg3iy+3F9eXy4J8c55cE..."

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

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

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

/* Заявка с подписью */
{
   "project_id": 112,
   "payment_id": "test_payment_1536",
   "payment_currency": "USD",
   "payment_amount": 31415,
   "customer_id": "customer_51413",
   "payment_description": "Тестовый платёж",
   "signature": "NlxCFRsUYVwbYJG7xj62+sGhiyrCDbVrg3iy+3F9eXy4J8c55cE..."
}

/* Запрос для вызова платёжной формы */
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": "USD"
          },
          "description": "Тестовый платёж"  // Описание платежа
      },
      "account": {           // Информация о платёжном средстве
          "number": "431422******0056",
          "token": "9cb38282187b7a5b5b91b5814c6b814162741b29c0c486fbbc500cd451abb8b2",
          "type": "visa",
          "card_holder": "ADA LOVELACE",
          "id": 778804,
          "expiry_month": "11",
          "expiry_year": "2021"
      },
      "customer": {
        "id": "customer_51413"
      },
      "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": "USD"
        },
        "sum_converted": {
          // Сумма и валюта операции с учётом настроенных для проекта 
          // правил конвертации
            "amount": 31415,
            "currency": "USD"
        },
        "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, и сверить её с полученной. Подробнее: об оповещениях , о статусах платежей и о статусах операций.