Поиск:

Ответ в темуСоздание новой темы Создание опроса
> PHP & QIWI кошелёк, автоматический ввод/вывод 
V
    Опции темы
numerovan
Дата 13.2.2012, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 549
Регистрация: 1.12.2007

Репутация: нет
Всего: 2



Кто знаешь как можно прикрутить к сайту QIWI кошелёк ?
Поделитесь статьями, ссылками на решение этой задачи.
PM MAIL   Вверх
numerovan
Дата 22.2.2012, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 549
Регистрация: 1.12.2007

Репутация: нет
Всего: 2



Не много разобрался в этом деле. В начале нужно на сайте ishop.qiwi.ru зарегистрировать физ. лицу ИМЕННОЙ КОШЕЛЁК, после подождать пока это дело расмотрят (2-3 дня), далее дадут полное утравление аккаунтом в ishop.qiwi.ru.
 
Самый хороший , на мой взгляд, способ это делать через SOAP-протокол. Для этого не обходимо скачать у них на сайте следующие файлы и разместить к себе на сервер:
1.IShopClientWS.wsdl
2.IShopServerWS.wsdl
3.IShopServerWSService.php
4.server.php
5.test.php

Создавать счета не проблема, через createBill() и проверять счёт вроде тоже. На данный момент проблема уловить именно тот счёт каторый в данном случае оплатился/отказался.

В настройках SOAP-протокола нужно указать в месте URL какой скрипт будет ловить ответ от QIWI.RU, т.е. нужно указать http://мой домен/server.php, далее внутри этого кода уже вносить изменения на своём сайте.

Вот и вопрос, как поймать тот или иной счёт (id транзакцию) ? помогите разобарться с этим шагом.

Покажу этот скрипт из файла server.php
Код


/**
 * На этот скрипт приходят уведомления от QIWI Кошелька.
 * SoapServer парсит входящий SOAP-запрос, извлекает значения тегов login, password, txn, status,
 * помещает их в объект класса Param и вызывает функцию updateBill объекта класса TestServer.
 *
 * Логика обработки магазином уведомления должна быть в updateBill.
 */

 $s = new SoapServer('IShopClientWS.wsdl', array('classmap' => array('tns:updateBill' => 'Param', 'tns:updateBillResponse' => 'Response')));
// $s = new SoapServer('IShopClientWS.wsdl');
 $s->setClass('TestServer');
 $s->handle();

 class Response {
  public $updateBillResult;
 }

 class Param {
  public $login;
  public $password;
  public $txn;      
  public $status;
 }

 class TestServer {
  function updateBill($param) {
  
    // Выводим все принятые параметры в качестве примера и для отладки
    $f = fopen('c:\\phpdump.txt', 'w');
    fwrite($f, $param->login);
    fwrite($f, ', ');
    fwrite($f, $param->password);
    fwrite($f, ', ');
    fwrite($f, $param->txn);
    fwrite($f, ', ');
    fwrite($f, $param->status);
    fclose($f);
    
    // проверить password, login
    
    // В зависимости от статуса счета $param->status меняем статус заказа в магазине
    if ($param->status == 60) {
        // заказ оплачен
        // найти заказ по номеру счета ($param->txn), пометить как оплаченный
    } else if ($param->status > 100) {
        // заказ не оплачен (отменен пользователем, недостаточно средств на балансе и т.п.)
        // найти заказ по номеру счета ($param->txn), пометить как неоплаченный
    } else if ($param->status >= 50 && $param->status < 60) {
        // счет в процессе проведения
    } else {
        // неизвестный статус заказа
    }

    // формируем ответ на уведомление
    // если все операции по обновлению статуса заказа в магазине прошли успешно, отвечаем кодом 0
    // $temp->updateBillResult = 0
    // если произошли временные ошибки (например, недоступность БД), отвечаем ненулевым кодом
    // в этом случае QIWI Кошелёк будет периодически посылать повторные уведомления пока не получит код 0
    // или не пройдет 24 часа
    $temp = new Response();
    $temp->updateBillResult = 0;
    return $temp;
  }
 }





PM MAIL   Вверх
numerovan
Дата 25.2.2012, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 549
Регистрация: 1.12.2007

Репутация: нет
Всего: 2



не ужели ни кто не знает ?
PM MAIL   Вверх
numerovan
Дата 28.2.2012, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 549
Регистрация: 1.12.2007

Репутация: нет
Всего: 2



решил вопрос ... Тестировать ОПЛАТИТЬ/ОТМЕНИТЬ нужно на сайте qiwi.ru, а не на ishop.qiwi.ru ... у меня вот из за этого проблема была, другими словами скрипт server.php работает только когда вы нажимаете на ссылки именно на qiwi.ru!

в файле server.php посути ни чего и не нужно менять ... вписываем нужные действия вот тут
Код

// В зависимости от статуса счета $param->status меняем статус заказа в магазине
    if ($param->status == 60) {
       // вот сюда вписал нужные действия на моей стороне сервера
        
    } else if ($param->status > 100) {
        // и сюда при отказе
        // заказ не оплачен (отменен пользователем, недостаточно средств на балансе и т.п.)
        // найти заказ по номеру счета ($param->txn), пометить как неоплаченный
    } else if ($param->status >= 50 && $param->status < 60) {
        // счет в процессе проведения
    } else {
        // неизвестный статус заказа
    }


удалил из файле следующее
Код

// Выводим все принятые параметры в качестве примера и для отладки
    $f = fopen('c:\\phpdump.txt', 'w');
    fwrite($f, $param->login);
    fwrite($f, ', ');
    fwrite($f, $param->password);
    fwrite($f, ', ');
    fwrite($f, $param->txn);
    fwrite($f, ', ');
    fwrite($f, $param->status);
    fclose($f);


Ещё в настройках sopa-протокола убрал галочку с Использовать подпись ... и всё заработало.

Добавлено через 4 минуты и 27 секунд
Всем удачи!

Это сообщение отредактировал(а) numerovan - 28.2.2012, 23:09
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Платёжные системы и расчёты через Интернет | Следующая тема »


 




[ Время генерации скрипта: 0.0436 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.