Проведение платежей через API

Обмен накопленными знаниями и опытом использования АСР LANBilling
wmsin
Сообщения: 22
Зарегистрирован: 09 июл 2013, 14:10

Проведение платежей через API

Сообщение wmsin » 29 июл 2013, 09:57

Добрый день всем!!!
Вот такой вопрос:
Пишу скрипт для проведения платежей из сторонней платежной системы, пишу на php, вот код:

Код: Выделить всё

$lb = new LANBilling();
$paym = array("modperson"=>23,"amount"=>$pay,"paydate"=>$dat,"receipt"=>$pid);
$struct = array("id"=>5,"str"=>$numb,"val"=>$paym);
$result = $lb->save("ExternPayment",$struct,false);
if ($result==1) echo "Платеж $pid на сумму $pay р. проведен\n";

$pay - сумма платежа
$dat - дата платежа
$pid - номер квитанции
$numb - номер договора

При выполнении скрипта выдает ошибку:
Notice: Undefined property: SoapFault::$detail in /usr/local/billing/phpclient/admin/soap.class.php on line 550
PHP Fatal error: SOAP-ERROR: Encoding: object has no 'id' property in /usr/local/billing/phpclient/admin/soap.class.php on line 304
PHP Notice: Undefined property: SoapFault::$detail in /usr/local/billing/phpclient/admin/soap.class.php on line 546

Notice: Undefined property: SoapFault::$detail in /usr/local/billing/phpclient/admin/soap.class.php on line 546
/usr/local/billing/phpclient/admin/soap.class.php: SOAP Fault: (faultcode: Client, faultstring: SOAP-ERROR: Encoding: object has no 'id' property, detail: )
PHP Notice: Undefined property: SoapFault::$detail in /usr/local/billing/phpclient/admin/soap.class.php on line 550

Что делаю не так, можете подсказать???

wmsin
Сообщения: 22
Зарегистрирован: 09 июл 2013, 14:10

Re: Проведение платежей через API

Сообщение wmsin » 29 июл 2013, 15:11

попробовал просто "Payment", пишет:

/usr/local/billing/phpclient/admin/soap.class.php: SOAP Fault: (faultcode: SOAP-ENV:Server, faultstring: error_auth, detail: Manager not authorized)

код:

Код: Выделить всё

$lb = new LANBilling(array("localhost","user","pass"));
$paym = array("modperson"=>23,"amount"=>$pay,"paydate"=>$dat,"receipt"=>$pid);
$result = $lb->save("Payment",$paym);
if ($result==1) echo "Платеж $pid на сумму $pay р. проведен\n";

wmsin
Сообщения: 22
Зарегистрирован: 09 июл 2013, 14:10

Re: Проведение платежей через API

Сообщение wmsin » 29 июл 2013, 15:27

Сейчас подпихнул в $_POST логин с паролем, выдает:

/usr/local/billing/phpclient/admin/soap.class.php: SOAP Fault: (faultcode: SOAP-ENV:Server, faultstring: exception, detail: Unknown column 'nan' in 'field list')

wmsin
Сообщения: 22
Зарегистрирован: 09 июл 2013, 14:10

Re: Проведение платежей через API

Сообщение wmsin » 29 июл 2013, 15:56

я так понимаю, я не правильно создаю экземпляр LANBilling, как его правильно создать??? какие параметры нужно указать???

создание проходит так:

Код: Выделить всё

include_once("../phpclient/admin/soap.class.php");
include_once("../phpclient/admin/main.class.php");
$_POST["login"] = "логин";
$_POST["password"] = "пароль";
$lb = new LANBilling();
if (!$lb->authorized) { echo "error"; exit; }

ArhAngel
Сообщения: 98
Зарегистрирован: 09 фев 2012, 04:07

Re: Проведение платежей через API

Сообщение ArhAngel » 29 июл 2013, 17:12

wmsin писал(а):я так понимаю, я не правильно создаю экземпляр LANBilling, как его правильно создать??? какие параметры нужно указать???

создание проходит так:

Код: Выделить всё

include_once("../phpclient/admin/soap.class.php");
include_once("../phpclient/admin/main.class.php");
$_POST["login"] = "логин";
$_POST["password"] = "пароль";
$lb = new LANBilling();
if (!$lb->authorized) { echo "error"; exit; }

не занимался пока программированием через API но думаю для начала надо посмотреть пример написания личного кабинета 1-ой версии (мне кажется он проще по написанию чем второй)

wmsin
Сообщения: 22
Зарегистрирован: 09 июл 2013, 14:10

Re: Проведение платежей через API

Сообщение wmsin » 29 июл 2013, 19:16

посмотрел в config.php, как происходит создание класса LANBilling, вроде как у меня, но почему-то у меня сыплет ошибками, может все-таки что-то не так???

Откуда берется ошибка в базе данных???

wmsin
Сообщения: 22
Зарегистрирован: 09 июл 2013, 14:10

Re: Проведение платежей через API

Сообщение wmsin » 30 июл 2013, 08:36

Вобщем просите у хелпдеска и обрящите :D

Решение:

Код: Выделить всё

include_once("../phpclient/admin/soap.class.php");
include_once("../phpclient/admin/main.class.php");
$_POST["login"] = "логин";
$_POST["password"] = "пароль";
$lb = new LANBilling();
if (!$lb->authorized) { echo "error"; exit; }
$paym = array("modperson"=>23,"amount"=>$pay,"paydate"=>$dat,"receipt"=>$pid,"agrmid"=>$agrm_id,"currid"=>1);
$result = $lb->save("Payment",$paym);
if ($result==1) echo "Платеж $pid на сумму $pay р. проведен\n";


где:
$pay - сумма платежа
$dat - дата платежа
$pid - номер квитанции
$numb - номер договора
$agrm_id - agrm_id из agreements

currid указывать обязательно

wmsin
Сообщения: 22
Зарегистрирован: 09 июл 2013, 14:10

Re: Проведение платежей через API

Сообщение wmsin » 30 июл 2013, 09:14

Еще бы кто портировал данное на perl, было бы вообще чудно :)

Andrei
Сообщения: 810
Зарегистрирован: 08 ноя 2006, 12:26
Контактная информация:

Re: Проведение платежей через API

Сообщение Andrei » 27 авг 2013, 18:10

А как надо оформить этот код? Просто сохранить в php-файл и потом его куда-то положить на сервере? Куда?

VsolnceV
Сообщения: 13
Зарегистрирован: 27 июн 2012, 17:12

Re: Проведение платежей через API

Сообщение VsolnceV » 06 сен 2013, 06:32

Ребят а мне ни кто не поможет с написанием скрипта?

include_once("../phpclient/admin/soap.check.php");
include_once("../phpclient/admin/main.check.php");
$_POST["login"] = "***";
$_POST["password"] = "***";
$lb = new LANBilling();
if (!$lb->authorized) { echo "error"; exit; }
я так понял создаем класс, и передаем данные для авторизации, если ошибка то выходим если нет то...

Дальше мне нужно сделать вот такое...

1. Проверка номера
Имя скрипта:
check.php
Параметры:
time_p - время начала обработки запроса сервером
acc - счет пользователя, для проверки
md5 - цифровая подпись запроса
Вычисление цифровой подписи запроса:
md5 = MD5(time_p + acc + client_secret_key)

Возвращаемый XML-документ:
<?xml version="1.0" ?>
<response>
<time_v>UNIX-time ответа</time_v>
<fio>ФИО абонента</fio>
<status>целочисленный код возврата</status>
<md5>цифровая подпись ответа</md5>
</response>

Вычисление цифровой подписи ответа:
md5 = MD5(time_v + fio + server_secret_key)

2. Создание сессии проведения платежа
Имя скрипта:
payment.php
Параметры:
time_p - время начала обработки запроса сервером
acc - счет пользователя, на который будет производиться платеж
sum - сумма платежа
id_p - уникальный номер транзакции в системе Платежка
md5 - цифровая подпись запроса
Вычисление цифровой подписи запроса:
md5 = MD5(time_p + acc + sum + id_p + client_secret_key)
Возвращаемый XML-документ:
<?xml version="1.0" ?>
<response>
<time_v>UNIX-time ответа</time_v>
<id_v> уникальный номер транзакции в системе провайдера </id_v>
<status>целочисленный код возврата</status>
<md5>цифровая подпись ответа</md5>
</response>
Вычисление цифровой подписи ответа:
md5 = MD5(time_v + id_v + server_secret_key)

3. Подтверждение платежа
Имя скрипта:
commit_pay.php
Параметры:
time_p - время начала обработки запроса сервером
id_v - уникальный номер транзакции в системе провайдера (берется из ответа на запрос создания сессии)
md5 - цифровая подпись запроса
Вычисление цифровой подписи запроса:
md5 = MD5(time_p + id_v + client_secret_key)
Возвращаемый XML-документ:
<?xml version="1.0" ?>
<response>
<time_v>UNIX-time ответа</time_v>
<status>целочисленный код возврата</status>
<md5>цифровая подпись ответа</md5>
</response>

Вычисление цифровой подписи ответа:
md5 = MD5(time_v + server_secret_key)



Коды возврата:
0 - запрос завершен успешно
1 – неверное значение параметра time_p
2 – неверное значение параметра id_p
3 – неверное значение параметра acc, либо такой счет не существует
4 - неверное значение параметра sum
5 – неверная цифровая подпись
6 – транзакция с таким номером уже была обработана ранее
99 – внутренняя ошибка сервера
Внимание!!!
После проверки номера может возвращаться до 4 параметров, которые могут отображаться на экране пользователю после проверки (например, ФИО, адрес, состояние счета и т.п.)

Помогите плиз! хотя бы натолкните как правильно это делать?


Вернуться в «LANBilling: обмен опытом»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя