мета-данные страницы
  •  

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
передача_информации_по_оплате_заказа_в_агбис [25.05.2020 11:34]
Anatoli
передача_информации_по_оплате_заказа_в_агбис [25.10.2021 14:23]
Строка 1: Строка 1:
-====== Передача информации по оплате заказа в АГБИС ====== 
- 
-===== Передача информации по оплате заказа в АГБИС ===== 
- 
-Данный раздел подойдет для тех, кто самостоятельно интегрирует оплаты в свои мобильные приложения (МП) и личный кабинет (ЛК). 
- 
-Весь механизм оплат и все оплаты реализуется и хранится на стороне клиента. 
- 
-Наша сервисная служба (агент) примерно раз в 30 секунд посылает GET запрос на определенный скрипт (по адресу предоставленный клиентом),​ который отвечает за выгрузку оплат, и передает в него параметры.\\ ​ 
-В ответ скрипт будет сообщать нам данные (xml) об оплаченных заказах,​ после чего агент пометит заказы как оплаченные. 
- 
-Путь до скрипта должен быть для всех запросов **один**,​ например,​ %%https://​www.example.ru/​api/​pay.php%% 
- 
-После разработки скрипта,​ передать этот путь до скрипта,​ а также значения для параметров Ld и Pd, в АГБИС для дальнейшей настройки агента и тестирования работы выгрузки оплат. 
- 
-==== Запрос выгрузки оплат ==== 
- 
-Пример запроса агента на адрес: https:​%%//​%%www.example.ru/​api/​pay.php?​Load&​guid=guid&​Lg=login&​Pd=pwd 
- 
-где guid - GUID текущей выгрузки (формируется агентом),​ 
- 
-login и pwd - авторизационные параметры (предоставляются клиентом клиентом). 
- 
-Скрипт должен проверять login и pwd на правильность,​ если совпадают,​ то продолжает дальше работать. 
- 
-Параметр Load сообщает скрипту,​ что нужно найти все **не выгруженные** записи оплат, и пометить найденные оплаты в БД mysql переданным guid, формируя XML и возвращает в ответе на запрос. 
- 
-Пример XML ответа на запрос параметром Load: 
- 
-<sxh xml> 
-<?xml version="​1.0"​ encoding="​utf-8"?>​ 
-<​Agbis>​ 
-  <Pay> 
-    <​mysql_id>​57</​mysql_id>​ 
-    <​dor_id>​158671</​dor_id>​ 
-    <​contr_id>​44708</​contr_id>​ 
-    <​amount>​31.88</​amount>​ 
-    <​token/>​ 
-    <​card_last_four>​4242</​card_last_four>​ 
-    <​card_type>​Visa</​card_type>​ 
-  </​Pay>​ 
-  <Pay> 
-    <​mysql_id>​59</​mysql_id>​ 
-    <​dor_id>​159060</​dor_id>​ 
-    <​contr_id>​44708</​contr_id>​ 
-    <​amount>​2125</​amount>​ 
-    <​token/>​ 
-    <​card_last_four>​4242</​card_last_four>​ 
-    <​card_type>​Visa</​card_type>​ 
-  </​Pay>​ 
-  ... 
-</​Agbis>​ 
-</​sxh>​ 
- 
-где\\ ​ 
-//​mysql_id//​ – ID строки из БД mysql на стороне клиента;​\\ ​ 
-//dor_id// – ID заказа;​\\ ​ 
-//​contr_id//​ – ID клиента химчистки;​\\ ​ 
-//amount// – сумма оплаты заказа;​\\ ​ 
-//​card_last_four//​ – последние 4 цифры карты оплаты;​\\ ​ 
-//​card_type//​ – тип карты/​банка оплаты. 
- 
-После обработки XML ответа,​ агент сохраняет в АГБИС все оплаты заказов. 
- 
-==== Запрос успешного сохранения оплат ==== 
- 
-Для определения успешной выгрузки оплат в АГБИС, агент отправляет GET запрос в скрипт. 
- 
-Пример запроса агента на адрес: https:​%%//​%%www.example.ru/​api/​pay.php?​SavePay&​guid=guid&​Lg=login&​Pd=pwd 
- 
-где guid - GUID текущей выгрузки,​ сформированный агентом,​ еще при отправке запроса Load; 
- 
-login и pwd - авторизационные параметры (предоставляются клиентом клиентом). 
- 
-Скрипт должен проверять login и pwd на правильность,​ если совпадают,​ то продолжает дальше работать. 
- 
-Если передан параметр SavePay, тогда скрипт находит в БД mysql все оплаты помеченные guid (GUID прошлой выгрузки),​ и делает отметку,​ что эти оплаты выгружены в химчистку успешно и возвращает XML об успешном выполнении. 
- 
-Пример XML ответа на запрос параметром SavePay: 
- 
-<​HTML><​ol style="​list-style-type:​ decimal;"></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML><?​xml version="​**1.0**"​ encoding="​**utf-8**"?><​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML><​Agbis><​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML>>​ <​HTML><​p></​HTML><​Error>​**0**</​Error><​HTML></​p></​HTML>​ 
-<​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML></​Agbis><​HTML></​p></​HTML><​HTML></​li></​HTML><​HTML></​ol></​HTML>​ 
- 
-На этом выгрузка заканчивается и оплаты появляются в программе АГБИС химчистка и ЛК. 
- 
-Пример скрипта php обрабатывающий Load и SavePay запросы от агента:​ 
- 
-<​HTML><​ol style="​list-style-type:​ decimal;"></​HTML>​ 
-<​HTML><​li></​HTML>>​ <​HTML><​p></​HTML><?​php<​HTML></​p></​HTML>​ 
-<​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​ini_set('​display_errors',​ 0);<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​error_reporting(E_ALL);<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​header('​Content-type:​ text/html; charset=UTF-8'​);<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​**include**('​_class/​mysql.php'​);<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​**include**('​_class/​GenerateXML.php'​);<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​**if** (count($_GET) == 0) %%//​%%если ни каких параметров в строке нет, то убиваем выполнение скрипта<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​**die**('​Ошибка'​);<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​$DB = **new** DB;<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​if (!$DB->​link)<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​**die**('​Ошибка базы данных!'​);<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​if (**isset**($_GET['​Lg'​]) && !**empty**($_GET['​Lg'​]) && **isset**($_GET['​Pd'​]) && !**empty**($_GET['​Pd'​])){<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​%%//​%% проверка логина пароля<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​$lg = substr($_GET['​Lg'​],​ 0, 50);<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​$pd = substr($_GET['​Pd'​],​ 0, 50);<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​%%//​%% тут проверка на правильность $lg и $pd<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​}<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​else<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​**die**('​Ошибка'​);​ %%//%% не позволяем работать дальше<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​if (**isset**($_GET['​guid'​]) && !**empty**($_GET['​guid'​]))<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​$guid = $_GET['​guid'​];<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​else<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​**die**('​Ошибка'​);<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​$TABLE_PAY = '';​ %%//%% имя таблицы<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​if (**isset**($_GET['​Load'​])){ %%//%% Загружаем оплаты<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​$sql = "​select<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​id,<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​dor_id,<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​contr_id,<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​amount,<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​datetime_load_server,<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​datetime_load,<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​datetime_unloading,<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​token,<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​card_last_four,<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​card_type,<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​user_name,<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​ip_address,<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​transaction_id,<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​email,<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​is_loaded<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​from $TABLE_PAY<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​where is_loaded = 0";<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​$result = $DB->​query($sql) or die('​Ошибка'​);<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​$xml = **new** GenerateXML();<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​**while** ($product=$DB->​fetch_array($result,​ MYSQL_BOTH)){<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​$a = $xml->​addEl('​Pay'​);<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​$xml->​addEl('​mysql_id',​ $product['​id'​],​ $a); %%//%% ID записи из mysql<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​$xml->​addEl('​dor_id',​ $product['​dor_id'​],​ $a); %%//%% dоr_id - id заказа<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​$xml->​addEl('​contr_id',​ $product['​contr_id'​],​ $a); %%//%% contr_id - id клиента<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​$xml->​addEl('​amount',​ $product['​amount'​],​ $a); %%//%% сумма оплаты<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​$xml->​addEl('​card_last_four',​ $product['​card_last_four'​],​ $a); %%//%% неполный номер карты<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​$xml->​addEl('​card_type',​ $product['​card_type'​],​ $a); %%//%% тип карты Visa, Mastercard/​краткое имя банка<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​$sql2 = "​update "​.$TABLE_PAY."​ set guid='"​.$DB->​real_escape_string($guid)."'​ where id = "​.$product['​id'​];​ %%//%% помечаем оплаты тек выгрузкой<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​$result2 = $DB->​query($sql2) **or** **die**('​Ошибка'​);<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​}<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​**echo** $xml->​saveXML();<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​}<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​**else**<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​**if** (**isset**($_GET['​SavePay'​])){ %%//%% сохранение оплаты<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​$sql2 = "​update "​.$TABLE_PAY."​ set is_loaded=1,​ token=null, datetime_unloading = CURRENT_TIMESTAMP() where guid = '"​.$DB->​real_escape_string($guid)."'";​ %%//%% помечает что оплаты выгрузились успешно<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​$result2 = $DB->​query($sql2) **or** **die**('​Ошибка'​);<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​$xml = new GenerateXML();<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​$xml->​addEl('​Error',​ 0);<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​**echo** $xml->​saveXML();<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML><​HTML><​p></​HTML>​}<​HTML></​p></​HTML><​HTML></​li></​HTML>​ 
-<​HTML><​li></​HTML>>​ <​HTML><​p></​HTML>?><​HTML></​p></​HTML>​ 
-<​HTML></​li></​HTML><​HTML></​ol></​HTML>​ 
- 
-Пример скрипта таблицы хранения информации об оплаченных заказов в MYSQL: 
- 
-**CREATE** **TABLE** `payment_orders ` ( 
- 
-`id` **BIGINT**(20) **NOT** **NULL** **AUTO_INCREMENT**,​ 
- 
-`guid` **VARCHAR**(50) **NULL** **DEFAULT** **NULL** **COMMENT** 'GUID выгрузки',​ 
- 
-`contr_id` **BIGINT**(20) **NOT** **NULL** **COMMENT** '​контрагент в БД', 
- 
-`dor_id` **BIGINT**(20) **NULL** **DEFAULT** **NULL** **COMMENT** '​заказ в БД', 
- 
-`amount` **DOUBLE** **NOT** **NULL** **COMMENT** '​сумма оплаты',​ 
- 
-`datetime_load_server` **TIMESTAMP** **NULL** **DEFAULT** **NULL** **COMMENT** '​Дата создания по времени сервера',​ 
- 
-`datetime_load` **TIMESTAMP** **NULL** **DEFAULT** **NULL** **COMMENT** '​Дата создания по времени сервера оплаты',​ 
- 
-`datetime_unloading` **TIMESTAMP** **NULL** **DEFAULT** **NULL** **COMMENT** '​Дата выгрузки в БД агбис',​ 
- 
-`card_last_four` **VARCHAR**(4) **NULL** **DEFAULT** **NULL** **COMMENT** '​последние 4 цифры',​ 
- 
-`card_type` **VARCHAR**(50) **NULL** **DEFAULT** **NULL** **COMMENT** '​тип кары',​ 
- 
-`user_name` **VARCHAR**(500) **NULL** **DEFAULT** **NULL** **COMMENT** '​Имя пользователя карты',​ 
- 
-`ip_address` **VARCHAR**(500) **NULL** **DEFAULT** **NULL** **COMMENT** 'ip клиента',​ 
- 
-`transaction_id` **VARCHAR**(500) **NULL** **DEFAULT** **NULL** **COMMENT** '​номер транзакции',​ 
- 
-`email` **VARCHAR**(250) **NULL** **DEFAULT** **NULL** **COMMENT** 'email адрес плательщика',​ 
- 
-`is_loaded` **TINYINT**(4) **NOT** **NULL** **DEFAULT** '​0'​ **COMMENT** '​Признак успешной выгрузки True/​False',​ 
- 
-`waiting` **TINYINT**(4) **NULL** **DEFAULT** **NULL** **COMMENT** '​Ожидание подтверждения от системы оплаты. 1 ожидание,​ 0 - уже оплачено',​ 
- 
-`com` **VARCHAR**(500) **NULL** **DEFAULT** **NULL**, 
- 
-**PRIMARY** **KEY** (`id`) 
- 
-) 
- 
-**COMMENT**='​Оплаты заказов из ЛК' 
- 
-**COLLATE**='​utf8_general_ci'​ 
- 
-**ENGINE**=**MyISAM**