|
|
Головна » 2011 » Березень » 14 » Технічна сторона справи
22:05 Технічна сторона справи |
Qiwi надає досить великий XML-інтерфейс. Проте, вам, швидше за все, знадобиться лише 2 його функції - виставлення рахунку та перевірка стану рахунку.
Виставлення рахунку Надсилання запиту на створення рахунку проводиться відправкою XML-запиту на адресу http://www.mobw.ru/term2/xmlutf.jsp, в POST запиту передаємо наступний XML:
< ;? xml version = "1.0" encoding = "utf-8"?> <request> <protocol-version> 4.00 </ protocol-version> < request-type> 30 </ request-type> <extra name="password"> Ваш пароль </ extra> <terminal-id> Ваш номер у системі ківі </ terminal- id> <extra name="serial"> Ван пароль № 2 </ extra> <extra name="comment"> Коментар </ extra> <extra name = "to-account"> Номер телефону покупця </ extra> <extra name="amount"> Сума </ extra> <extra name="trm-id"> ; Номер замовлення </ extra> <extra name="ALARM_SMS"> 0 </ extra> <extra name="ACCEPT_CALL"> 0 </ extra> < ; extra name = "ltime"> 60 </ extra> </ request>
поексперементувати з відправкою XML запитів ви можете прямо в особистому кабінеті Qiwi (меню Сервіс-Протокол).
У разі успіху сервер поверне:
<response> <result-code> 0 </ result-code> </ response>
Перевіряти потрібно значення, яке повернуто у result-code: у разі, якщо воно не дорівнює 0, виводити користувачеві помилку: наприклад, може бути не дотриманий формат номера телефону, або ж користувач зовсім не зареєстрований у системі Qiwi.
Наступний приклад на PHP відправляє XML-запит на сервер Qiwi і отримує відповідь:
$ xml = " Xml version =" 1.0 "encoding =" utf-8 "?> <request> <protocol-version> 4.00 </ protocol-version> <request-type> 30 </ request-type> <extra name = "password "> Ваш пароль </ extra> <terminal-id> Ваш номер у системі ківі </ terminal-id> <extra name="serial"> Ван пароль № 2 </ extra> <extra name="comment"> Коментар </ extra> <extra name="to-account"> Номер телефону покупця </ extra> < extra name = "amount"> Сума </ extra> <extra name="trm-id"> Номер замовлення </ extra> <extra name="ALARM_SMS"> 0 < ; / extra> <extra name="ACCEPT_CALL"> 0 </ extra> <extra name="ltime"> 60 </ extra> </ request> ; "; $ opts = array ('http' => array ( 'method' => 'POST', 'header' =>" Content -type: application / x-www-form-urlencoded \ r \ n " ." Content-Length: ". strlen ($ xml)." \ r \ n ", 'content' => ; $ xml ) ); / / Створюємо stream context $ context = stream_context_create ($ opts); / / Відправляємо запит серверу. В якості третього параметра вказуємо створений stream context $ result = file_get_contents ("http://www.mobw.ru/term2/xmlutf.jsp", FALSE, $ context); / / Обробляємо xml і перевіряємо повернене значення.
Більш докладний приклад у вигляді контролера для CakePHP.
Перевірка оплати рахунки
Для початку трохи теорії. Я думаю, якщо вас зацікавила ця стаття, ви вже стикалися з іншими системами з прийому платежів, наприклад, Webmoney або Roboxchange. Обидві ці системи при оплаті рахунку вмію викликати певну сторінку вашого сайту, повідомляючи, таким чином, про оплату рахунку покупцем. З Qiwi ситуація інша: при оплаті протокол не передбачає виклик будь-якої сторінки вашого сайту. Однак, є інтерфейс, при зверненні до якого за допомогою XML можна визначити статус рахунку. Алгоритм у цьому випадку простий: 1. При виставленні рахунку ставимо максимальне час життя рахунку 5 днів. 2. Створюємо скрипт, який буде виймати з вашої бази даних всі неоплачені рахунки qiwi за останні 5 днів, запитувати у Qiwi їх статус, а якщо вони оплачені - ставити їм у базі даних статус «сплачено», а також виконувати інші дії, передбачені бізнес-логікою движка вашого інтернет-магазину. 3. У cron додаємо завдання виконувати цей скрипт кожні 15 хвилин.
Тепер до практики. Скрипт для перевірки статусу рахунку повинен витягувати з вашої бази номери неоплачених рахунків і підставляти їх в XML, наведений нижче.
XML-запит на перевірку статусу замовлень представляє з себе:
Xml version = "1.0" encoding = "utf-8"?> <request> <protocol-version> 4.00 </ protocol-version> <request-type> 33 </ request-type> <extra name="password"> пароль </ extra> <terminal-id> логін </ terminal-id> <extra name="serial"> логін2 </ extra> <bills-list> <bill id="1"/> <bill id="2"/> <bill id="3"/> ... </ bills- list> </ request>
У цьому прикладі ми запитуємо сервер на статус виконання рахунків 1, 2, 3
Адреса, на який слід надсилати запит, а також спосіб його відправки не відрізняється від прикладу, представленого в першій частині статті для виставлення рахунку
У відповідь сервер повертає, щось, на кшталт: <response> <result-code fatal="false"> 0 </ result-code> <bills-list> <bill id="1" status ="60" sum="193.00" /> <bill id = "2" status = " 60 "sum =" 1032.00 "/> <bill id="3" status ="50" sum="393.00" /> </ bills-list> </ response>
У відповіді необхідно перевіряти полі status. 60 - означає, що рахунок оплачений. Можна також порівняти суму з сумою в базі даних.
Це все, що я хотів розповісти. Я свідомо не дуже докладно описував протокол Qiwi. Упевнений, читачеві буде просто розібратися в ньому самому. Мета статті - розповісти про досить новою і, головне, зручною платіжній системі на берегах рунета. Детальний опис протоколу Qiwi в pdf Реєстрація в якості магазину Компонент для CakePHP для роботи з Qiwi (Опис роботи з компонентом міститься в коментарях до коду.)
UPD: Переніс в блог «Електронна комерція» UPD2: Ця ж стаття в моєму блозі
|
Переглядів: 490 |
Додав: w1zard
| Рейтинг: 0.0/0 |
|
|
Категорії розділу
Події
[3]
Тільки екстренні та надзвичайні новини
|
Світові події
[4]
Останні події, що трапились у світі.
|
Українські події
[8]
Події, які трапились в межах нашої державии, чи стосуються України
|
Бізнес
[3]
Новини та події із бізнес-світу
|
Наука і техніка
[3]
Новини, що трапились у світі науки або технічних досліджень
|
Спорт
[1]
Спортивні новини та досягнення
|
Культура та мистецтво
[2]
Новини культурного та художнього світу
|
Статистика
Онлайн всього: 4 Гостей: 4 Користувачів: 0
|