Передовые инструменты для электронной коммерции
Знакомьтесь, подключайте и настраивайте в точности под ваши задачи
Когда нужна готовая, надёжная
и гибко настраиваемая
платёжная форма
Когда нужен прямой доступ к платёжному
шлюзу, с полной функциональностью
и тонкими настройками.
Когда актуально встраивание платёжной формы в веб-сервис с применением готовых SDK.
Когда нужны удобные инструменты
для контроля, анализа и управления
платёжными операциями.
Когда нужно выполнять самые разные платежи в разных валютах и во множестве стран
Как подключить наши решения?
Прежде всего, со стороны вашей компании должна быть оформлена заявка на подключение
платёжных решений Jetpay и получено подтверждение о готовности начинать технические работы.
Когда это сделано, наступает пора обратиться к нашим специалистам
технической поддержки — чтобы уточнить ваши задачи, подобрать под них оптимальные
решения и перейти к дальнейшим работам.
Интеграция технических решений может занять несколько часов в течение одного дня,
а может и несколько недель с разбивкой на этапы. Многое зависит от сложности задач, квалификации специалистов и от совместной готовности к активной работе.
Поэтому изначально важно согласовать с нашими специалистами порядок и сроки выполнения работ.
В рамках интеграции мы действуем с необходимой аккуратностью.
Готовим и используем индивидуальную тестовую среду, чтобы настроить, проверить
и доработать с обеих сторон всё, что нужно.
Переводим решение в рабочий режим под тщательным совместным контролем.
И только после стадии активного мониторинга, когда мы уверены в корректном проведении платёжных операций на рабочем трафике, переводим проект в режим штатной поддержки.
Мы привыкли работать так, чтобы было чему радоваться.
При переводе вашего проекта в режим штатной поддержки вы можете рассчитывать
на надёжное проведение платёжных операций и радоваться этому вместе с нами. Можете контролировать все операции, проводимые в вашем проекте через платформу Jetpay, и управлять ими через личный кабинет.
И, конечно, можете обращаться к нам с любыми вопросами и предложениями.
Схема работы
Давайте разберёмся, как это работает.
пользователи
среда
Примеры
Давайте посмотрим, как с этим работать.
Если SDK ещё не подключён, стоит загрузить его c GitHub и подключить через пакетный менеджер.
npm install jetpay yarn add jetpay
После этого можно проводить оплаты и использовать другие возможности SDK.
Для проведения оплаты, прежде всего, надо заполнить заявку — мы, такие-то (идентификатор и ключ проекта), просим провести новый платёж (идентификатор платежа) с переводом средств в нашу пользу (данные о платеже).
На основе заполненной заявки SDK позволяет автоматически генерировать запрос на открытие платёжной формы с заданными параметрами платежа.
/* Импорт модуля Payment SDK */
const { Payment } = require('jetpay');
/* Создание объекта с идентификатором проекта и секретным ключом */
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();
Приведённые в данном примере параметры являются минимально необходимыми и обязательными
для любой оплаты. Также могут использоваться и другие. Подробнее.
Используя сформированный запрос, можно вызвать для пользователя настроенную платёжную форму.
В данном примере мы вызываем платёжную форму в новой вкладке браузера. Это можно сделать разными способами. Подробнее.Чтобы узнать о результатах инициированной оплаты, надо разобрать соответствующее оповещение
от Jetpay.
/* Код для разбора и обработки оповещений */
const { Callback } = require('jetpay');
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", // Унифицированный код ответа Jetpay
"message": "Success", // Расшифровка кода ответа Jetpay
"eci": "05"
},
"signature": "22YlUIIgoppli/JX8w5F5+c2h12RXi81WLmgDx..." // Подпись оповещения
}
Оповещение включает в себя подпись и информацию о результатах проведения платежа.
При использовании SDK проверка подписи в оповещении выполняется автоматически.
Подробнее: об оповещениях, о статусах платежей и о статусах операций.
Для проведения оплаты, прежде всего, надо заполнить заявку — мы, такие-то (идентификатор и ключ проекта), просим провести новый платёж (идентификатор платежа) с переводом средств в нашу пользу (данные о платеже).
На основе заполненной заявки SDK позволяет автоматически генерировать запрос на открытие платёжной формы с заданными параметрами платежа.
/* Заявка на оплату */
$payment = new jetpay\Payment(112);
// Идентификатор проекта
$payment->setPaymentAmount(31415)->setPaymentCurrency('RUB');
// Сумма (в минорных единицах валюты) и валюта (в формате ISO-4217 alpha-3)
$payment->setPaymentId('test_payment_1539');
// Идентификатор платежа, уникальный в рамках проекта
$payment->setPaymentDescription('Тестовый платёж');
// Описание платежа. Не обязательный, но полезный параметр
$gate = new jetpay\Gate('secret_key');
// Секретный ключ проекта, полученный от Jetpay при интеграции
/* Запрос для вызова платёжной формы */
$url = $gate->getPurchasePaymentPageUrl($payment);
Все параметры в данном примере, за исключением PaymentDescription, являются минимально необходимыми и обязательными для любой оплаты. Также могут использоваться и другие. Подробнее.
Используя сформированный запрос, можно вызвать для пользователя настроенную платёжную форму.
В данном примере мы вызываем платёжную форму в новой вкладке браузера. Это можно сделать разными способами. Подробнее.Чтобы узнать о результатах инициированной оплаты, надо разобрать соответствующее оповещение
от Jetpay.
/* Код для разбора оповещений */
$gate = new jetpay\Gate('secret_key');
$callback = $gate->handleCallback($data);
// $data — данные в формате JSON, принятые от Jetpay на указанном при интеграции 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", // Унифицированный код ответа Jetpay
"message": "Success", // Расшифровка кода ответа Jetpay
"eci": "05"
},
"signature": "22YlUIIgoppli/JX8w5F5+c2h12RXi81WLmgDx..." // Подпись оповещения
}
Оповещение включает в себя подпись и информацию о результатах проведения платежа. При использовании SDK проверка подписи в оповещении выполняется автоматически. Подробнее: об оповещениях, о статусах платежей и о статусах операций.
Первым делом надо заполнить заявку на проведение оплаты — мы, такие-то (идентификатор и ключ проекта), просим провести новый платёж (идентификатор платежа) с переводом средств в нашу пользу (данные о платеже).
/* Исходная заявка */
{
"project_id": "112",
// Идентификатор проекта, полученный от Jetpay при интеграции
"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"
// Секретный ключ проекта, полученный от Jetpay при интеграции
/* Подпись к заявке */
"signature": "TSzdE5rJZaA9VyJtnfRI3620jOp2hf4RKwmKoWYjTYAKoGpfXri..."
Подпись генерируется заданным способом на основе заявки с ключом (и не включается в заявку до подписания, чтобы не допускать рекурсии). Подробнее.
Подписанную заявку можно упаковывать в запрос на адрес https://paymentpage.jetpay.kz.
Это URL для открытия платёжной формы с заданными параметрами платежа.
/* Заявка с подписью */
{
"project_id": "112"
"payment_id": "test_payment_1536"
"payment_currency": "RUB"
"payment_amount": "31415"
"payment_description": "Тестовый платёж"
"signature": "TSzdE5rJZaA9VyJtnfRI3620jOp2hf4RKwmKoWYjTYAKoGpfXriFf82MxF..."
}
/* Запрос для вызова платёжной формы */
https://paymentpage.jetpay.kz/payment?payment_id=test_payment_1536&payment_am...
Используя сформированный запрос, можно вызвать для пользователя настроенную платёжную форму.
В данном примере мы вызываем платёжную форму в новой вкладке браузера. Это можно сделать разными способами. Подробнее.
Чтобы узнать о результатах инициированной оплаты, надо разобрать соответствующее оповещение
от Jetpay.
/* Пример оповещения об успешной оплате */
{
"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", // Унифицированный код ответа Jetpay
"message": "Success", // Расшифровка кода ответа Jetpay
"eci": "05"
},
"signature": "22YlUIIgoppli/JX8w5F5+c2h12RXi81WLmgDx..." // Подпись оповещения
}
Оповещение включает в себя подпись и информацию о результатах проведения платежа. Для проверки достоверности оповещения необходимо сгенерировать подпись на основе всех параметров, кроме signature, и сверить её с полученной. Подробнее: об оповещениях, о статусах платежей и о статусах операций.