Глоссарий

Web-касса — это инструмент для приёма разовых и регулярных платежей пластиковыми картами UZCARD Online через интернет. Web-касса интегрируется в интернет магазины и онлайн-сервисы. Работать с web-кассой могут и юридические лица, и частные предприниматели.

Web-терминал — необходимо интегрировать с интернет магазинами или же онлайн-сервисами в которых не предусмотрена своя система биллинга.

Host-терминал — необходимо интегрировать с сайтами которые представляют собой простые HTML страницы и не имеющие своей back-end части

Платежный шлюз — PSP предоставляет набор адресов и параметров, позволяющих осуществлять запросы напрямую согласно API.

Мерчант (от англ. Merchant - купец, торговец, коммерсант) — поставщик товаров и/или услуг.

Биллинг — система учёта товаров и услуг.

Транзакция (от англ. transaction - сделка, операция) — перечисление денежных средств с банковского счёта покупателя на банковский счёт мерчанта.

Приложение — веб-сайт или мобильное приложение.

Владелец приложения — лицо, в собственности которого находится приложение.

Бизнес-партнёр — участник, ведущий совместную экономическую деятельность с владельцем приложения.

Покупатель — участник, оплачивающий товары и услуги банковской картой в приложении мерчанта.

Endpoint URL — веб-адрес биллинга.

Инвойс — счёт на оплату товаров и/или услуг.

Аккаунт — это «реквизиты» платежа, которые PSP передаёт в биллинг мерчанта. Реквизитами платежа могут быть: id клиента, код заказа и т.д.



Начало работы

Мы подготовили инструкции по интеграции, чтобы сделать процесс подключения к PSP, а также прием платежей, быстрым и легким.

Касса Web-касса Удобный способ принимать платежи. Терминал
Web-терминал
Легкий и быстрый способ начать принимать платежи от пользователей
Терминал
Host-терминал
Легкий и быстрый способ начать принимать платежи от пользователей
Платежный шлюз Платежный шлюз Инструмент для взаимодействия с PSP API ( Скоро! )



Интеграция Web-кассы

Обзор проведения платежа

Порядок проведения платежа



№ этапа Действие Комментарий
1 Заявка на оплату заказа Пользователь оформляет заявку на пополнение счета в системе Мерчанта.
2 Запрос на Web-кассу Система Продавца формирует и отправляет запрос на Web-кассу.
3 Окно выбора платежной системы и ввода реквизитов Отображается страница выбора Платежной Системы и ввода реквизитов.
4 Выбор платежной системы и ввода реквизитов Пользователь выбирает Платежную систему и вводит реквизиты на странице Web-кассы.
5 Окно ввода смс кода Пользователю отображается окно ввода смс кода.
6 Ввод смс кода Пользователь вводит смс код (смс код, для подтверждения платежа, будет выслан на номер телефона который привязан к карте). Нажимает на кнопку “Подтвердить”.
Проведение оплаты
7 Запрос на возможность совершения оплаты Web-касса отправляет запрос проверки возможности оплаты в систему Мерчанта.
8 Ответ возможности совершения оплаты Система Мерчанта отвечает на запрос Web-кассы возможности проведение оплаты.
Платеж совершен
9 Окно результата платежа Платежный Web-касс сообщает пользователю результат платежа. Пользователю будет предложено вернуться на сайт Мерчанта по ссылке.
10 Возврат на сайт по ссылке Пользователь переходит на соответствующую страницу сайта Продавца.
11 Оповещение о результате платежа Система PSP отправляет оповещение о статусе платежа.



Этап 1. Подготовка к интеграции

Для начала технической интеграции необходимо передать Вашему менеджеру следующую информацию:

После регистрации Вашего проекта техническая поддержка сообщит Вам следующую информацию для доступа к кабинету:

Параметр Описание
URL https://agr.uz
Логин Имя (идентификатор) учётной записи пользователя в системе PSP
Пароль Условное слово или набор знаков, предназначенный для подтверждения личности или полномочий.



Этап 2. Открытие Web-кассы

Запрос на получение ключа для открытия Web-кассы

Перед началом интеграции Вам необходимо подготовить инструмент для создания запросов на открытие Web-кассы. Для этого, например, можно использовать форму с кнопкой на вашем сайте, которая будет собирать базовые параметры и отправлять пользователя на Web-кассу. При нажатии на кнопку, пользователь должен быть перенаправлен POST или GET http-запросом на URL-адрес.

Для Вашего удобства все тестирование проходит в песочнице (sandbox) нашей системы.

Тестовый режим предназначен для проведения тестовых транзакций и проверки корректности работы системы.
https://agr.uz/sandbox

Вы можете осуществить открытие Web-кассы в 3 этапа:

Минимальный набор параметров для открытия Web-кассы.

Для открытия Web-кассы Вам достаточно отправлять 7 обязательных параметров: VENDOR_ID, MERCHANT_TRANS_ID, MERCHANT_TRANS_AMOUNT, MERCHANT_CURRENCY, MERCHANT_TRANS_NOTE, SIGN_TIME, SIGN_STRING.

Параметр Формат Обязательный Описание Пример
VENDOR_ID integer да Идентификатор сайта в системе 1591864
MERCHANT_TRANS_ID string (256) да Уникальный идентификатор заказа в системе Мерчанта. AB772059
MERCHANT_TRANS_AMOUNT integer да Сумма платежа 1000
MERCHANT_CURRENCY string (10) да Валюта покупки. sum
MERCHANT_TRANS_NOTE string (256) да Текстовый комментарий к проведенной операции transaction_note_example
MERCHANT_TRANS_DATA string (base64) нет Детали платежа для Мерчанта. Возвращается Мерчанту eyJrZXkxIjoidmFsdWUxIiwia2V5MiI6InZhbHVlMiJ9
MERCHANT_TRANS_RETURN_URL string нет Ссылка для возврата, cм. Возврат пользователя с Web-кассы http://site.com
SIGN_TIME integer да Текущее время в миллисекундах 1480056082732
SIGN_STRING string (md5) да Подпись запроса, cм. Правила формирования подписи запроса 2e483be74e568b4d7d4a7d9421f404fc
Пример запроса

VENDOR_ID=1591864
MERCHANT_TRANS_ID=AB772059
MERCHANT_TRANS_AMOUNT=1000
MERCHANT_CURRENCY=sum
MERCHANT_TRANS_NOTE=transaction_note_example
MERCHANT_TRANS_DATA=eyJrZXkxIjoidmFsdWUxIiwia2V5MiI6InZhbHVlMiJ9
MERCHANT_TRANS_RETURN_URL=http://site.com
SIGN_TIME=1480056082732
SIGN_STRING=2e483be74e568b4d7d4a7d9421f404fc
Расчёт подписи (параметр SIGN_STRING).

Подпись – 32 разрядное шестнадцатеричное число, сформированная односторонним кодированием. Данную строку нельзя декодировать или самостоятельно сгенерировать, не зная всех необходимых составляющих.

Для формирования подписи используется MD5 - 128-битный алгоритм хеширования.

Алгоритм формирования подписи.

Формируется строка на подпись:

От полученной строки берется MD5 хэш.

Правила формирования подписи.
Примеры реализации запроса на языках программирования.
 <?php

// Generator of a terminal request URL as HTML button. PHP example.

const URL = 'https://agr.uz/sandbox'; // Request target URL
const SECRET_KEY = '#Feiz!ahdahweig7?Choot#3AiL6p--ooF6e'; // Your site SECRET_KEY

// Array of input parameters
$params = array(
    'VENDOR_ID' => '1591864',
    'MERCHANT_TRANS_ID' => 'AB772059',
    'MERCHANT_TRANS_AMOUNT' => '1000',
    'MERCHANT_CURRENCY' => 'sum',
    'MERCHANT_TRANS_NOTE' => 'transaction_note_example',
    'MERCHANT_TRANS_DATA' => 'eyJrZXkxIjoidmFsdWUxIiwia2V5MiI6InZhbHVlMiJ9',
    'SIGN_TIME' => '1480056082732',
 );
$params['SIGN_STRING'] = md5(SECRET_KEY . $params['VENDOR_ID'] . $params['MERCHANT_TRANS_ID'] . $params['MERCHANT_TRANS_AMOUNT'] . $params['MERCHANT_CURRENCY'] . $params['SIGN_TIME']); // Signature adding


// Choose one of two options below

// GET request option. It may not work in IE with more than 2kb transfered data
$url = URL .'?'. http_build_query($params);
echo "<button onclick=\"location.href='{$url}';\">Send</button>";

// POST request option
?>
<form method="post" action="<?=URL;?>">
<?php foreach ($params as $name => $value): ?>
    <input type="hidden" name="<?=$name; ?>" value="<?=$value;?>">
<?php endforeach;?>
    <button type="submit">Send</button>
</form>
Пример запроса

VENDOR_ID=1591864
MERCHANT_TRANS_ID=AB772059
MERCHANT_TRANS_AMOUNT=1000
MERCHANT_CURRENCY=sum
MERCHANT_TRANS_NOTE=transaction_note_example
MERCHANT_TRANS_DATA=eyJrZXkxIjoidmFsdWUxIiwia2V5MiI6InZhbHVlMiJ9
MERCHANT_TRANS_RETURN_URL=http://site.com
SIGN_TIME=1480056082732
SIGN_STRING=2e483be74e568b4d7d4a7d9421f404fc

В данном примере строка для формирования подписи:

#Feiz!ahdahweig7?Choot#3AiL6p--ooF6e1591864AB7720591000sum1480056082732

В результате MD5 хэширования этой строки - полученная подпись:

2e483be74e568b4d7d4a7d9421f404fc



Этап 3. Merchant API

PSP передает данные в формате JSON для проведения оплаты Мерчанту услуг по протоколу HTTPS, методом POST.

Мерчанту будет открыт персональный кабинет в системе PSP, где необходимо указать URLs по описанным ниже запросам, для взаимодействия системы PSP с биллингом Мерчанта. Для этого перейдите в настройки, введите URL в поле "Pay", "Notify", "Cancel", "Info", "Statement" и сохраните.



3.1. Получения справочной информации по платежу (Info).

Данным запросом PSP запрашивает справочную информацию от Мерчанта.



Параметры запроса от PSP:

Параметр Формат Описание Пример
MERCHANT_TRANS_ID string (256) ID заказа (для Интернет-магазинов)/лицевого счета/логина в биллинге Мерчанта SDJ4957
SIGN_TIME integer Текущее время в миллисекундах 1480056082732
SIGN_STRING string (md5) Проверочная строка, подтверждающая подлинность отправляемого запроса. ХЭШ MD5 из следующих параметров:
md5( SECRET_KEY . MERCHANT_TRANS_ID . SIGN_TIME )
SECRET_KEY – уникальная строка, выдаваемая Мерчанту при подключении.
2e483be74e568b4d7d4a7d9421f404fc



Параметры ответа от Мерчанта:

Параметр Формат Описание Пример
ERROR int Код статуса. 0 – успешно. В случае ошибки возвращается код ошибки. 0
ERROR_NOTE string Описание кода. Success
PARAMETERS string (json) Любая справочная информация {"full_name":"Full Name","email":"email@mail.uz"}



Пример запроса от PSP:

{
    "MERCHANT_TRANS_ID": "7",
    "SIGN_TIME": 1503638389658,
    "SIGN_STRING": "5777e5ed6eda5b5cca3f56a90cf53e96"
}



Пример ответа от Мерчанта:

{
    "ERROR": 0,
    "ERROR_NOTE": "Success",
    "PARAMETERS": {
        "full_name": "Test Test",
        "balance": "1000",
        "email": "test@test.uz"
    }
}



3.2. Получение подтверждения по платежу с последующей оплатой (Pay).

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



Параметры запроса от PSP:

Параметр Формат Описание Пример
VENDOR_ID integer ID Мерчанта в системе PSP 158587744
PAYMENT_ID integer ID платежной системы в системе PSP 9
PAYMENT_NAME string Название платежной системы в системе PSP uzcard
AGR_TRANS_ID integer ID платежа в системе PSP 83749583512
MERCHANT_TRANS_ID string ID заказа (для Интернет-магазинов)/лицевого счета/логина в биллинге Мерчанта SDJ4957
MERCHANT_TRANS_AMOUNT integer Сумма оплаты в сумах 2000
ENVIRONMENT string "live" или "sandbox" live
MERCHANT_TRANS_DATA string Детали платежа для Мерчанта. Возвращается Мерчанту если параметр передовался в начале: base64_encode($json_data); eyJwYXJhbV9rZXlftX3ZhbHVlXzIifQ==
SIGN_TIME integer Текущее время в миллисекундах 1480056082732
SIGN_STRING string Проверочная строка, подтверждающая подлинность отправляемого запроса. ХЭШ MD5 из следующих параметров:
md5( SECRET_KEY . AGR_TRANS_ID . VENDOR_ID . PAYMENT_ID . PAYMENT_NAME . MERCHANT_TRANS_ID . MERCHANT_TRANS_AMOUNT . ENVIRONMENT . SIGN_TIME )
SECRET_KEY – уникальная строка, выдаваемая Мерчанту при подключении.
2e483be74e568b4d7d4a7d9421f404fc



Параметры ответа от Мерчанта:

Параметр Формат Описание Пример
ERROR integer Код статуса. 0 – успешно. В случае ошибки возвращается код ошибки. 0
ERROR_NOTE string Описание кода. Success
VENDOR_TRANS_ID integer ID платежа в биллинг системе Мерчанта. 456892353



Пример запроса от PSP:

{
    "ENVIRONMENT": "sandbox",
    "VENDOR_ID": 902345,
    "PAYMENT_ID": 9,
    "PAYMENT_NAME": "uzcard",
    "AGR_TRANS_ID": 1503639319870,
    "MERCHANT_TRANS_ID": "7",
    "MERCHANT_TRANS_AMOUNT": 1000,
    "MERCHANT_TRANS_DATA": "eyJwYXJhbV9rZXlfMSI6InBhcmFtX3ZhbHVlXzEiLCJwYXJhbV9rZXlfMiI6InBhcmFtX3ZhbHVlXzIifQ==",
    "SIGN_TIME": 1503639320833,
    "SIGN_STRING": "87efeefc53bb259c11e21ab0223ef2df"
}



Пример ответа от Мерчанта:

{
    "ERROR": 0,
    "ERROR_NOTE": "Success",
    "VENDOR_TRANS_ID": 99987262
}



3.3. Уведомление о статусе платежа (Notify).

Данным запросом система PSP уведомляет Мерчанта об изменении статуса платежа.



Параметры запроса от PSP:

Параметр Формат Описание Пример
AGR_TRANS_ID integer ID платежа в системе PSP 1503639319870
VENDOR_TRANS_ID integer ID платежа в биллинг системе Мерчанта. 99987262
STATUS integer Статус платежа:
“2” – оплачено;
“3” – отменено;
2
SIGN_TIME integer Текущее время в миллисекундах 1480056082732
SIGN_STRING string Проверочная строка, подтверждающая подлинность отправляемого запроса. ХЭШ MD5 из следующих параметров:
md5( SECRET_KEY . AGR_TRANS_ID . VENDOR_TRANS_ID . STATUS . SIGN_TIME )
SECRET_KEY – уникальная строка, выдаваемая Мерчанту при подключении.
2e483be74e568b4d7d4a7d9421f404fc



Параметры ответа от Мерчанта:

Параметр Формат Описание Пример
ERROR integer Код статуса. 0 – успешно. В случае ошибки возвращается код ошибки. 0
ERROR_NOTE string Описание кода. Success



Пример запроса от PSP:

{
    "AGR_TRANS_ID": 1503642925905,
    "VENDOR_TRANS_ID": 1503642925906,
    "STATUS": 2,
    "SIGN_TIME": 1503642926295,
    "SIGN_STRING": "5a30fbd0fab44be29310e4b493c9a287"
}



Пример ответа от Мерчанта:

{
    "ERROR": 0,
    "ERROR_NOTE": "Success"
}



3.4. Отмена платежа (Cancel).

Данным запросом система PSP отменяет платежа.


Параметры запроса от PSP:

Параметр Формат Описание Пример
AGR_TRANS_ID integer ID платежа в системе PSP 1503639319870
VENDOR_TRANS_ID integer ID платежа в биллинг системе Мерчанта. 99987262
SIGN_TIME integer Текущее время в миллисекундах 1480056082732
SIGN_STRING string Проверочная строка, подтверждающая подлинность отправляемого запроса. ХЭШ MD5 из следующих параметров:
md5( SECRET_KEY . AGR_TRANS_ID . VENDOR_TRANS_ID . SIGN_TIME )
SECRET_KEY – уникальная строка, выдаваемая Мерчанту при подключении.
2e483be74e568b4d7d4a7d9421f404fc



Параметры ответа от Мерчанта:

Параметр Формат Описание Пример
ERROR integer Код статуса. 0 – успешно. В случае ошибки возвращается код ошибки. 0
ERROR_NOTE string Описание кода. Success



Пример запроса от PSP:

{
    "AGR_TRANS_ID": 1503642925905,
    "VENDOR_TRANS_ID": 1503642925906,
    "SIGN_TIME": 1503642926295,
    "SIGN_STRING": "5a30fbd0fab44be29310e4b493c9a287"
}



Пример ответа от Мерчанта:

{
    "ERROR": 0,
    "ERROR_NOTE": "Success"
}



3.5. Отчет о платежах (Statement).

Данным запросом система PSP ежемесячно осуществляет сверку платежей.


Параметры запроса от PSP:

Параметр Формат Описание Пример
FROM integer Текущее время в миллисекундах 1480056082732
TO integer Текущее время в миллисекундах 1480066082732
SIGN_TIME integer Текущее время в миллисекундах 1480056082732
SIGN_STRING string Проверочная строка, подтверждающая подлинность отправляемого запроса. ХЭШ MD5 из следующих параметров:
md5( SECRET_KEY . FROM . TO . SIGN_TIME )
SECRET_KEY – уникальная строка, выдаваемая Мерчанту при подключении.
2e483be74e568b4d7d4a7d9421f404fc



Параметры ответа от Мерчанта:

Параметр Формат Описание Пример
ERROR integer Код статуса. 0 – успешно. В случае ошибки возвращается код ошибки. 0
ERROR_NOTE string Описание кода. Success
TRANSACTIONS string (json) Массив платежей [{ "ENVIRONMENT":"live", "AGR_TRANS_ID":"345264652", "VENDOR_TRANS_ID":"67879769", "MERCHANT_TRANS_ID":"7", "MERCHANT_TRANS_AMOUNT":"1000", "STATE":"2", "DATE":"1480056082732" }]



Пример запроса от PSP:

{
    "FROM": 1503644593249,
    "TO": 1503644893249,
    "SIGN_TIME": 1503644593249,
    "SIGN_STRING": "9ebd383b64eba725ef323e18fcfe9d2f"
}



Пример ответа от Мерчанта:

{
    "ERROR": 0,
    "ERROR_NOTE": "Success",
    "TRANSACTIONS": [
	{
		"ENVIRONMENT":"live",
		"AGR_TRANS_ID":"345264652",
		"VENDOR_TRANS_ID":"67879769",
		"MERCHANT_TRANS_ID":"7",
		"MERCHANT_TRANS_AMOUNT":"1000",
		"STATE":"2",
		"DATE":"1480056082732"
	},{
		"ENVIRONMENT":"sandbox",
		"AGR_TRANS_ID":"775264652",
		"VENDOR_TRANS_ID":"52879769",
		"MERCHANT_TRANS_ID":"7",
		"MERCHANT_TRANS_AMOUNT":"2000",
		"STATE":"3",
		"DATE":"1480076082732"
	}]
}



3.6. Узнать статус платежа(необязательный) (Status).

Мерчант передает данные в формате JSON для проверки статус оплаты в системе PSP по протоколу HTTPS, методом POST.

URL: https://agr.uz/pay_api/payment_status



Параметры запроса от Мерчанта:

Параметр Формат Описание Пример
VENDOR_ID integer ID Мерчанта в системе PSP 1503639319870
AGR_TRANS_ID integer ID платежа в биллинг системе PSP. 99987262
PAYMENT_ID integer ID платежной системы в системе PSP 99987262
SIGN_TIME integer Текущее время в миллисекундах 1480056082732
SIGN_STRING string Проверочная строка, подтверждающая подлинность отправляемого запроса. ХЭШ MD5 из следующих параметров:
md5( SECRET_KEY . AGR_TRANS_ID . VENDOR_ID . PAYMENT_ID . SIGN_TIME )
SECRET_KEY – уникальная строка, выдаваемая Мерчанту при подключении.
2e483be74e568b4d7d4a7d9421f404fc



Параметры ответа от PSP:

Параметр Формат Описание Пример
ERROR integer Код статуса. 0 – успешно. В случае ошибки возвращается код ошибки. 0
ERROR_NOTE string Описание кода. Success



Пример запроса от PSP:

{
    "AGR_TRANS_ID": 1503642925905,
    "VENDOR_ID": 1503642925906,
    "PAYMENT_ID": 1503642925906,
    "SIGN_TIME": 1503642926295,
    "SIGN_STRING": "5a30fbd0fab44be29310e4b493c9a287"
}



Пример ответа от Мерчанта:

{
    "ERROR": 0,
    "ERROR_NOTE": "Success"
}



3.7. Фискальные данные(необязательный) (Fiscalization).

Данным запросом система PSP получает данные о платеже для фискализации

Параметры запроса от PSP:

Параметр Формат Описание Пример
AGR_TRANS_ID integer ID платежа в системе PSP 123245697
TYPE string Тип транзакции PAYMENT или CANCEL
SIGN_TIME integer Текущее время в миллисекундах 1480066082732
SIGN_STRING string Проверочная строка, подтверждающая подлинность отправляемого запроса. ХЭШ MD5 из следующих параметров:
md5( SECRET_KEY . AGR_TRANS_ID . TYPE . SIGN_TIME )
SECRET_KEY – уникальная строка, выдаваемая Мерчанту при подключении.
2e483be74e568b4d7d4a7d9421f404fc



Параметры ответа от Мерчанта:

Параметр Формат Описание Пример
ERROR integer Код статуса. 0 – успешно. В случае ошибки возвращается код ошибки. 0
ERROR_NOTE string Описание кода. Success
PARAMETERS string (json) JSON объект { "type": 0, "phone_number": "998901234567", "items":[{ "discount": 500.5, "title": "Test Item", "price": 1500.0, "count": 1, "code": "00012245689654", "units": 122223, "vat_percent": 15, "package_code": 123456 }] }

PARAMETERS:

Параметр Формат Описание Пример
type integer Тип платежа. 0 - покупка 1 - аванс 2 - кредит 0
phone_number string (Не обязательный) Номер телефона пользователя. 998901234567
items string (json) JSON массив [{ "discount": 500.5, "title": "Test Item", "price": 1500.0, "count": 1, "code": "00012245689654", "units": 122223, "vat_percent": 15, "package_code": 123456 }]

item:

Параметр Формат Описание Пример
discount float (Не обязательный)Общая сумма скидки за набор count. Не может быть больше или равным параметру price 100.5
title string Наименование товара либо услуги 998901234567
price float Общая сумма позиции с учетом кличества и без учета скидок 1100.5
count integer Количество 1
code string Код ИКПУ 10306002001000000
vat_percent integer Процент НДС 15
units integer (Не обязательный)Код единицы измерения 1000
package_code string (Не обязательный)Код упаковки 12345678912345678540

!!!ВАЖНО!!! СУММА(price*count - discount) должна быть равна сумме платежа



Пример запроса от PSP:

{
    "AGR_TRANS_ID": 1503642925905,
    "TYPE": "PAYMENT",
    "SIGN_TIME": 1503642926295,
    "SIGN_STRING": "4b9c9e9b37611e2194f67dbcefc40bb9"
}



Пример ответа от Мерчанта:

{
    "ERROR": 0,
    "ERROR_NOTE": "Success"
    "PARAMETERS": {
        "type": 0,
        "phone_number": "998901234567",
        "items":[
            {
                "discount": 500.5,
                "title": "Test Item",
                "price": 1500.0,
                "count": 1,
                "code": "00012245689654",
                "units": 122223,
                "vat_percent": 15,
                "package_code": 123456
            }
        ]
    }
}

Этап 4. Возврат пользователя с Web-кассы

После проведения платежа Вы можете вернуть Пользователя на страницу сайта. Для этого в запросе на открытие Web-кассы передаются параметры: MERCHANT_TRANS_RETURN_URL

Адрес для возврата пользователя с Web-кассы

Адрес возврата при успешной и при неуспешной оплате: https://return_url



Дополнительные возможности Web-кассы

Web-касса iFrame

iFrame - это режим работы стандартной Web-кассы, который позволяет отобразить окно Web-кассы внутри одного фрейма на Вашем Web сайте.

Пример запроса
VENDOR_ID=1591864
MERCHANT_TRANS_ID=maks
MERCHANT_TRANS_AMOUNT=12000
MERCHANT_CURRENCY=sum
MERCHANT_TRANS_NOTE=transaction_note_example
SIGN_TIME=1480056082732
SIGN_STRING=2e483be74e568b4d7d4a7d9421f404fc
Пример вставки iframe кода на странице.
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<iframe src="https://[адрес Терминала]/?VENDOR_ID=..." width="400" height="600" align="center" NORESIZE>Ваш браузер не поддерживает фреймы!</iframe>
</body>
</html>



Интеграция Web-терминала

Обзор проведения платежа

Порядок проведения платежа



№ этапа Действие Комментарий
1 Заявка на оплату заказа Пользователь оформляет заявку на пополнение счета в системе Мерчанта.
2 Запрос на Web-терминал Система Продавца формирует и отправляет запрос на Web-терминал.
3 Окно выбора платежной системы и ввода реквизитов Отображается страница выбора Платежной Системы и ввода реквизитов.
4 Выбор платежной системы и ввода реквизитов Пользователь выбирает Платежную систему и вводит реквизиты на Web-терминальной странице.
5 Окно ввода смс кода Пользователю отображается окно ввода смс кода.
6 Ввод смс кода Пользователь вводит смс код (смс код, для подтверждения платежа, будет выслан на номер телефона который привязан к карте). Нажимает на кнопку “Подтвердить”.
Платеж совершен
7 Окно результата платежа Платежный Web-терминал сообщает пользователю результат платежа. Пользователю будет предложено вернуться на сайт Мерчанта по ссылке.
8 Возврат на сайт по ссылке Пользователь переходит на соответствующую страницу сайта Продавца.



Этап 1. Подготовка к интеграции

Для начала технической интеграции необходимо передать Вашему менеджеру следующую информацию:

После регистрации Вашего проекта техническая поддержка сообщит Вам следующую информацию для доступа к кабинету:

Параметр Описание
URL https://agr.uz
Логин Имя (идентификатор) учётной записи пользователя в системе PSP
Пароль Условное слово или набор знаков, предназначенный для подтверждения личности или полномочий.



Этап 2. Открытие платежного Web-терминала

Запрос на открытие Web-терминала

Перед началом интеграции Вам необходимо подготовить инструмент для создания запросов на открытие Web-терминала. Для этого, например, можно использовать форму с кнопкой на вашем сайте, которая будет собирать базовые параметры и отправлять пользователя на платежный Web-терминал. При нажатии на кнопку, пользователь должен быть перенаправлен POST или GET http-запросом на URL-адрес.

Для Вашего удобства все тестирование проходит в песочнице (sandbox) нашей системы.

Тестовый режим предназначен для проведения тестовых транзакций и проверки корректности работы системы.
https://agr.uz/sandbox

Вы можете осуществить открытие Web-терминала в 3 этапа:

Минимальный набор параметров для открытия Web-терминала.

Для открытия Web-терминала Вам достаточно отправлять 7 обязательных параметров: VENDOR_ID, MERCHANT_TRANS_ID, MERCHANT_TRANS_AMOUNT, MERCHANT_CURRENCY, MERCHANT_TRANS_NOTE, SIGN_TIME, SIGN_STRING.

Параметр Формат Обязательный Описание Пример
VENDOR_ID integer да Идентификатор сайта в системе 1591864
MERCHANT_TRANS_ID string (256) да Уникальный идентификатор заказа в системе Мерчанта. AB772059
MERCHANT_TRANS_AMOUNT integer да Сумма платежа 1000
MERCHANT_CURRENCY string (10) да Валюта покупки. sum
MERCHANT_TRANS_NOTE string да Текстовый комментарий к проведенной операции transaction_note_example
MERCHANT_TRANS_DATA string (base64) нет Детали платежа для Мерчанта. Возвращается Мерчанту eyJrZXkxIjoidmFsdWUxIiwia2V5MiI6InZhbHVlMiJ9
MERCHANT_TRANS_RETURN_URL string нет Ссылка для возврата, cм. Возврат пользователя с Web-терминала http://site.com
SIGN_TIME integer да Текущее время в миллисекундах 1480056082732
SIGN_STRING string (md5) да Подпись запроса, cм. Правила формирования подписи запроса 2e483be74e568b4d7d4a7d9421f404fc

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

Пример запроса

VENDOR_ID=1591864
MERCHANT_TRANS_ID=AB772059
MERCHANT_TRANS_AMOUNT=1000
MERCHANT_CURRENCY=sum
MERCHANT_TRANS_NOTE=transaction_note_example
MERCHANT_TRANS_RETURN_URL=http://site.com
SIGN_TIME=1480056082732
SIGN_STRING=2e483be74e568b4d7d4a7d9421f404fc
Расчёт подписи (параметр SIGN_STRING).

Подпись – 32 разрядное шестнадцатеричное число, сформированная односторонним кодированием. Данную строку нельзя декодировать или самостоятельно сгенерировать, не зная всех необходимых составляющих.

Для формирования подписи используется MD5 - 128-битный алгоритм хеширования.

Алгоритм формирования подписи.

Формируется строка на подпись:

От полученной строки берется MD5 хэш.

Правила формирования подписи.
Примеры реализации запроса на языках программирования.
 <?php

// Generator of a terminal request URL as HTML button. PHP example.

const URL = 'https://agr.uz/sandbox'; // Request target URL
const SECRET_KEY = '#Feiz!ahdahweig7?Choot#3AiL6p--ooF6e'; // Your site SECRET_KEY

// Array of input parameters
$params = array(
    'VENDOR_ID' => '1591864',
    'MERCHANT_TRANS_ID' => 'AB772059',
    'MERCHANT_TRANS_AMOUNT' => '1000',
    'MERCHANT_CURRENCY' => 'sum',
    'MERCHANT_TRANS_NOTE' => 'transaction_note_example',
    'SIGN_TIME' => '1480056082732',
 );
$params['SIGN_STRING'] = md5(SECRET_KEY . $params['VENDOR_ID'] . $params['MERCHANT_TRANS_ID'] . $params['MERCHANT_TRANS_AMOUNT'] . $params['MERCHANT_CURRENCY'] . $params['SIGN_TIME']); // Signature adding


// Choose one of two options below

// GET request option. It may not work in IE with more than 2kb transfered data
$url = URL .'?'. http_build_query($params);
echo "<button onclick=\"location.href='{$url}';\">Send</button>";

// POST request option
?>
<form method="post" action="<?=URL;?>">
<?php foreach ($params as $name => $value): ?>
    <input type="hidden" name="<?=$name; ?>" value="<?=$value;?>">
<?php endforeach;?>
    <button type="submit">Send</button>
</form>
Пример запроса

VENDOR_ID=1591864
MERCHANT_TRANS_ID=AB772059
MERCHANT_TRANS_AMOUNT=1000
MERCHANT_CURRENCY=sum
MERCHANT_TRANS_NOTE=transaction_note_example
MERCHANT_TRANS_RETURN_URL=http://site.com
SIGN_TIME=1480056082732
SIGN_STRING=2e483be74e568b4d7d4a7d9421f404fc

В данном примере строка для формирования подписи:

#Feiz!ahdahweig7?Choot#3AiL6p--ooF6e1591864AB7720591000sum1480056082732

В результате MD5 хэширования этой строки - полученная подпись:

2e483be74e568b4d7d4a7d9421f404fc



Этап 3. Возврат пользователя с Web-терминала

После проведения платежа Вы можете вернуть Пользователя на страницу сайта. Для этого в запросе на открытие Web-терминала передаются параметры: MERCHANT_TRANS_RETURN_URL

Адрес для возврата пользователя с Web-терминала

Адрес возврата при успешной и при неуспешной оплате: https://return_url



Дополнительные возможности Web-терминала

Web-терминал iFrame

iFrame - это режим работы стандартного Web-терминала, который позволяет отобразить окно Web-терминала внутри одного фрейма на Вашем Web сайте.

Пример запроса
VENDOR_ID=1591864
MERCHANT_TRANS_ID=maks
MERCHANT_TRANS_AMOUNT=12000
MERCHANT_CURRENCY=sum
MERCHANT_TRANS_NOTE=transaction_note_example
SIGN_TIME=1480056082732
SIGN_STRING=2e483be74e568b4d7d4a7d9421f404fc
Пример вставки iframe кода на странице.
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<iframe src="https://[адрес Терминала]/?VENDOR_ID=..." width="400" height="600" align="center" NORESIZE>Ваш браузер не поддерживает фреймы!</iframe>
</body>
</html>



Интеграция Host-терминала

Обзор проведения платежа

Порядок проведения платежа



№ этапа Действие Комментарий
1 Заявка на оплату заказа Пользователь оформляет заявку на пополнение счета в системе Мерчанта.
2 Запрос на Host-терминал Система Продавца формирует и отправляет запрос на Host-терминал.
3 Окно выбора платежной системы и ввода реквизитов Отображается страница выбора Платежной Системы и ввода реквизитов.
4 Выбор платежной системы и ввода реквизитов Пользователь выбирает Платежную систему и вводит реквизиты на Host-терминальной странице.
5 Окно ввода смс кода Пользователю отображается окно ввода смс кода.
6 Ввод смс кода Пользователь вводит смс код (смс код, для подтверждения платежа, будет выслан на номер телефона который привязан к карте). Нажимает на кнопку “Подтвердить”.
Платеж совершен
7 Окно результата платежа Платежный Host-терминал сообщает пользователю результат платежа. Пользователю будет предложено вернуться на сайт Мерчанта по ссылке.
8 Возврат на сайт по ссылке Пользователь переходит на соответствующую страницу сайта Продавца.



Этап 1. Подготовка к интеграции

Для начала технической интеграции необходимо передать Вашему менеджеру следующую информацию:

После регистрации Вашего проекта техническая поддержка сообщит Вам следующую информацию для доступа к кабинету:

Параметр Описание
URL https://agr.uz
Логин Имя (идентификатор) учётной записи пользователя в системе PSP
Пароль Условное слово или набор знаков, предназначенный для подтверждения личности или полномочий.



Этап 2. Открытие платежного Host-терминала

Запрос на открытие Host-терминала

Перед началом интеграции Вам необходимо подготовить инструмент для создания запросов на открытие Host-терминала. Для этого, например, можно использовать форму с кнопкой на вашем сайте, которая будет собирать базовые параметры и отправлять пользователя на платежный Host-терминал. При нажатии на кнопку, пользователь должен быть перенаправлен POST или GET http-запросом на URL-адрес.

Для Вашего удобства все тестирование проходит в песочнице (sandbox) нашей системы.

Тестовый режим предназначен для проведения тестовых транзакций и проверки корректности работы системы.
https://agr.uz/sandbox

Вы можете осуществить открытие Host-терминала в 3 этапа:

Минимальный набор параметров для открытия Host-терминала.

Для открытия Host-терминала Вам достаточно отправлять 5 обязательных параметров: VENDOR_ID, MERCHANT_TRANS_ID, MERCHANT_TRANS_AMOUNT, MERCHANT_CURRENCY, MERCHANT_TRANS_NOTE.

Параметр Формат Обязательный Описание Пример
VENDOR_ID integer да Идентификатор сайта в системе 1591864
MERCHANT_TRANS_ID string (256) да Уникальный идентификатор заказа в системе Мерчанта. AB772059
MERCHANT_TRANS_AMOUNT integer да Сумма платежа 1000
MERCHANT_CURRENCY string (10) да Валюта покупки. sum
MERCHANT_TRANS_NOTE string да Текстовый комментарий к проведенной операции transaction_note_example
MERCHANT_TRANS_DATA string (base64) нет Детали платежа для Мерчанта. Возвращается Мерчанту eyJrZXkxIjoidmFsdWUxIiwia2V5MiI6InZhbHVlMiJ9
MERCHANT_TRANS_RETURN_URL string нет Ссылка для возврата, cм. Возврат пользователя с Host-терминала http://site.com

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

Примеры реализации запроса на языках программирования.
 <?php

// Generator of a terminal request URL as HTML button. PHP example.

const URL = 'https://agr.uz/sandbox'; // Request target URL

// Array of input parameters
$params = array(
    'VENDOR_ID' => '1591864',
    'MERCHANT_TRANS_ID' => 'AB772059',
    'MERCHANT_TRANS_AMOUNT' => '1000',
    'MERCHANT_CURRENCY' => 'sum',
    'MERCHANT_TRANS_NOTE' => 'transaction_note_example',
 );

// Choose one of two options below

// GET request option. It may not work in IE with more than 2kb transfered data
$url = URL .'?'. http_build_query($params);
echo "<button onclick=\"location.href='{$url}';\">Send</button>";

// POST request option
?>
<form method="post" action="<?=URL;?>">
<?php foreach ($params as $name => $value): ?>
    <input type="hidden" name="<?=$name; ?>" value="<?=$value;?>">
<?php endforeach;?>
    <button type="submit">Send</button>
</form>
Пример запроса
VENDOR_ID=1591864
MERCHANT_TRANS_ID=AB772059
MERCHANT_TRANS_AMOUNT=1000
MERCHANT_CURRENCY=sum
MERCHANT_TRANS_NOTE=transaction_note_example



Этап 3. Возврат пользователя с Host-терминала

После проведения платежа Вы можете вернуть Пользователя на страницу сайта. Для этого в запросе на открытие Host-терминала передаются параметры: MERCHANT_TRANS_RETURN_URL

Адрес для возврата пользователя с Host-терминала

Адрес возврата при успешной и при неуспешной оплате: https://return_url



Дополнительные возможности Host-терминала

Host-терминал iFrame

iFrame - это режим работы стандартного Host-терминала, который позволяет отобразить окно Host-терминала внутри одного фрейма на Вашем Web сайте.

Пример запроса
VENDOR_ID=1591864
MERCHANT_TRANS_ID=maks
MERCHANT_TRANS_AMOUNT=12000
MERCHANT_CURRENCY=sum
MERCHANT_TRANS_NOTE=transaction_note_example
Пример вставки iframe кода на странице.
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<iframe src="https://[адрес Терминала]/?VENDOR_ID=..." width="400" height="600" align="center" NORESIZE>Ваш браузер не поддерживает фреймы!</iframe>
</body>
</html>

Интеграция Платежного Шлюза

Платежный шлюз PSP представляет набор адресов и параметров, позволяющих осуществлять запросы напрямую согласно API.

Прием платежей по банковским картам

Платежный шлюз PSP позволяет осуществлять оплату с банковских карт пользователей.

Этап 1. Подготовка к интеграции

Для начала технической интеграции необходимо передать Вашему менеджеру следующую информацию:

После регистрации Вашего проекта техническая поддержка сообщит Вам следующую информацию для доступа к кабинету:

Параметр Описание
URL https://agr.uz
Логин Имя (идентификатор) учётной записи пользователя в системе PSP
Пароль Условное слово или набор знаков, предназначенный для подтверждения личности или полномочий.

Этап 2. Отправка запроса на Платежный шлюз

На сайте Мерчанта Пользователь выбирает оплату по банковской карте и заполняет данные карты. Система Мерчанта собирает эти данные, формирует и отправляет HTTP POST запрос на Платежный шлюз. Запрос передается в JSON формате.



2.1. Получения информации о Мерчанта.

URL: https://agr.uz/payment_gateway_api/get_vendor


Параметры запроса от Мерчанта:

Параметр Формат Описание
VENDOR_ID integer ID Мерчанта в системе PSP
SIGN_TIME integer Текущее время в миллисекундах
SIGN_STRING string Проверочная строка, подтверждающая подлинность отправляемого запроса. ХЭШ MD5 из следующих параметров:
md5( SECRET_KEY . VENDOR_ID . SIGN_TIME )
SECRET_KEY – уникальная строка, выдаваемая Мерчанту при подключении.



Параметры ответа от PSP:

Параметр Формат Описание
ERROR integer Код статуса. 0 – успешно. В случае ошибки возвращается код ошибки.
ERROR_NOTE string Описание кода.
VENDOR Object Информации о Мерчанта.



Пример запроса от Мерчанта:

{
    "VENDOR_ID": 346272,
    "SIGN_TIME": 1503638389658,
    "SIGN_STRING": "5777e5ed6eda5b5cca3f56a90cf53e96"
}



Пример ответа от PSP:

{
    "ERROR":"0",
    "ERROR_NOTE":"success",
    "VENDOR":{
        "id":"346272",
        "name":"SiteName",
        "url":"https://site.uz/",
        "logo":"https://agr.uz/img/site.png",
        "description":"",
        "status":"1", //1 - Активный, 0 - Заблокированный
        "transaction_note":"Оплата услуг на сайте Site.uz"
    }
}



2.2. Оформления платежа.

URL: https://agr.uz/payment_gateway_api/preparation_payment


Параметры запроса от Мерчанта:

Параметр Формат Обязательный Описание
VENDOR_ID integer да Идентификатор сайта в системе
MERCHANT_TRANS_ID string (256) да Уникальный идентификатор заказа в системе Мерчанта.
MERCHANT_TRANS_AMOUNT integer да Сумма платежа
MERCHANT_CARD_NUMBER string (16) да Номер карты плательщика.
MERCHANT_CARD_EXPIRE string (4) да Дата окончания действия карты.
MERCHANT_CURRENCY string (10) да Валюта покупки.
MERCHANT_TRANS_NOTE string (256) да Текстовый комментарий к проведенной операции
MERCHANT_TRANS_DATA string (base64) нет Детали платежа для Мерчанта. Возвращается Мерчанту
SIGN_TIME integer да Текущее время в миллисекундах
SIGN_STRING string (md5) да Проверочная строка, подтверждающая подлинность отправляемого запроса. ХЭШ MD5 из следующих параметров:
md5( SECRET_KEY . VENDOR_ID . MERCHANT_TRANS_ID . MERCHANT_TRANS_AMOUNT . MERCHANT_CARD_NUMBER . MERCHANT_CARD_EXPIRE . MERCHANT_CURRENCY . SIGN_TIME )
SECRET_KEY – уникальная строка, выдаваемая Мерчанту при подключении.



Параметры ответа от PSP:

Параметр Формат Описание
AGR_TRANS_ID integer ID платежа в системе PSP
ERROR integer Код статуса. 0 – успешно. В случае ошибки возвращается код ошибки.
ERROR_NOTE string Описание кода.



Пример запроса от Мерчанта:

{
    "VENDOR_ID": 346272,
    "MERCHANT_TRANS_ID": "AB4573",
    "MERCHANT_TRANS_AMOUNT": 5000,
    "MERCHANT_CARD_NUMBER": "8600000000000000",
    "MERCHANT_CARD_EXPIRE": "0220",
    "MERCHANT_CURRENCY": "sum",
    "MERCHANT_TRANS_NOTE": "Оплата за .....",
    "SIGN_TIME": 1503638389658,
    "SIGN_STRING": "5777e5ed6eda5b5cca3f56a90cf53e96"
}



Пример ответа от PSP:

{
    "AGR_TRANS_ID":15894357,
    "ERROR":"0",
    "ERROR_NOTE":"success",
}



2.3. Подтверждение платежа.

URL: https://agr.uz/payment_gateway_api/confirm_payment


Параметры запроса от Мерчанта:

Параметр Формат Описание
AGR_TRANS_ID integer ID Мерчанта в системе PSP
VERIFICATION_CODE string смс код присланный для подтверждения платежа(время жизни кода 180 секунд).
SIGN_TIME integer Текущее время в миллисекундах
SIGN_STRING string Проверочная строка, подтверждающая подлинность отправляемого запроса. ХЭШ MD5 из следующих параметров:
md5( SECRET_KEY . AGR_TRANS_ID . VERIFICATION_CODE . SIGN_TIME )
SECRET_KEY – уникальная строка, выдаваемая Мерчанту при подключении.



Параметры ответа от PSP:

Параметр Формат Описание
ERROR integer Код статуса. 0 – успешно. В случае ошибки возвращается код ошибки.
ERROR_NOTE string Описание кода.



Пример запроса от Мерчанта:

{
    "AGR_TRANS_ID": 346272,
    "VERIFICATION_CODE": 456231,
    "SIGN_TIME": 1503638389658,
    "SIGN_STRING": "5777e5ed6eda5b5cca3f56a90cf53e96"
}



Пример ответа от PSP:

{
    "ERROR":"0",
    "ERROR_NOTE":"success"
}



Песочница

Этап 1. Проведение тестового платежа по банковским картам через (Web-кассы / Web-терминал)

Успешная оплата по карте без 3DS
Отправляем тестовый запрос на (Web-кассы / Web-терминал).

https://agr.uz/sandbox


VENDOR_ID=1591864
MERCHANT_TRANS_ID=maks
MERCHANT_TRANS_AMOUNT=12000
MERCHANT_CURRENCY=sum
MERCHANT_TRANS_NOTE=transaction_note_example
MERCHANT_TRANS_RETURN_URL=http://filecloud.uz
SIGN_TIME=1480056082732
SIGN_STRING=2e483be74e568b4d7d4a7d9421f404fc
Отправляем тестовый запрос на Host-терминал.

https://agr.uz/sandbox


VENDOR_ID=1591864
MERCHANT_TRANS_ID=maks
MERCHANT_TRANS_AMOUNT=12000
MERCHANT_CURRENCY=sum
MERCHANT_TRANS_NOTE=transaction_note_example
MERCHANT_TRANS_RETURN_URL=http://filecloud.uz
Отображается окно выбора платежного средства и ввода реквизитов карты.

Вводим номер тестовой карты и нажимаем кнопку “Продолжить”.
Номер карты              4444 4444 4444 4444
Срок действия карты      44/44
Отображается окно ввода смс кода.

Вводим тестовый смс код и нажимаем кнопку “Продтвердить”.
СМС код     444444
Откроется окно статуса платежа.



Этап 2. Перевод в боевой режим

Для перевода Web-кассы, Web-терминала или Host-терминала в боевой режим необходимо:

  1. Получить подтверждение технической поддержки об успешном прохождении тестовых платежей;
  2. Изменить адрес запросов на https://agr.uz/pay
  3. Провести пробные платежи на боевом Web-кассе, Web-терминале или Host-терминале;
  4. Получить подтверждение технической поддержки об успешном прохождении боевых платежей.



Ошибки

Если Вы не смогли устранить ошибку самостоятельно, Вам необходимо обратиться в службу технической поддержки PSP по адресу: info@psp.uz.



Коды ошибок возвращаемые системой PSP

error error_note Описание
0 Success Успешный запрос
< 0 Описание ошибки Ошибка



Коды ошибок возвращаемые системой Мерчанта

error error_note Описание
0 Success Успешный запрос
-1 SIGN CHECK FAILED! Ошибка проверки подписи
-2 Incorrect parameter amount Неверная сумма оплаты
-3 Action not found Запрашиваемое действие не найдено
-4 Already paid Транзакция ранее была подтверждена (при попытке подтвердить или отменить ранее подтвержденную транзакцию)
-5 User does not exist Не найден пользователь/заказ (проверка параметра merchant_trans_id)
-6 Transaction does not exist Не найдена транзакция (проверка параметра merchant_prepare_id)
-7 Failed to update user Ошибка при изменении данных пользователя (изменение баланса счета и т.п.)
-8 Error in request from PSP Ошибка в запросе от PSP (переданы не все параметры и т.п.)
-9 Transaction cancelled Транзакция ранее была отменена (При попытке подтвердить или отменить ранее отмененную транзакцию)
-10 The vendor is not found Поставщик не найден в системе
-11 Transaction type is not correct Не правильный тип транзакции



php