forum.bitel.ru
http://forum.bitel.ru/

Скрипт взаимодействия с QIWI
http://forum.bitel.ru/viewtopic.php?f=19&t=5969
Страница 1 из 1

Автор:  crez [ 06 окт 2011, 11:27 ]
Заголовок сообщения:  Скрипт взаимодействия с QIWI

Заключили договор с QIWI на оплату абонентки.
Заказали кодеру php-скрипт, чтоб их сервер присылал данные о платежах сразу в БД биллинга. В результате денюжки через терминал почти мгновенно попадают в БД.
Абоненты довольны, мы тоже :)

Выкладываю скрипт, может кому-нибудь пригодится:

payment.php
Код:
<?php

# author: Max Tushewski
# email: danube55@mail.ru

require_once("config.php");

$connect = mysql_connect("$database_hostname:$database_port",
                    $database_username, $database_password) or
    die("Could not connect: " . mysql_error());
mysql_select_db($database_name);

if (isset($_GET['command'],$_GET['txn_id'], $_GET['account'])) {
    switch ($_GET['command']) {
        case 'check':
            echo check($_GET['txn_id'], $_GET['account'], $connect);
            break;
        case 'pay':
            if (isset($_GET['sum'], $_GET['txn_date'])) {
                echo pay($_GET['txn_id'],$_GET['account'], $_GET['sum'], $_GET['txn_date'], $pt, $connect);
            };
            break;
    }
}

mysql_close();

function check($txn_id, $account, $connect){
    $query = "SELECT COUNT(id) FROM contract WHERE title = '$account';";
    $result = mysql_query($query, $connect);
    $r = mysql_fetch_row($result);
    switch ($r[0]) {
        case 1:
            return response($txn_id, 0);
        case 0:
            return response($txn_id, 5);
        default:
            return response($txn_id, 10);
    }
}

function pay($txn_id, $account, $sum, $txn_date, $pt, $connect){
    $query = "SELECT id FROM contract WHERE title = '$account';";
    $result = mysql_query($query, $connect);
    $cid = mysql_fetch_row($result);
    if ($cid[0] == '') {
        return response($txn_id, 5);
    }
    $querypay = "INSERT INTO contract_payment (cid, summa, dt, pt) VALUES ('$cid[0]', '$sum', '$txn_date', '$pt')";
    if (!mysql_query($querypay, $connect)) {
        return response($txn_id, 10);
    } else {
        return response($txn_id, 0);
    }
}

function response($txn_id, $result){
    $xml = new SimpleXMLElement('<response></response>');
    $cxml1 = $xml->addChild('txn_id', $txn_id);
    $cxml2 = $xml->addChild('result', $result);
    header("Content-type: text/xml");
    return $xml->asXML();
}
?>

config.php
Код:
<?php

$database_type = "mysql";
$database_name = "bgbilling";
$database_hostname = "xx.xx.xx.xx";
$database_username = "user";
$database_password = "password";
$database_port = "3306";
#ID типа платежа в справочнике биллинга
$pt = "11"
?>

Автор:  Phricker [ 06 окт 2011, 11:34 ]
Заголовок сообщения:  Re: Скрипт взаимодействия с QIWI

а MPS модуль? :)

Автор:  crez [ 06 окт 2011, 11:51 ]
Заголовок сообщения:  Re: Скрипт взаимодействия с QIWI

А нету у нас такого модуля :shock:
Сейчас бегло просмотрел документацию по нему... Похоже, QIWI туда тоже можно прикрутить. Надо шефу заказать покупку, да попробовать :)

Кстати, ни на форуме, ни в wiki не нашел информации по платежам через QIWI, когда понадобилось стыковать, поэтому и стал выдумывать (велосипед) способ взаимодействия :)
Но скрипт работает :lol:

Автор:  Phricker [ 06 окт 2011, 11:52 ]
Заголовок сообщения:  Re: Скрипт взаимодействия с QIWI

Вообще-то модуль MPS и отвечает за платежи через платежные системы :D
Сверки с ними и т.п.

Автор:  Phricker [ 06 окт 2011, 12:24 ]
Заголовок сообщения:  Re: Скрипт взаимодействия с QIWI

crez писал(а):
Кстати, ни на форуме, ни в wiki не нашел информации по платежам через QIWI, когда понадобилось стыковать, поэтому и стал выдумывать (велосипед) способ взаимодействия :)

http://www.bgbilling.ru/v5.1/doc/ch17s02s01.html
ЕМНИМС, QIWI есть ОСМП.
Один куплен другим. Ну или если быть точным - работает по протоколу osmp. Что-то вроде этого

777 сообщений :lol:

Автор:  Khoma [ 12 окт 2011, 20:36 ]
Заголовок сообщения:  Re: Скрипт взаимодействия с QIWI

А работа с ОСМП и Киви кошельком это одно и то же?
У меня создалось впечатление, что для "новичков", которые заключили договор не с ОСМП (который шлёт данные в биллинг по определённому протоколу), а с Киви кошельком модуль MPS не подходит. Я во всяком случае так и не понял, как можно настроить это взаимодействие. Есть у кого-нибудь опыт прикручивания именно Киви кошелька к биллингу?

Автор:  romaniozi [ 07 ноя 2011, 13:17 ]
Заголовок сообщения:  Re: Скрипт взаимодействия с QIWI

crez писал(а):
Заключили договор с QIWI на оплату абонентки.
Заказали кодеру php-скрипт, чтоб их сервер присылал данные о платежах сразу в БД биллинга. В результате денюжки через терминал почти мгновенно попадают в БД.
Абоненты довольны, мы тоже :)

Выкладываю скрипт, может кому-нибудь пригодится:

payment.php
Код:
<?php

# author: Max Tushewski
# email: danube55@mail.ru

require_once("config.php");

$connect = mysql_connect("$database_hostname:$database_port",
                    $database_username, $database_password) or
    die("Could not connect: " . mysql_error());
mysql_select_db($database_name);

if (isset($_GET['command'],$_GET['txn_id'], $_GET['account'])) {
    switch ($_GET['command']) {
        case 'check':
            echo check($_GET['txn_id'], $_GET['account'], $connect);
            break;
        case 'pay':
            if (isset($_GET['sum'], $_GET['txn_date'])) {
                echo pay($_GET['txn_id'],$_GET['account'], $_GET['sum'], $_GET['txn_date'], $pt, $connect);
            };
            break;
    }
}

mysql_close();

function check($txn_id, $account, $connect){
    $query = "SELECT COUNT(id) FROM contract WHERE title = '$account';";
    $result = mysql_query($query, $connect);
    $r = mysql_fetch_row($result);
    switch ($r[0]) {
        case 1:
            return response($txn_id, 0);
        case 0:
            return response($txn_id, 5);
        default:
            return response($txn_id, 10);
    }
}

function pay($txn_id, $account, $sum, $txn_date, $pt, $connect){
    $query = "SELECT id FROM contract WHERE title = '$account';";
    $result = mysql_query($query, $connect);
    $cid = mysql_fetch_row($result);
    if ($cid[0] == '') {
        return response($txn_id, 5);
    }
    $querypay = "INSERT INTO contract_payment (cid, summa, dt, pt) VALUES ('$cid[0]', '$sum', '$txn_date', '$pt')";
    if (!mysql_query($querypay, $connect)) {
        return response($txn_id, 10);
    } else {
        return response($txn_id, 0);
    }
}

function response($txn_id, $result){
    $xml = new SimpleXMLElement('<response></response>');
    $cxml1 = $xml->addChild('txn_id', $txn_id);
    $cxml2 = $xml->addChild('result', $result);
    header("Content-type: text/xml");
    return $xml->asXML();
}
?>

config.php
Код:
<?php

$database_type = "mysql";
$database_name = "bgbilling";
$database_hostname = "xx.xx.xx.xx";
$database_username = "user";
$database_password = "password";
$database_port = "3306";
#ID типа платежа в справочнике биллинга
$pt = "11"
?>



А как это все работает?

Автор:  snark [ 07 ноя 2011, 20:15 ]
Заголовок сообщения:  Re: Скрипт взаимодействия с QIWI

Используйте mps, т.к. скрипт - это бооольшой такой костыль, не в обиду автору будет сказано.

Автор:  crez [ 08 ноя 2011, 12:29 ]
Заголовок сообщения:  Re: Скрипт взаимодействия с QIWI

А совсем и не в обиду :)
Сами уже модуль MPS купили и через него настроили - намного проще :)

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/