На 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, в описании обращения функции он нигде не указан. Как правильно, приведите хотя бы рабочий пример...
Кто-нибудь вообще этим сервисом пользуется?
Работа с SendWM
Автор Сапфир, апр 12 2008 13:54
5 replies to this topic
#1 Новичок
Отправлено 12 апреля 2008 - 13:54
#2 Знаток
Отправлено 17 апреля 2008 - 20:57
$result = $client->SendWM(все необходимые параметры);
может не все?
#3 Продвинутый пользователь
Отправлено 18 апреля 2008 - 08:42
мы можем разработать скрипт за деньги.
ЗЫ наш автоматически обменник использует эту функцию.
#4 Новичок
Отправлено 11 декабря 2009 - 13:22
Удивляет пренебрежительное отношение к разрабочикам платежных сервисов,
неужели было так сложно привести пример на любом из языков программирования.
В процессе подключения выяснилось, что массив с параметрами должен иметь имя "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);
?>
#5 Member
Отправлено 04 февраля 2010 - 23:18
В чём может быть загвоздка ?
Вот ответ вебсервиса:
[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
)
#6 Новичок
Отправлено 08 февраля 2011 - 14:46
@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 кодировки - эффект такой же.
Куда копать?
0 человек читают эту тему
0 пользователей, 0 гостей, 0 анонимных