NAV
shell ruby php javascript

Интеграция с префиксом PulPal

Подходит для интеграции где используются для платежей уникальные ID созданные на стороне Продавца. PulPal у себя на стороне добавляет префикс - это числовое или текстовое значение, которое используется на нашей стороне, чтобы Плательщик мог идентифицировать себя у терминала и использовать свой ID. Пример: ХХХ-1234(где ХХХ - это префикс, а 1234 уникальный ID в системе Продавца)

Обозначения
[DEPRECATED] Устаревший параметр, который будет удален в одном из ближайших обновлений

Тестовая и продуктовая среды

Система PulPal предоставляет тестовую среду для проверки интеграционных элементов. Параметры входа в тестовый аккаунт будут предоставлены посредством электронной почты; аккаунт для продуктовой среды будет создан во время заключения договора.

Ссылка на кабинет мерчанта (тестовая среда)
https://merchant-dev.pulpal.az
Ссылка на кабинет мерчанта (продуктовая среда)
https://merchant.pulpal.az

Меню (аватар) > Профиль компании
В разделе “Профиль компании” выберите вкладку “Настройки”. Здесь необходимо указать следующие параметры:

Settings

Параметры Описание
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
[JSON] Тело запроса и типы данных
Price: Int32 Сумма, полученная от клиента (в копейках)
ProductType: Int32 Тип продукта (3 - товар, 4 - повторно оплачиваемый товар или услуга)
ExternalId: String ID продукта в Вашей системе
Debt: Int32 Долг за услугу (для товара всегда равен нулю)
Amount: Int32 Количество товара (для услуги всегда равен нулю)
ProviderType: Int32 Тип метода оплаты:
0 -- оплата наличными,
1 -- оплата банковской картой,
2 -- оплата такситной картой,
1000 -- оплата особым методом
PaymentAttempt: String Уникальный ID оплаты. В случае повтороного запроса с одинаковым PaymentAttempt следует его игнорировать, чтобы не зачислить одну и туже оплату два или более раз.То есть запросы с одинаковыми PaymentAttempt несут информацию об одной и тойже оплате.
Ожидаемые ответы
Успех 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)

Зачем нужна подпись?

Замечания

ВНИМАНИЕ!

Заголовки запросов
Nonce: Одноразовое число, увеличивающееся на единицу с каждым запросом (стартовое значение 0)
Signature: Подпись, вычисляемая по следующему алгоритму:
1. Вычисление строки S = URL + Nonce + RequestBody
2. Вычисление массива байтов H как результат работы хеш-функции HMAC-SHA256 на строке S с ключом Key
3. Вычисление Base64-представления массива байтов H

Зачем нужна подпись?

Разъяснение состава подписи
URL URL, на который происходит запрос
Nonce См. Заголовок Nonce
RequestBody JSON тела запроса в виде строки

Метод 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

Зачем нужна подпись?

Тестовые данные для онлайн-оплаты
PAN 4169733213495869
ExpDate 05/23
CVV2 447

Замечание

Дополнительно в окне оплаты будет предоставлена возможности войти в систему или зарегистрироваться в ней (см. следующий скриншот).

PaymentCash PaymentCard

Процесс оплаты состоит из следующих этапов:

  1. Пользователь переходит в систему PulPal по ссылке, размещенной на вашем сервисе
  2. Пользователь может произвести онлайн-оплату через сервис PulPal или же, получив уникальный код, произвести оплату посредством терминальных сетей
      a) После проведения онлайн-оплаты, пользователь будет перенаправлен на ссылку Redirect URL
  3. После перенаправления на 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

Отключение неиспользуемых языков

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

Меню (аватар) > Профиль компании

В разделе “Профиль компании” выберите вкладку “Языки”.

Languages

Изменение названия мерчанта

Параметр customMerchantName позволяет задать имя мерчанта, которое будет отображаться на странице оплаты вместо зарегистрированного. PulPal хранит данное название, что позволит различать оплаты, проведенные под разными названиями.

По всем техническим вопросам, обращаться: noc@pulpal.az

Готовое решение PulPal для оплаты на сайте

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

Обозначения
[DEPRECATED] Устаревший параметр, который будет удален в одном из ближайших обновлений

Тестовая и продуктовая среды

Система PulPal предоставляет тестовую среду для проверки интеграционных элементов. Параметры входа в тестовый аккаунт будут предоставлены посредством электронной почты; аккаунт для продуктовой среды будет создан во время заключения договора.

Ссылка на кабинет мерчанта (тестовая среда)
https://merchant-dev.pulpal.az
Ссылка на кабинет мерчанта (продуктовая среда)
https://merchant.pulpal.az

Menu

1 - Меню
2 - Merchant ID

Меню (аватар) > Профиль компании
В разделе “Профиль компании” выберите вкладку “Настройки”. Здесь необходимо указать следующие параметры:

Settings

Параметры Описание
Delivery URL Используется для уведомления Вашего сервиса о произведенной оплате
Redirect URL Используется для перенаправления пользователя после успешной оплаты
Key Ключ для подписи, предоставляется мерчантом
Salt “Соль” для верификации мерчанта, предоставляется мерчантом

Описание запросов

[POST] Delivery
[JSON] Тело запроса и типы данных
Price: Int32 Сумма, полученная от клиента (в копейках)
ProductType: Int32 Тип продукта (3 - товар, 4 - повторно оплачиваемый товар или услуга)
ExternalId: String ID продукта в Вашей системе
Repeatable: Boolean Возможно провести оплату по данному ExternalId более, чем один раз
Debt: Int32 Долг за услугу (для товара всегда равен нулю)
Amount: Int32 Количество товара (для услуги всегда равен нулю)
ProviderType: Int32 Тип метода оплаты:
0 -- оплата наличными,
1 -- оплата банковской картой,
2 -- оплата такситной картой,
1000 -- оплата особым методом
PaymentAttempt: String Уникальный ID оплаты. В случае повтороного запроса с одинаковым PaymentAttempt следует его игнорировать, чтобы не зачислить одну и туже оплату два или более раз.То есть запросы с одинаковыми PaymentAttempt несут информацию об одной и тойже оплате.
Ожидаемые ответы
Успех 200 ОК
Ошибка подписи 401 Unauthorized
Ошибка запроса 400 Bad Request
[GET] Redirect
ExternalId: string ID продукта в Вашей системе
Status: string Статус оплаты:
success - в случае успешной оплаты,
error - в случае возникновения ошибки,
canceled - в случае отмены оплаты пользователем
Заголовок подписи запроса Delivery
Nonce Одноразовое число, увеличивающееся на единицу с каждым запросом (стартовое значение 0)
Signature Подпись, вычисляемая по следующему алгоритму:
1. Вычисление строки S = URL + Nonce + RequestBody
2. Вычисление массива байтов H как результат работы хеш-функции HMAC-SHA256 на строке S с ключом Key
3. Вычисление Base64-представления массива байтов H
4. ВНИМАНИЕ! RequestBody -- это строка тела запроса в исходном виде; в случае, если Вы используете встроенный парсер JSON и получаете RequestBody сериализацией полученного объекта, правильное вычисление подписи не гарантируется

Зачем нужна подпись?

Замечание

Разъяснение состава подписи
URL URL, на который происходит запрос
Nonce См. Заголовок Nonce
RequestBody JSON тела запроса в виде строки

Данная структура может быть передана в систему 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

Замечание

Дополнительно в окне оплаты будет предоставлена возможности войти в систему или зарегистрироваться в ней (см. следующий скриншот).

PaymentCash PaymentCard

Процесс оплаты состоит из следующих этапов:

  1. Пользователь переходит в систему PulPal по ссылке, размещенной на вашем сервисе
  2. Пользователь может произвести онлайн-оплату через сервис PulPal или же, получив уникальный код, произвести оплату посредством терминальных сетей
      a) После проведения онлайн-оплаты, пользователь будет перенаправлен на ссылку Redirect URL
  3. После перенаправления на 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

Отключение неиспользуемых языков

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

Меню (аватар) > Профиль компании

В разделе “Профиль компании” выберите вкладку “Языки”. Languages

Изменение названия мерчанта

Параметр customMerchantName позволяет задать имя мерчанта, которое будет отображаться на странице оплаты вместо зарегистрированного. PulPal хранит данное название, что позволит различать оплаты, проведенные под разными названиями.

По всем техническим вопросам, обращаться : noc@pulpal.az