API FONDYВерсія 1.0

Параметри запиту

Параметр version необхідно передавати зі значенням 1.0.1

ПараметрТипОписПриклад переданого мерчантом значення
order_idstring(1024)Ідентифікатор замовлення, що призначається мерчантом.

обов’язковий
ID1234
merchant_idinteger(12)Унікальний ідентифікатор мерчанта. Видається торговцю після реєстрації.

обов’язковий
1
order_descstring(1024)Опис замовлення. Передається мерчантом завжди в кодуванні UTF-8

обов’язковий
Придбати квиток на поїзд № 1234 Київ – Львів
signaturestring(40)Підпис замовлення. Слугує для перевірки цілісності та автентичності запиту від мерчанта на стороні сервера платіжного шлюзу. Алгоритм формування підпису див. Формування підпису запиту і відповіді

обов’язковий
1773cf135bd89656131134b98637894dad42f808
amountinteger(12)Сума замовлення в копійках / центах без роздільників

обов’язковий
1020 (USD) — означає 10 доларів 20 центів
currencystring(3)Валюта замовлення. Допустимі значення:
UAH — українська гривня
USD — долар США
EUR — євро
GBP — фунт стерлінгів обов’язковий

CZK — чеська крона
USD
versionstring(10)Версія протоколу.

Значення за замовчуванням: 1.0.1
Версія 1.0 – застаріла
1.0.1
response_urlstring(2048)URL сторінки мерчанта, на яку буде перенаправлений клієнт у браузері після завершення оплати

Значення за замовчуванням: https://pay.fondy.eu/checkout/responsepage
http://site.com/responseurl
server_callback_urlstring(2048)URL сторінки мерчанта, на яку буде надіслано відповідь про результат оплати через сервер-сервер з’єднання. Детальніше про серверні колбеки див. п. Отримання Callback
http://site.com/callbackurl
payment_systemsstring(1024)Список платіжних систем, доступних клієнту при виборі способу оплати на сторінці FONDY. Системи повинні бути розділені комою або крапкою з комою.
Допустимі значення: див. Підтримувані платіжні системи

За замовчуванням: береться з налаштувань мерчанта
card
payment_methodstring(1024)Платіжний метод, який необхідно відобразити платнику на платіжній сторінці за замовчуванням. Наприклад monobank_ua

За замовчуванням: береться з налаштувань мерчанта
card
default_payment_systemstring(25)Платіжна система, яка першою відобразиться платнику на платіжній сторінці.
Допустимі значення: див. Підтримувані платіжні системи
card
lifetimeinteger(9)Час життя замовлення в секундах. Після закінчення цього часу, замовленню буде присвоєно статус ‘expired’ якщо клієнт його не оплатив

Значення за замовчуванням: 36000
Максимально-допустиме значення: 69120000
600
merchant_datastring(2048)Будь-який довільний набір даних, який мерчант хоче отримати назад у відповіді на response_url та/або server_callback_url, а також у звітах 
preauthstring(1)Параметр застосовується тільки при оплаті карткою Visa/MasterCard
N — сума списується з картки клієнта відразу і відшкодовується на рахунок мерчанта відповідно до регламенту зарахування.
Y — сума блокується на картці клієнта і не списується доти, доки мерчант не надішле запит capture для підтвердження списання

Значення за замовчуванням: N
N
sender_emailstring(254)Email платника 
delayedstring(1)Ознака відкладеного платежу.
Y — дозволити клієнту оплатити платіж пізніше в межах ліміту часу, зазначеного в параметрі lifetime. Торговець повинен бути готовим до отримання декількох колбеків і редиректів з результатом оплати для одного і того ж платежу. Клієнту буде дозволено повторити спробу оплати одного і того ж order_id, якщо попередня спроба була не успішна
N — у разі спроби оплатити платіж з одним і тим самим order_id повторно клієнт отримуватиме помилку з проханням перейти на сайт торговця і створити платіж заново. У цьому випадку буде тільки один колбек на server_callback_url

Значення за замовчуванням: Y
 
langstring(2)Мова платіжної сторінки. Доступні значення:
uk — українська
ru — російська
en — англійська
lv — латиська
fr — французька
cs — чеська
ro — румунська
it — італійська
sk — словацька
pl — польська
es — іспанська
hu — угорська
de — німецька
 
product_idstring(1024)Ідентифікатор оплачуваного товару/послуги 
required_rectokenstring(1)Прапор, що вказує на необхідність повертати токен картки – токен, за яким можна списувати кошти з картки без подальшої участі клієнта

Значення за замовчуванням: N
Y
verificationstring(1)Y – буде зроблено автоматичний реверс платежу системою FONDY, якщо платіж успішний

Значення за замовчуванням: N
Y
verification_typestring(25)amount – на карті блокується зазначена сума без додаткових перевірок
code – на картці блокується зазначена сума, з випадковим 4-х символьним кодом, який клієнт повинен ввести для завершення верифікації

Значення за замовчуванням: amount
Y
rectokenstring(40)Токен картки, за яким можна списувати кошти з картки без подальшої участі клієнта
544d3f86237886b6404d8b000f6a7d71c45410b7
receiver_rectokenstring(40)Токен картки, за яким можна кредитувати картку, не передаючи повний номер картки
544d3f86237886b6404d8b000f6a7d71c45410b7
design_idinteger(6)ID дизайну, налаштованого в мерчант-порталі
123
subscriptionstring(1)Y – активувати регулярні платежі (за календарем)
N – значення за замовчуванням, деактивувати регулярні платежі
Y/N
subscription_callback_urlstring(2048)URL сторінки мерчанта, на яку буде надіслано відповідь про результат запланованої оплати через сервер-сервер з’єднання 

Параметри фінальної відповіді

ПараметрТипОписПриклад відповіді
order_idstring(1024)Ідентифікатор замовлення. Призначається мерчантом. 
merchant_idinteger(12)Унікальний ідентифікатор мерчанта. Видається торговцю після реєстрації.1
amountinteger(12)Сума замовлення в копійках / центах без роздільників1020 (USD) — означає 10 доларів 20 центів
currencystring(3)Валюта замовлення. Допустимі значення:
UAH — українська гривня
USD — долар США
GBP — фунт стерлінгів
EUR — євро
 
order_statusstring(50)Статус обробки замовлення. Може містити такі значення:
created — замовлення було створено, але клієнт ще не ввів платіжні реквізити; необхідно продовжувати опитувати статус замовлення
processing — замовлення все ще перебуває в процесі обробки платіжним шлюзом; необхідно продовжувати опитувати статус замовлення
declined — замовлення відхилено платіжним шлюзом FONDY, зовнішньою платіжною системою або банком-еквайром
approved — замовлення успішно здійснене, кошти заблоковані на рахунку платника і незабаром будуть зараховані мерчанту; мерчант може надавати послугу або “відвантажувати” товар
expired — час життя замовлення, зазначений у параметрі lifetime, минув.
reversed — раніше успішна транзакція була повністю скасована. У такому разі параметр reversal_amount буде еквівалентний actual_amount
 
response_statusstring(50)Статус обробки запиту. Якщо виникла помилка під час валідації переданих параметрів, то повертається failure, інакше success 
signaturestring(40)Підпис замовлення. Слугує для перевірки мерчантом цілісності та автентичності відповіді від сервера платіжного шлюзу. Алгоритм формування підпису див. у Формування підпису запиту та відповіді
1773cf135bd89656131134b98637894dad42f808
tran_typestring(50)Допустимі значення:
purchase — покупка
reverse — скасування / повернення
 
sender_cell_phonestring(16)Мобільний телефон платника 
sender_accountstring(50)Номер рахунку платника 
masked_cardstring(19)Маскований номер картки444444XXXXXX5555
card_bininteger(6)Бін картки – зазвичай перші 6 цифр номера картки444444
card_typestring(50)Допустимі значення:
VISA, MasterCard
 
rrnstring(50)У загальному випадку не унікальний ідентифікатор транзакції, присвоєний банком-еквайром. 
approval_codestring(6)У загальному випадку не унікальні код авторизації, присвоєний банком-емітентом 
response_codeinteger(4)Код відхилення замовлення. Допустимі коди див. у Коди відмов. 
response_descriptionstring(1024)Опис коду відхилення замовлення. Див. Коди відмов. 
reversal_amountinteger(12)Сума всіх реверсів за цим замовленням 
settlement_amountinteger(12)Сума відшкодованих коштів за цим мерчантом 
settlement_currencystring(3)Валюта відшкодування мерчанту 
order_timestring(19)Дата створення замовлення у форматі ДД.ММ.РРРР гг:хх:сс21.12.2014 11:21:30
settlement_datestring(10)Дата відшкодування на рахунок продавця у форматі ДД.ММ.РРРР21.12.2014
eciinteger(2)Ecommerce Indicator – параметр, що вказує на те, чи була 3DS-автентифікація власника картки чи ні. Допустимі значення:
5 — було проведено повну автентифікацію кардхолдера
6 — мерчант підтримує 3D Secure, але банк-емітент не підтримує
7 — ні мерчант ні банк-емітент не підтримують 3D Secure
 
feeinteger(12)Комісія, утримана із суми замовлення платіжним шлюзом FONDY 
payment_systemstring(50)Платіжна система, через яку було здійснено платіж. Список допустимих платіжних систем див. у Підтримувані платіжні системиCard
sender_emailstring(254)Email платника 
payment_idinteger(19)Унікальний ідентифікатор платежу, присвоєний платіжним шлюзом FONDY 
actual_amountinteger(12)Фактична сума замовлення після конвертації валют та врахування комісій. 
actual_currencystring(3)Фактична валюта замовлення, в якій відбулася авторизація суми на рахунку клієнта після конвертації валюти. 
product_idstring(1024)Ідентифікатор оплачуваного товару / послуги 
merchant_datastring(2048)Будь-який довільний набір даних, який мерчант передав у запиті 
verification_statusstring(50)Результат перевірки коду під час верифікації картки
Допустимі значення:
verified — картку успішно перевірено кодом
incorrect — введено неправильний код верифікації, але ще не вичерпано ліміт спроб
failed — вичерпано ліміт невдалих спроб введення коду перевірки
created — код перевірки створений, але не вводився клієнтом
 
rectokenstring(40)Токен картки – токен, за яким можна списувати кошти з картки без подальшої участі клієнта
da39a3ee5e6b4b0d3255bfef95601890afd80709
rectoken_lifetimestring(19)Час життя токена у форматі ДД.ММ.РРРР гг:хх:сс
01.01.2018 00:00:00
additional_infostring(20480)Додаткові дані у форматі JSON
{
"bank_name": "Some bank in US country",
"bank_country": "US",
"bank_response_code": "decln_1000",
"card_product": "DEBIT",
"card_category": "CLASSIC",
"settlement_fee": 0.2,
"capture_status": "captured",
"client_fee": 0.3,
"ipaddress_v4": "8.8.8.8",
"capture_amount": 200,
"card_type": "VISA",
"reservation_data": null,
"bank_response_description": "General decline",
"transaction_id": 1058755083,
"timeend":"10.01.2018 11:21:30"
"card_number": "4444555566661111"
}

Параметри проміжної відповіді

ПараметрТипОписПриклад значення, що повертається
response_statusstring(50)якщо не було помилки, завжди повертається successsuccess
checkout_urlstring(20)48URL сторінки, на яку мерчант має перенаправити клієнта для подальшого введення платіжних реквізитів
https://pay.fondy.eu/checkout?token=e0a5d4f331806d1e2feb80353b4c44bf6751fc8c
payment_idinteger(19)Унікальний ідентифікатор платежу, присвоєний платіжним шлюзом FONDY 

Параметри відповіді в разі помилки

ПараметрТипОписПриклад значення, що повертається
response_statusstring(50)завжди повертається failurefailure
error_codeinteger(4)Код відхилення замовлення. Допустимі значення описані в Коди відмов.
error_messagestring(1024)Опис коду відхилення замовлення. Див. Коди відмов.

Формування підпису запиту і відповіді (параметр signature)

Підпис формується шляхом застосування функції SHA1 до рядка, що складається з пароля мерчанта і всіх параметрів, приконкатенованих до нього в алфавітному порядку та розділених символом вертикальної риски |

Приклад:

Запит від мерчанта:

{
  "request":{
    "order_id":"test123456",
    "order_desc":"test order",
    "currency":"USD",
    "amount":"125",
    "signature":"f0ee6288b9295d3b808bcd8d720211c7201245e1",
    "merchant_id":"1396424"
  }
}

рядок, використаний для формування підпису:

test|125|USD|1396424|test order|test123456

Якщо параметр порожній і не містить даних, то приєднувати вертикальну риску не потрібно.

Приклад коду перевірки підпису на сторінках, зазначених у параметрах response_url або server_callback_url, з використанням PHP SDK:

<?php
function getSignature( $merchant_id , $password , $params = array() ){
 $params['merchant_id'] = $merchant_id;
 $params = array_filter($params,'strlen');
 ksort($params);
 $params = array_values($params);
 array_unshift( $params , $password );
 $params = join('|',$params);
 return(sha1($params));
}

Допоміжний файл із прикладами функцій для роботи з підписом Signature.php

 
namespace Ipsp;
/**
 * Class Signature
 * @package Ipsp
 */
class Signature {
    /**
     * @var
     */
    private static $password;
    /**
     * @var
     */
    private static $merchant;

    /**
     * Set merchant password
     * @param String $password
     * @return mixed
     */
    public static function password($password){
        self::$password = $password;
    }
    /**
     * Set merchant id
     * @param String $merchant
     * @return mixed
     */
    public static function merchant( $merchant ){
        self::$merchant = $merchant;
    }
    /**
     * Generate request params signature
     * @param array $params
     * @return string
     */
    public static function generate(Array $params){
        $params['merchant_id'] = self::$merchant;
        $params = array_filter($params,'strlen');
        ksort($params);
        $params = array_values($params);
        array_unshift( $params , self::$password );
        $params = join('|',$params);
        return(sha1($params));
    }

    /**
     * Sign params with signature
     * @param array $params
     * @return array
     */
    public static function sign(Array $params){
        if(array_key_exists('signature',$params)) return $params;
        $params['signature'] = self::generate($params);
        return $params;
    }
    /**
     * Clean array params
     * @param array $data
     * @return array
     */
    public static function clean(Array $data){
        if( array_key_exists('response_signature_string',$data) )
            unset( $data['response_signature_string'] );
        unset( $data['signature'] );
        return $data;
    }
    /**
     * Check response params signature
     * @param array $response
     * @return bool
     */
    public static function check(Array $response){
        if(!array_key_exists('signature',$response)) return FALSE;
        $signature = $response['signature'];
        $response  = self::clean($response);
        return $signature == self::generate($response);
    }
}

Перевірка підпису за допомогою класу Signature

 
require_once 'Signature.php';
# import Signature class from namespace 
use Ipsp\Signature;
# setup merchant id and password
Signature::merchant(1396424);
Signature::password('test');
if(Signature::check($response)){
    echo 'signature is valid. Now we can complete purchase';
} else{
    echo 'bad signature throw error'
}

Розв’язання проблем із генерацією та валідацією параметра signature

Існує дві типові ситуації, коли виникає помилка перевірки параметра signature.

  1. Якщо запит на купівлю / рекурентний платіж / реверс / статусу або будь-який інший запит із параметром signature надіслано на API FONDY, і повернулася відповідь: Invalid signature.
  2. Якщо від сервера FONDY на server_callback_url або response_url, повернулася POST-відповідь, але під час спроби сформувати підпис і порівняти його з параметром signature з POST-відповіді підписи, не збігаються

Розглянемо обидва випадки:

  1. Якщо запит відправлено на API FONDY, і відповідь повернулася у вигляді “Invalid signature signature: `6bd069be8a6e2f2bbe176df00ba63cc681ca38aa`; response_signature_string: `**********|125|USD|1396424|demo order 789|Demo123456`”, виконайте такі перевірки:
    • переконайтесь, що ви використовували коректний пароль із технічних налаштувань мерчанта в мерчант-порталі:

      payment_key

    • якщо запит містить кириличні або інші нелатинські літери, то його відправлено в кодуванні UTF-8
    • переконайтеся, що параметр зі значенням 0 не приводиться вашою мовою програмування до порожнього значення
    • залогуйте в програмному коді рядок, до якого ви застосовуєте SHA1 під час формування параметра signature. Порівняйте його з рядком, який повернувся в тексті помилки (відзначено червоним кольором): “Invalid signature signature: `6bd069be8a6e2f2bbe176df00ba63cc681ca38aa`; response_signature_string: `**********|125|USD|1396424|demo order 789|Demo123456`“. Врахуйте, що в тексті помилки фраза-пароль мерчанта буде замаскована знаком *
    • перевірте, чи передаєте ви в запиті до API порожні параметри. Якщо так, то в самому рядку, який бере участь у підписі, символ роздільник || для кожного такого порожнього параметра включати не потрібно
    • якщо ви розробляєте мовою програмування PHP, скористайтеся прикладом функції getSignature:
      <?php
      function getSignature( $merchant_id , $password , $params = array() ){
       $params['merchant_id'] = $merchant_id;
       $params = array_filter($params,'strlen');
       ksort($params);
       $params = array_values($params);
       array_unshift( $params , $password );
       $params = join('|',$params);
       return(sha1($params));
      }
    • переконайтеся, що результат функції SHA1 приведений до нижнього регістру. Правильно: 6bd069be8a6e2f2bbe176df00ba63cc681ca38aa. Неправильно: 6BD069BE8A6E2F2BBE176DF00BA63CC681CA38AA
    • переконайтеся, що параметр signature не включений вами в розрахунок підпису
    • переконайтеся, що якщо ви використовуєте точку API /api/recurring , то вами в підпис включено тільки необхідні параметри
  2. Якщо від сервера FONDY на сторінки, зазначені в параметрах server_callback_url або response_url повернулася POST відповідь, але при спробі сформувати підпис і порівняти його з параметром signature в POST відповіді, підписи не збігаються

Приклад відповіді від FONDY (JSON):

{
 "rrn": "429417347068",
 "masked_card": "444455XXXXXX6666",
 "sender_cell_phone": "",
 "response_signature_string": "**********|3324000|UAH|3324000|027440|444455|VISA|UAH|444455XXXXXX6666|1396424|
  14#1500639628|approved|21.07.2017 15:20:27|51247263|card|success|0|429417347068|test@taskombank.ua|0|purchase",
 "response_status": "success",
 "sender_account": "",
 "fee": "",
 "rectoken_lifetime": "",
 "reversal_amount": "0",
 "settlement_amount": "0",
 "actual_amount": "3324000",
 "order_status": "approved",
 "response_description": "",
 "verification_status": "",
 "order_time": "21.07.2017 15:20:27",
 "actual_currency": "UAH",
 "order_id": "14#1500639628",
 "parent_order_id": "",
 "merchant_data": "",
 "tran_type": "purchase",
 "eci": "",
 "settlement_date": "",
 "payment_system": "card",
 "rectoken": "",
 "approval_code": "027440",
 "merchant_id": 1396424,
 "settlement_currency": "",
 "payment_id": 51247263,
 "product_id": "",
 "currency": "UAH",
 "card_bin": 444455,
 "response_code": "",
 "card_type": "VISA",
 "amount": "3324000",
 "sender_email": "test@taskombank.eu",
 "signature": "47bdcaf61b99edd31e3ec7913225a14d2ce07575"
}

Щоб діагностувати причину розбіжності підпису, виконайте такі дії:

  • переконайтеся, що параметр зі значенням 0 не приводиться вашою мовою програмування до порожнього значення
  • переконайтеся, що параметри response_signature_string і signature не включені вами в розрахунок підпису (параметр response_signature_string повертається, лише якщо мерчант перебуває у тестовому режимі, та містить підказку, як було сформовано підпис у відповідь)
  • якщо запит містить кириличні або інші нелатинські літери, то його відправлено в кодуванні UTF-8
  • залогуйте в програмному коді рядок, до якого ви застосовуєте SHA1 під час формування параметра signature. Порівняйте його з рядком, який повернувся в параметрі response_signature_string
  • перевірте, чи повернулися у відповіді порожні параметри. Якщо так, то в самому рядку, який бере участь у підписі, символ роздільник | для кожного такого порожнього параметра вмикати не потрібно
  • якщо ви розробляєте мовою програмування PHP, скористайтеся функцією getSignature:
    <?php
    function getSignature( $merchant_id , $password , $params = array() ){
     $params['merchant_id'] = $merchant_id;
     $params = array_filter($params,'strlen');
     ksort($params);
     $params = array_values($params);
     array_unshift( $params , $password );
     $params = join('|',$params);
     return(sha1($params));
    }
  • переконайтеся, що результат функції SHA1 приведений до нижнього регістру. Правильно: 6bd069be8a6e2f2bbe176df00ba63cc681ca38aa. Неправильно: 6BD069BE8A6E2F2BBE176DF00BA63CC681CA38AA

Формування запиту

Запити на сервер FONDY можна надсилати 2-ма способами

  1. Схема взаємодії A (з перенаправленням користувача на платіжну сторінку) через надсилання HTML форми на URL https://pay.fondy.eu/api/checkout/redirect/
  2. Схема взаємодії B (з попереднім host-to-host запитом для отримання url платіжної сторінки) через надсилання HTML форми на URL https://pay.fondy.eu/api/checkout/url/

Схема взаємодії B API підтримує такі текстові формати запитів: HTML FORM, XML, JSON. Цей варіант зручно використовувати для:

  • формування запиту з сайту мерчанта в браузері клієнта через AJAX
  • формування запиту від мерчант-сервера.
  • виставлення рахунків / інвойсів клієнту на пошту, в месенджері, в соціальних мережах

У контексті запиту завжди повертається відповідь у тому ж форматі, що й запит. Тобто якщо запит був у форматі JSON, то і відповідь повернеться у форматі JSON. Відповідь на такий запит є проміжною і містить URL, на який необхідно перенаправити клієнта для введення реквізитів платежу.

Надсилання запиту за схемою взаємодії A не передбачає проміжної відповіді в контексті запиту. Фінальна відповідь буде повернута на URL мерчанта, вказаний у параметрах response_url і server_callback_url.

Приклад для схеми взаємодії A

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
  </head>
  <body>
    <form name="tocheckout" method="POST" action="https://pay.fondy.eu/api/checkout/redirect/">
      <input type="text" name="server_callback_url" value="https://site.com/callback/">
      <input type="text" name="response_url" value="https://site.com/responsepage/">
      <input type="text" name="order_id" value="test4207135583">
      <input type="text" name="order_desc" value="Test payment">
      <input type="text" name="currency" value="UAH">
      <input type="text" name="amount" value="100">
      <input type="text" name="signature" value="1773cf135bd89656131134b98637894dad42f808">
      <input type="text" name="merchant_id" value="1">
      <input type="submit">
    </form>
  </body>
</html>

Приклад host-to-host для схеми взаємодії B (JSON)

Content Type: application/json

Запит

{
  "request": {
    "response_url": "https://pay.fondy.eu/responsepage/",
    "order_id": "test8037875286",
    "order_desc": "Test payment",
    "currency": "UAH",
    "amount": "100",
    "signature": "07bc309047a56275f8d89ae222e2af0ceb94fe79",
    "merchant_id": "1"
  }
}

Нормальна проміжна відповідь

{
  "response":{
    "response_status":"success",
    "checkout_url":"https://pay.fondy.eu/checkout?token=afcb21aef707b1fea2565b66bac7dc41d7833390"
  }
}

Відповідь у разі помилки

{
  "response":{
  "response_status":"failure",
  "error_message":"Parameter `amount` is mandatory",
  "error_code":"1008"
  }
}

Приклад host-to-host для схеми взаємодії B (XML)

Content Type: application/xml

Запит

<?xml version="1.0" encoding="UTF-8"?>
<request>
  <response_url>https://pay.fondy.eu/responsepage/</response_url>
  <order_id>test622138965</order_id>
  <order_desc>Test payment</order_desc>
  <currency>UAH</currency>
  <amount>100</amount>
  <signature>fad685643ed5375d6d08c27f4f600e848549b0c5</signature>
  <merchant_id>1</merchant_id>
</request>

Нормальна проміжна відповідь

<?xml version="1.0" encoding="UTF-8"?>
<response>
  <response_status>success</response_status>
  <checkout_url>https://pay.fondy.eu/checkout?token=6c67efad5fd68921f58836cabc2a3d27c5f02b23</checkout_url>
</response>

Відповідь у разі помилки

<?xml version="1.0" encoding="UTF-8"?>
<response>
  <response_status>failure</response_status>
  <error_message>Parameter `amount` is mandatory</error_message>
  <error_code>1008</error_code>
</response>

Приклад host-to-host для схеми взаємодії B (HTML form)

Content Type: application/x-www-form-urlencoded

Запит

response_url=https://pay.fondy.eu/responsepage/&order_id=test3600040034
&order_desc=Test payment&currency=UAH&amount=100&merchant_id=1
&signature=ea326b841f9a1e2e90fb392392d3ed6255a6698d

Нормальна проміжна відповідь

response_status=success&checkout_url=http%3A%2F%2Flocalhost%2Fcheckout%3Ftoken%3D643f3cea682e066f142099a76b0fa9d1613969dc

Відповідь у разі помилки

response_status=failure&error_message=Parameter%20%60amount%60%20is%20mandatory&error_code=1008

Хочу приймати платежі з усього світу!