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