Работа с SendWM
Сапфир 12 апр 2008
На PHP использую модуль SOAP для работы с этим сервисом: http://www.capitalle.../DoPayment.asmx
$client = new SoapClient("http://www.capitalle...ment.asmx?WSDL");
// Поcылка SOAP-запроса и получение результата
$result = $client->SendWM(все необходимые параметры);
echo "RESULT: " . $result;
Но всегда возвращается ошибка:
Fatal error: Uncaught SoapFault exception: [soap:Server] System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.Data.SqlClient.SqlException: Procedure 'usp_get_firm_cnt' expects parameter '@wmid', which was not supplied. at Corp.ws.DoPayment.SendWM(Int32 firm_id, String sender_wmid, Int32 transn, String signstr, String from, String to, Decimal amount, String purpose, Int32& paymentid, Decimal& comiss, Int32& wmtranid) --- End of inner exception stack trace --- i
Что за фигня? Что это за параметр wmid, в описании обращения функции он нигде не указан. Как правильно, приведите хотя бы рабочий пример...
Кто-нибудь вообще этим сервисом пользуется?
$client = new SoapClient("http://www.capitalle...ment.asmx?WSDL");
// Поcылка SOAP-запроса и получение результата
$result = $client->SendWM(все необходимые параметры);
echo "RESULT: " . $result;
Но всегда возвращается ошибка:
Fatal error: Uncaught SoapFault exception: [soap:Server] System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.Data.SqlClient.SqlException: Procedure 'usp_get_firm_cnt' expects parameter '@wmid', which was not supplied. at Corp.ws.DoPayment.SendWM(Int32 firm_id, String sender_wmid, Int32 transn, String signstr, String from, String to, Decimal amount, String purpose, Int32& paymentid, Decimal& comiss, Int32& wmtranid) --- End of inner exception stack trace --- i
Что за фигня? Что это за параметр wmid, в описании обращения функции он нигде не указан. Как правильно, приведите хотя бы рабочий пример...
Кто-нибудь вообще этим сервисом пользуется?
e-curex.com 18 апр 2008
мы можем разработать скрипт за деньги.
ЗЫ наш автоматически обменник использует эту функцию.
fomka 11 дек 2009
Удивляет пренебрежительное отношение к разрабочикам платежных сервисов,
неужели было так сложно привести пример на любом из языков программирования.
В процессе подключения выяснилось, что массив с параметрами должен иметь имя "wmid". Нигде в описании об этом не говорится!
Привожу собственный краткий листинг на PHP (php на сервере должен быть установлен c подключенным модулем SOAP). Надеюсь он кому-то сэкономит время и нервы.
<?php
// Создаем экземпляр клиента
$client = new SoapClient("http://www.capitalle...ment.asmx?WSDL");
try
{
$params = array("firm_id" => $firm_id,
"sender_wmid" => $sender_wmid,
"transn" => $RequestN,
"signstr" => $SignStr,
"from" => $from_purse,
"to" => $to_purse,
"amount" => $summ,
"purpose" => $purpose,
"paymentid" => $trn_id);
//вызываем SendWM
$result = $client->__soapCall('SendWM',array("wmid"=>$params),
array("soapaction"=>"http://tempuri.org/SendWM",
"uri"=>"http://www.you_server.ru/"));
}
catch (SoapFault $e)
{
echo "<hr><pre>";
print_r($e);
echo "</pre><hr>";
}
var_dump($result);
?>
неужели было так сложно привести пример на любом из языков программирования.
В процессе подключения выяснилось, что массив с параметрами должен иметь имя "wmid". Нигде в описании об этом не говорится!
Привожу собственный краткий листинг на PHP (php на сервере должен быть установлен c подключенным модулем SOAP). Надеюсь он кому-то сэкономит время и нервы.
<?php
// Создаем экземпляр клиента
$client = new SoapClient("http://www.capitalle...ment.asmx?WSDL");
try
{
$params = array("firm_id" => $firm_id,
"sender_wmid" => $sender_wmid,
"transn" => $RequestN,
"signstr" => $SignStr,
"from" => $from_purse,
"to" => $to_purse,
"amount" => $summ,
"purpose" => $purpose,
"paymentid" => $trn_id);
//вызываем SendWM
$result = $client->__soapCall('SendWM',array("wmid"=>$params),
array("soapaction"=>"http://tempuri.org/SendWM",
"uri"=>"http://www.you_server.ru/"));
}
catch (SoapFault $e)
{
echo "<hr><pre>";
print_r($e);
echo "</pre><hr>";
}
var_dump($result);
?>
diex 04 фев 2010
В чём может быть загвоздка ?
Вот ответ вебсервиса:
[faultstring] => Fault occurred ---> PaymentMgr.GetPaymentTask error:-1
[faultcode] => soap:Server
[faultactor] => http://www.capitalle.../DoPayment.asmx
[detail] => stdClass Object
(
[retval] => -6
[retdesc] => PaymentMgr.GetPaymentTask error:-1
)
Вот ответ вебсервиса:
[faultstring] => Fault occurred ---> PaymentMgr.GetPaymentTask error:-1
[faultcode] => soap:Server
[faultactor] => http://www.capitalle.../DoPayment.asmx
[detail] => stdClass Object
(
[retval] => -6
[retdesc] => PaymentMgr.GetPaymentTask error:-1
)
mkseva 08 фев 2011
@fomka Спасибо Ваш пример помог.
Имею проблему следующего характера: если использую сервис и в purpose используются русские буквы получаю ошибку вида:
Uncaught SoapFault exception: [soap:Server] Fault occurred ---> sign
not right: ...Описание на русском in
где ... - правильная строка для подписи. Вся загвостка в том, что при использовании в purpose только английских букв - все проходит на ура.
Пробовал отправлять запросы в UTF-8 & win-1251 кодировки - эффект такой же.
Куда копать?
Имею проблему следующего характера: если использую сервис и в purpose используются русские буквы получаю ошибку вида:
Uncaught SoapFault exception: [soap:Server] Fault occurred ---> sign
not right: ...Описание на русском in
где ... - правильная строка для подписи. Вся загвостка в том, что при использовании в purpose только английских букв - все проходит на ура.
Пробовал отправлять запросы в UTF-8 & win-1251 кодировки - эффект такой же.
Куда копать?