Интеграция с префиксом PulPal
Подходит для интеграции где используются для платежей уникальные ID созданные на стороне Продавца. PulPal у себя на стороне добавляет префикс - это числовое или текстовое значение, которое используется на нашей стороне, чтобы Плательщик мог идентифицировать себя у терминала и использовать свой ID. Пример: ХХХ-1234(где ХХХ - это префикс, а 1234 уникальный ID в системе Продавца)
Обозначения | |
---|---|
[DEPRECATED] | Устаревший параметр, который будет удален в одном из ближайших обновлений |
Тестовая и продуктовая среды
Система PulPal предоставляет тестовую среду для проверки интеграционных элементов. Параметры входа в тестовый аккаунт будут предоставлены посредством электронной почты; аккаунт для продуктовой среды будет создан во время заключения договора.
Ссылка на кабинет мерчанта (тестовая среда) |
---|
https://merchant-dev.pulpal.az |
Ссылка на кабинет мерчанта (продуктовая среда) |
---|
https://merchant.pulpal.az |
Меню (аватар) > Профиль компании
В разделе “Профиль компании” выберите вкладку “Настройки”.
Здесь необходимо указать следующие параметры:
Параметры | Описание |
---|---|
Delivery URL | Используется для уведомления Вашего сервиса о произведенной оплате |
Check URL | Используется для получения данных о Вашем продукте или услуге |
Redirect URL | Используется для перенаправления пользователя после успешной онлайн-оплаты. Если значение не указано, то, после успешной оплаты, пользователь будет перенаправлен на главную страницу PulPal |
Key | Ключ для подписи, предоставляется мерчантом |
Salt | “Соль” для верификации мерчанта, предоставляется мерчантом |
Описание запросов
Delivery
curl --location --request POST 'https://merchant.az/api/delivery' \
--header 'Signatire: 7bcP2M98mKku6W+KSurrkuyY3PGhiKsdzfrhjs85CIw=' \
--header 'Content-Type: application/json' \
--header 'Nonce: 1' \
--data-raw '{
"price": "10000",
"productType": 3,
"externalId": "111111",
"debt": 0,
"amount": 2,
"providerType": 1,
"paymentAttempt": "df922726-c5c6-41c2-b2ff-dfac9022a473"
}'
var myHeaders = new Headers();
myHeaders.append("Signature", "7bcP2M98mKku6W+KSurrkuyY3PGhiKsdzfrhjs85CIw=");
myHeaders.append("Content-Type", "application/json");
myHeaders.append("Nonce", "510");
var raw = JSON.stringify({
price: "10000",
productType: 3,
externalId: "111111",
debt: 0,
amount: 2,
providerType: 1,
paymentAttempt: "df922726-c5c6-41c2-b2ff-dfac9022a473",
});
var requestOptions = {
method: "POST",
headers: myHeaders,
body: raw,
redirect: "follow",
};
fetch("https://merchant.az/api/delivery", requestOptions)
.then((response) => response.text())
.then((result) => console.log(result))
.catch((error) => console.log("error", error));
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://merchant.az/api/delivery',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"price": "10000",
"productType": 3,
"externalId": "111111",
"debt": 0,
"amount": 2,
"providerType": 1,
"paymentAttempt": "df922726-c5c6-41c2-b2ff-dfac9022a473"
}',
CURLOPT_HTTPHEADER => array(
'Authorization: 7bcP2M98mKku6W+KSurrkuyY3PGhiKsdzfrhjs85CIw=',
'Content-Type: application/json',
'Nonce': '1'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
require "uri"
require "net/http"
url = URI("https://merchant.az/api/delivery")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Signature"] = "7bcP2M98mKku6W+KSurrkuyY3PGhiKsdzfrhjs85CIw="
request["Content-Type"] = "application/json"
request["Nonce"] = "1"
request.body = "{\r\n \"price\": \"10000\",\r\n \"productType\": 3,\r\n \"externalId\": \"111111\",\r\n \"debt\": 0,\r\n \"amount\": 2,\r\n \"providerType\": 1,\r\n \"paymentAttempt\": \"df922726-c5c6-41c2-b2ff-dfac9022a473\"\r\n}"
response = https.request(request)
puts response.read_body
The above command returns
200 - OK
401 - Unauthorized
400 - Bad Request
[POST] Delivery td> | |
[JSON] Тело запроса и типы данных td> | |
Price: Int32 td> | Сумма, полученная от клиента (в копейках) td> |
ProductType: Int32 td> | Тип продукта (3 - товар, 4 - повторно оплачиваемый товар или услуга) td> |
ExternalId: String td> | ID продукта в Вашей системе td> |
Debt: Int32 td> | Долг за услугу (для товара всегда равен нулю) td> |
Amount: Int32 td> | Количество товара (для услуги всегда равен нулю) td> |
ProviderType: Int32 td> | Тип метода оплаты: 0 -- оплата наличными, 1 -- оплата банковской картой, 2 -- оплата такситной картой, 1000 -- оплата особым методом td> |
PaymentAttempt: String td> | Уникальный ID оплаты. В случае повтороного запроса с одинаковым PaymentAttempt следует его игнорировать, чтобы не зачислить одну и туже оплату два или более раз.То есть запросы с одинаковыми PaymentAttempt несут информацию об одной и тойже оплате. td> |
Ожидаемые ответы | |
---|---|
Успех | 200 ОК |
Ошибка подписи | 401 Unauthorized |
Ошибка запроса | 400 Bad Request |
Check
curl --location --request POST 'https:/merchant.az/api/check' \
--header 'Signature: 7bcP2M98mKku6W+KSurrkuyY3PGhiKsdzfrhjs85CIw=' \
--header 'Content-Type: application/json' \
--header 'Nonce: 1' \
--data-raw '{
"shortCode": "159674",
"code": "PREFIX-159674",
"separator": "-"
}'
var myHeaders = new Headers();
myHeaders.append("Signature", "7bcP2M98mKku6W+KSurrkuyY3PGhiKsdzfrhjs85CIw=");
myHeaders.append("Content-Type", "application/json");
myHeaders.append("Nonce", "1");
var raw = JSON.stringify({
shortCode: "159674",
code: "PREFIX-159674",
separator: "/",
});
var requestOptions = {
method: "POST",
headers: myHeaders,
body: raw,
redirect: "follow",
};
fetch("https:/merchant.az/api/check", requestOptions)
.then((response) => response.text())
.then((result) => console.log(result))
.catch((error) => console.log("error", error));
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https:/merchant.az/api/check',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"shortCode": "159674",
"code": "PREFIX-159674",
"separator": "-"
}',
CURLOPT_HTTPHEADER => array(
'Signature: 7bcP2M98mKku6W+KSurrkuyY3PGhiKsdzfrhjs85CIw=',
'Content-Type: application/json',
'Nonce: 1'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
require "uri"
require "net/http"
url = URI("https:/merchant.az/api/check")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Signature"] = "7bcP2M98mKku6W+KSurrkuyY3PGhiKsdzfrhjs85CIw="
request["Content-Type"] = "application/json"
request["Nonce"] = "1"
request.body = "{\r\n \"shortCode\": \"159674\",\r\n \"code\": \"PREFIX-159674\",\r\n \"separator\": \"-\"\r\n}"
response = https.request(request)
puts response.read_body
The above command returns JSON structured like this:
{
"name": {
"az": "Test (az)",
"ru": "Test (ru)",
"en": "Test (en)"
},
"description": {
"az": "Test (az)",
"ru": "Test (ru)",
"en": "Test (en)"
},
"debt": "200",
"externalId": 23,
"repeatable": false,
"payMore": false,
"payLess": false,
"active": true,
"signature": "",
"signature2": ""
}
[POST] Check | |
---|---|
shortCode: string | Уникальный код продукта/услуги без префикса |
code: string | Уникальный код продукта/услуги с префиксом |
separator: string | Символ, разделяющий префикс от кода |
[JSON] Ожидаемый ответ | |
---|---|
name: json | Название продукта на трех языках в формате{ “az”: “...”, “ru”: “...”, “en”: “...”} |
description: json | Описание продукта на трех языках в формате{ “az”: “...”, “ru”: “...”, “en”: “...”} |
debt: Int32 | Стоимость товара/задолженность по услуге (в копейках) |
externalId: string | ID продукта/услуги в Вашей системе |
repeatable: Boolean | Возможно ли провести оплату по данному ExternalId более, чем один раз |
payMore: Boolean | Параметр, указывающий, возможно ли внести оплату размером больше, чем поле Debt |
payLess: Boolean | Параметр, указывающий, возможно ли внести оплату размером меньше, чем поле Debt (при оплате наличными этот параметр будет проигнорирован и всегда равен true) |
active: Boolean | Доступен ли товар/активна ли услуга в данный момент |
[DEPRECATED] signature: string | Подпись, созданная с помощью "Salt" в следующем формате: Signature = SHA1(merchantId + ExternalId + FromEpoch + Salt) Здесь+ - это соединение линий FromEpoch - Целое число миллисекунд, разделенное на 300 000 с 1 января 1970 года (эра UNIX) |
signature2: string | Подпись, созданная с помощью "Salt" в следующем формате: Signature = SHA1(name_en + name_az + name_ru + description_en + description_az + description_ru + merchantId + externalId + price + fromEpoch + Salt) Здесь+ - это соединение линий fromEpoch -Целое число миллисекунд, разделенное на 300 000 с 1 января 1970 года (эра UNIX) |
Зачем нужна подпись?
Замечания
ВНИМАНИЕ!
Заголовки запросов td> | |
Nonce: td> | Одноразовое число, увеличивающееся на единицу с каждым запросом (стартовое значение 0) td> |
Signature: td> | Подпись, вычисляемая по следующему алгоритму: 1. Вычисление строки S = URL + Nonce + RequestBody 2. Вычисление массива байтов H как результат работы хеш-функции HMAC-SHA256 на строке S с ключом Key 3. Вычисление Base64-представления массива байтов H td> |
Зачем нужна подпись?
Разъяснение состава подписи td> | |
URL td> | URL, на который происходит запрос td> |
Nonce td> | См. Заголовок Nonce td> |
RequestBody td> | JSON тела запроса в виде строки td> |
Метод Delivery необходим для уведомления Вашей системы о произведенной оплате.
Метод Check необходим для получения информации об оплачиваемой услуге в терминале оплаты или окне онлайн-оплаты (подробнее -- ниже). Пример кода продукта/услуги:
XXX-012345
Здесь:
● XXX-012345 - это полный код продукта/услуги (Code)
● 012345 - короткий код продукта/услуги (ShortCode)
● XXX - префикс мерчанта. Устанавливается менеджерами PulPal по согласованию с мерчантом
● - - разделительный символ (Separator)
Данный код используется для оплаты пользователем в терминальной сети или для оплаты онлайн по следующей ссылке:
Ссылка для тестировочной среды |
---|
https://pay-dev.pulpal.az/payment?paymentdata=PaymentData |
Ссылка для продуктивной среды |
---|
https://pay.pulpal.az/payment?paymentdata=PaymentData |
Nümünə |
---|
https://pay-dev.pulpal.az/payment?uniqueCode=XXX-012345 |
İstehsal mühiti üçün link |
---|
https://pay.pulpal.az/payment?uniqueCode=XXX-012345 |
PaymentData — это строка в формате Base64, которая получается сериализацией JSON-объекта следующего содержания:
Название и тип | Значение |
---|---|
productUniqueCode: string | Уникальный код |
[DEPRECATED] signature: string | Подпись, созданная при помощи “соли” по следующему формату: Signature = SHA1(merchantId + ExternalId + FromEpoch + Salt) Здесь + - это операция конкатенации строк FromEpoch - целая часть от деления количества миллисекунд, прошедших с 1 января 1970 года (эпоха UNIX) на 300000 |
signature2: string | Подпись, созданная при помощи “соли” по следующему формату: Signature = SHA1(name_en + name_az + name_ru + description_en + description_az + description_ru + merchantId + externalId + price + fromEpoch + Salt) Здесь+ -- это операция конкатенации строк fromEpoch - целая часть от деления количества миллисекунд, прошедших с 1 января 1970 года (эпоха UNIX) на 300000 |
Зачем нужна подпись?
Тестовые данные для онлайн-оплаты td> | |
PAN td> | 4169733213495869 td> |
ExpDate td> | 05/23 td> |
CVV2 td> | 447 td> |
Замечание
Дополнительно в окне оплаты будет предоставлена возможности войти в систему или зарегистрироваться в ней (см. следующий скриншот).
Процесс оплаты состоит из следующих этапов:
- Пользователь переходит в систему PulPal по ссылке, размещенной на вашем сервисе
- Пользователь может произвести онлайн-оплату через сервис PulPal или же, получив уникальный код, произвести оплату посредством терминальных сетей
a) После проведения онлайн-оплаты, пользователь будет перенаправлен на ссылку Redirect URL - После перенаправления на Redirect URL или оплаты посредством терминала, в системе PulPal начинается обработка платежа. После успешного завершения обработки, вызывается метод Delivery с вышеуказанными параметрам
Изменение страницы оплаты
Изменение языка страницы
По умолчанию, язык страницы оплаты определяется на основе настроек браузера. Однако, если возникает необходимость в отображении страницы оплаты на одном из трех поддерживаемых языков вне зависимости от настроек пользователя, то предлагается воспользоваться параметром lang, который принимает одно из трех значений: az, ru, en. Ниже приведены примеры ссылок с параметром lang.
Формат параметров строки запроса
Ссылка для тестировочной среды |
---|
https://pay-dev.pulpal.az/payment?lang=az&{parameters} |
Ссылка для продуктивной среды |
---|
https://pay.pulpal.az/payment?lang=az&{parameters} |
Формат Base64
Ссылка для тестировочной среды |
---|
https://pay-dev.pulpal.az/payment?lang=az&paymentdata=PaymentData |
Ссылка для продуктивной среды |
---|
https://pay.pulpal.az/payment?lang=az&paymentdata=PaymentData |
Отключение неиспользуемых языков
Отметим, что можно отключать неиспользуемые языки. В данном случае, страница оплаты будет доступна только на выбранных языках.
Меню (аватар) > Профиль компании
В разделе “Профиль компании” выберите вкладку “Языки”.
Изменение названия мерчанта
Параметр customMerchantName позволяет задать имя мерчанта, которое будет отображаться на странице оплаты вместо зарегистрированного. PulPal хранит данное название, что позволит различать оплаты, проведенные под разными названиями.
По всем техническим вопросам, обращаться: noc@pulpal.az
Готовое решение PulPal для оплаты на сайте
Система PulPal позволяет интегрировать возможности для оплаты в Ваше приложение. Для того, чтобы добавить кнопку на Вашу платформу, необходимо провести настройку мерчанта.
Обозначения | |
---|---|
[DEPRECATED] | Устаревший параметр, который будет удален в одном из ближайших обновлений |
Тестовая и продуктовая среды
Система PulPal предоставляет тестовую среду для проверки интеграционных элементов. Параметры входа в тестовый аккаунт будут предоставлены посредством электронной почты; аккаунт для продуктовой среды будет создан во время заключения договора.
Ссылка на кабинет мерчанта (тестовая среда) |
---|
https://merchant-dev.pulpal.az |
Ссылка на кабинет мерчанта (продуктовая среда) |
---|
https://merchant.pulpal.az |
1 - Меню
2 - Merchant ID
Меню (аватар) > Профиль компании
В разделе “Профиль компании” выберите вкладку “Настройки”.
Здесь необходимо указать следующие параметры:
Параметры | Описание |
---|---|
Delivery URL | Используется для уведомления Вашего сервиса о произведенной оплате |
Redirect URL | Используется для перенаправления пользователя после успешной оплаты |
Key | Ключ для подписи, предоставляется мерчантом |
Salt | “Соль” для верификации мерчанта, предоставляется мерчантом |
Описание запросов
[POST] Delivery td> | |
[JSON] Тело запроса и типы данных td> | |
Price: Int32 td> | Сумма, полученная от клиента (в копейках) td> |
ProductType: Int32 td> | Тип продукта (3 - товар, 4 - повторно оплачиваемый товар или услуга) td> |
ExternalId: String td> | ID продукта в Вашей системе td> |
Repeatable: Boolean td> | Возможно провести оплату по данному ExternalId более, чем один раз td> |
Debt: Int32 td> | Долг за услугу (для товара всегда равен нулю) td> |
Amount: Int32 td> | Количество товара (для услуги всегда равен нулю) td> |
ProviderType: Int32 td> | Тип метода оплаты: 0 -- оплата наличными, 1 -- оплата банковской картой, 2 -- оплата такситной картой, 1000 -- оплата особым методом td> |
PaymentAttempt: String td> | Уникальный ID оплаты. В случае повтороного запроса с одинаковым PaymentAttempt следует его игнорировать, чтобы не зачислить одну и туже оплату два или более раз.То есть запросы с одинаковыми PaymentAttempt несут информацию об одной и тойже оплате. td> |
Ожидаемые ответы | |
---|---|
Успех | 200 ОК |
Ошибка подписи | 401 Unauthorized |
Ошибка запроса | 400 Bad Request |
[GET] Redirect | |
---|---|
ExternalId: string | ID продукта в Вашей системе |
Status: string | Статус оплаты: success - в случае успешной оплаты, error - в случае возникновения ошибки, canceled - в случае отмены оплаты пользователем |
Заголовок подписи запроса Delivery td> | |
Nonce td> | Одноразовое число, увеличивающееся на единицу с каждым запросом (стартовое значение 0) td> |
Signature td> | Подпись, вычисляемая по следующему алгоритму: 1. Вычисление строки S = URL + Nonce + RequestBody 2. Вычисление массива байтов H как результат работы хеш-функции HMAC-SHA256 на строке S с ключом Key 3. Вычисление Base64-представления массива байтов H 4. ВНИМАНИЕ! RequestBody -- это строка тела запроса в исходном виде; в случае, если Вы используете встроенный парсер JSON и получаете RequestBody сериализацией полученного объекта, правильное вычисление подписи не гарантируется td> |
Зачем нужна подпись?
Замечание
Разъяснение состава подписи td> | |
URL td> | URL, на который происходит запрос td> |
Nonce td> | См. Заголовок Nonce td> |
RequestBody td> | JSON тела запроса в виде строки td> |
Данная структура может быть передана в систему PulPal в одном из двух форматах.
Формат параметров строки запроса (QueryString)
Ссылка для тестировочной среды |
---|
https://pay-dev.pulpal.az/payment?{parameters} |
Ссылка для продуктивной среды |
---|
https://pay.pulpal.az/payment?{parameters} |
{parameters} -- это поля структуры PaymentData переданные как параметры строки запроса.
Название параметра | Значение параметра |
---|---|
merchantId | ID мерчанта в системе PulPal (см. Замечание ниже) |
productUniqueCode | Уникальный код |
price | Цена продукта |
prices_USD | Цена продукта в долларах* |
prices_EURO | Цена продукта в евро* |
price_PROVIDER | Цена продукта для такситных методов оплат** |
customMerchantName | Отображаемое имя мерчанта*** |
externalId | ID продукта в Вашей системе |
repeatable | Возможно ли провести оплату по данному ExternalId более, чем один раз |
expiresAt: Date (ISO 8601) | Дата до которой уникальный код на товар действителен, например, 1970-01-01T00:00:00Z |
name_az | Название продукта на азербайджанском языке |
name_ru | Название продукта на русском языке |
name_en | Название продукта на английском языке |
description_az | Описание продукта на азербайджанском языке |
description_ru | Описание продукта на русском языке |
description_en | Описание продукта на английском языке |
[DEPRECATED] signature | Подпись, созданная при помощи “соли” по следующему формату: Signature = SHA1(MerchantId + ExternalId + FromEpoch + Salt) Здесь + -- это операция конкатенации строк FromEpoch - целая часть от деления количества миллисекунд, прошедших с 1 января 1970 года (эпоха UNIX) на 300000 |
signature2 | Подпись, созданная при помощи “соли” по следующему формату: Signature = SHA1(name_en + name_az + name_ru + description_en + description_az + description_ru + merchantId + externalId + price + ExpiresAtEpoch + FromEpoch + Salt) Здесь + -- это операция конкатенации строк FromEpoch - целая часть от деления количества миллисекунд, прошедших с 1 января 1970 года (эпоха UNIX) на 300000 ExpiresAtEpoch - если передан параметр ExpiresAt, то количество миллисекунд, прошедших с 1 января 1970 года (эпоха UNIX), иначе “” (пустая строка). |
* Оплата в валюте AZN, конвертация выставленного счета согласно курсу Центрального Банка Азербайджана.
** см. Раздел “Оплата” > “Такситные методы оплат”
*** см. Раздел “Изменение страницы оплаты” > “Изменение названия мерчанта
Зачем нужна подпись?
ВНИМАНИЕ!
Пример ссылки |
---|
https://pay-dev.pulpal.az/payment?merchantId=180&price=200&name_az=az&name_ru=ru&name_en=en&description_az=az&description_ru=ru&description_en=en&externalId=44557 |
Запрос не обязательно должен содержать все перечисленные параметры.
● В случае, если задано значение параметра productUniqueCode, значения всех остальных полей игнорируется.
● В случае, если значение этого параметра не задано, в системе PulPal происходит регистрация нового продукта согласно значениям других полей в данной структуре.
● Параметр externalId служит для идентификации оплачиваемого продукта в Вашей системе. Это означает, что в этом поле можно указать, например, ID заказа или любую другую информацию, которая позволит идентифицировать покупку в Вашей системе.
● Если в системе PulPal уже зарегистрирован продукт с указанным значением externalId, то происходит его обновление в соответствии с другими параметрами структуры.
[DEPRECATED] Формат Base64
Ссылка для тестировочной среды |
---|
https://pay-dev.pulpal.az/payment?paymentdata=PaymentData |
Ссылка для продуктивной среды |
---|
https://pay.pulpal.az/payment?paymentdata=PaymentData |
PaymentData — это строка в формате Base64, которая получается сериализацией JSON-объекта структуры Продукт и к которой была применена операция encodeURI.
Структура Продукт
Название и тип | Значение |
---|---|
merchantId: number | ID мерчанта в системе PulPal (см. Замечание ниже) |
productUniqueCode: string | Уникальный код |
price: number | Цена продукта |
additionalPrices: json | Цены для такситных методов оплат в формате: * { "PROVIDER": 1 } |
customMerchantName: string | Отображаемое имя мерчанта** |
externalId: string | ID продукта в Вашей системе |
name: json | Название продукта на трех языках в формате{ “az”: “...”, “ru”: “...”, “en”: “...”} |
description: json | Описание продукта на трех языках в формате { “az”: “...”, “ru”: “...”, “en”: “...”} |
expiresAt: Date (ISO 8601) | Дата до которой уникальный код на товар действителен, например, 1970-01-01T00:00:00Z |
[DEPRECATED] signature: string | Подпись, созданная при помощи “соли” по следующему формату: signature = SHA1(merchantId + externalId + fromEpoch + salt) Здесь + - это операция конкатенации строк fromEpoch - целая часть от деления количества миллисекунд, прошедших с 1 января 1970 года (эпоха UNIX) на 300000 |
signature2 | Подпись, созданная при помощи “соли” по следующему формату: Signature = SHA1(name.en + name.az + name.ru + description.en + description.ru + description.az + merchantId + externalId + price + ExpiresAtEpoch + FromEpoch + Salt) Здесь + -- это операция конкатенации строк FromEpoch - целая часть от деления количества миллисекунд, прошедших с 1 января 1970 года (эпоха UNIX) на 300000 ExpiresAtEpoch - если передан параметр ExpiresAt, то количество миллисекунд, прошедших с 1 января 1970 года (эпоха UNIX), иначе “” (пустая строка). |
* см. Раздел “Оплата” > “Такситные методы оплат”
** см. Раздел “Изменение страницы оплаты” > “Изменение названия мерчанта”
Зачем нужна подпись?
ВНИМАНИЕ!
Структура paymentData не обязательно должна иметь все перечисленные поля.
● В случае, если задано значение поля productUniqueCode, значения всех остальных полей игнорируется.
● В случае, если значение этого поля не задано, в системе PulPal происходит регистрация нового продукта согласно значениям других полей в данной структуре.
● Поле externalId служит для идентификации оплачиваемого продукта в Вашей системе. Это означает, что в этом поле можно указать, например, ID заказа или любую другую информацию, которая позволит идентифицировать покупку в Вашей системе.
● Если в системе PulPal уже зарегистрирован продукт с указанным значением externalId, то происходит его обновление в соответствии с другими полями структуры.
Оплата
При нажатии на кнопку, пользователь увидит окно “Оплата”. В окне “Оплата” пользователь сможет либо оплатить продукт онлайн, либо получить данные для оплаты посредством терминальных сетей.
Тестовые данные для онлайн-оплаты | |
---|---|
PAN | 4169733213495869 |
ExpDate | 05/23 |
CVV2 | 447 |
Замечание
Дополнительно в окне оплаты будет предоставлена возможности войти в систему или зарегистрироваться в ней (см. следующий скриншот).
Процесс оплаты состоит из следующих этапов:
- Пользователь переходит в систему PulPal по ссылке, размещенной на вашем сервисе
- Пользователь может произвести онлайн-оплату через сервис PulPal или же, получив уникальный код, произвести оплату посредством терминальных сетей
a) После проведения онлайн-оплаты, пользователь будет перенаправлен на ссылку Redirect URL - После перенаправления на Redirect URL или оплаты посредством терминала, в системе PulPal начинается обработка платежа. После успешного завершения обработки, вызывается метод Delivery с вышеуказанными параметрами.
Такситные методы оплат
PulPal предоставляет возможность оплаты товаров с помощью такситных карт. Ниже приведена таблица допустимых значений параметра PROVIDER:
Kapital Bank BirKart
Значение PROVIDER | Срок рассрочки |
---|---|
birkart2 | 2 месяца |
birkart3 | 3 месяца |
birkart6 | 6 месяца |
birkart9 | 9 месяца |
birkart12 | 12 месяца |
birkart18 | 18 месяцев |
Bank of Baku BolKart
Значение PROVIDER | Срок рассрочки |
---|---|
bolkart1 | 1 месяца |
bolkart3 | 3 месяца |
bolkart6 | 6 месяца |
bolkart12 | 12 месяца |
Пример для параметров строки запроса | Пример для структуры “Продукт” |
---|---|
price_bolkart6=100 | { |
... | |
"additionalPrices": { | |
"bolkart6": 100 | |
} | |
} |
ABB TamKart
Значение PROVIDER | Срок рассрочки |
---|---|
tamkart3 | 3 месяца |
tamkart6 | 3, 6 месяца |
tamkart9 | 3, 6, 9 месяца |
tamkart12 | 3,6,9,12 месяца |
tamkart24 | 3,6,9,12,18,24 месяца |
Пример для параметров строки запроса | Пример для структуры “Продукт” |
---|---|
price_tamkart9=100 | { |
... | |
"prices": { | |
"tamkart9": 100 | |
} | |
} |
Yapi Bank WorldKart
Значение PROVIDER | Срок рассрочки |
---|---|
worldkart3 | 3 месяца |
worldkart6 | 6 месяца |
worldkart12 | 12 месяца |
worldkart18 | 18 месяцев |
worldkart24 | 24 месяца |
Изменение страницы оплаты
Изменение языка страницы
По умолчанию, язык страницы оплаты определяется на основе настроек браузера. Однако, если возникает необходимость в отображении страницы оплаты на одном из трех поддерживаемых языков вне зависимости от настроек пользователя, то предлагается воспользоваться параметром lang, который принимает одно из трех значений: az, ru, en. Ниже приведены примеры ссылок с параметром lang
Формат параметров строки запроса
Ссылка для тестировочной среды |
---|
https://pay-dev.pulpal.az/payment?lang=az&{parameters} |
Ссылка для продуктивной среды |
---|
https://pay.pulpal.az/payment?lang=az&{parameters} |
Формат Base64
Ссылка для тестировочной среды |
---|
https://pay-dev.pulpal.az/payment?lang=az&paymentdata=PaymentData |
Ссылка для продуктивной среды |
---|
https://pay.pulpal.az/payment?lang=az&paymentdata=PaymentData |
Отключение неиспользуемых языков
Отметим, что можно отключать неиспользуемые языки. В данном случае, страница оплаты будет доступна только на выбранных языках.
Меню (аватар) > Профиль компании
В разделе “Профиль компании” выберите вкладку “Языки”.
Изменение названия мерчанта
Параметр customMerchantName позволяет задать имя мерчанта, которое будет отображаться на странице оплаты вместо зарегистрированного. PulPal хранит данное название, что позволит различать оплаты, проведенные под разными названиями.
По всем техническим вопросам, обращаться : noc@pulpal.az