Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

QIWI и новейший протокол REST в примерах

Anna | 31.05.2014 | нет комментариев
Я являюсь давнишним читателем програ и Зачастую нахожу здесь результаты на свои вопросы. Но вот так случилось, что результата найти не получилось. Причём нигде.
А задача была дальнейшая. Реализовать новейший (REST) протокол для системы QIWI. Мне пришлось потратить несколько дней, Дабы обнаружить правильное решение с поддержкой проб, ошибок, общений с администратором и командой поддержки, т.к. примеров нигде нет, правда задача не такая уж и трудная.
В данном сообщении я хочу поделиться теми примерами, которых мне так не хватало. Верю, что это поможет кому-то.
Сразу скажу, что я не буду расписывать, разжевывать и пояснять детально. Будет только основное, которое считаю нужным. Всё же у всякого свои предпочтения и цели.
Для начала вам необходимо зарегистрировать свой магазин http://ishopnew.qiwi.ru/
Позже регистрации в разделе Методы подключения вы найдёт пункт Новейший протокол. Там дозволено скачать изложение API нового протокола.Для отправки запросов я применял cURL.
Вот как это было:

$requestType = 'POST'; // Для REST запросы различного типа
$url = 'some url'; // Зависит от исполняемого действия
$parameters = array(); // Так же зависит от запроса
$loginPass = $id . ':' . $password; // ID магазина и пароль(пароль необходимо получить у администратора)
$headers = array(
    "Accept: text/json",
    "Content-Type: application/x-www-form-urlencoded; charset=utf-8"
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, $loginPass);

if ($requestType != 'GET') {
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $requestType);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($parameters));
}
$httpResponse = curl_exec($ch);
if (!$httpResponse) {
    // Изложение ошибки, к примеру 
    echo curl_error($ch).'('.curl_errno($ch).')';
    return false;
}
$httpResponseAr = json_decode($httpResponse);
return $httpResponseAr->response;

Думаю здесь всё легко и ясно.

Сейчас какие операции дозволено осуществить.

  • Выставление счета пользователю
  • Запрос ранга счета
  • Переадресация для оплаты счета
  • Отмена неоплаченного выставленного счета
  • Возврат средств по оплаченному счету
  • Проверка ранга возврата

В документации достаточно детально всё описано. Я лишь акцентирую внимание на некоторых вещах, которые тормозили мою разработку.

Опишу отдельно для всякой операции.

1) Выставление счета пользователю

$requestType = 'PUT';
$url = 'https://w.qiwi.com/api/v2/prv/{prv_id}/bills/{bill_id}';
// {prv_id} – здесь значимо помнить, что это ваш ID магазина.
// {bill_id} – всякое неповторимое число, к примеру номер записи операции либо номер счёта из базы.
$parameters = array(
	'user' => 'tel: 79999999999',
	'amount' => 0.1,
	'ccy' => 'RUB',
	'comment' => 'Оплата QIWI',
	'pay_source' => 'qw',
	'lifetime' => date('c', $timePlusHour),
	'prv_name' => 'QIWI',
);

С параметрами всё ясно.

2) Запрос ранга счета
Если счёт не был оплачен позже выставления, нам необходимо проверить его ранг. Допустимо система задержала результат либо пользователь решил оплатить его чуть позднее, в таком случае дозволено применять cron.

$requestType = 'GET';
$url = 'https://w.qiwi.com/api/v2/prv/{prv_id}/bills/{bill_id}'; // Подобно выше
$parameters = array();

3) Переадресация для оплаты счета
Позже удачного выставления счёта необходимо перенаправить пользователя на страницу оплаты. Тут cURL не применяется, легко редирект.

$url = 'https://w.qiwi.com/order/external/main.action?shop={prv_id }&transaction={bill_id}';
$url .= '&successUrl=' . $successUrl;
$url .= '&failUrl=' . $failUrl;
// {prv_id} и {bill_id} неизменно непрерывны для одного платежа. 
// $successUrl и $failUrl адреса ваших обработчиков удачных и неуспешных операций по оплате.

4) Отмена неоп

 

Источник: programmingmaster.ru

Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB