←  работа сайта www.capitaller.ru

Webmoney Capitaller & Shareholder Forum

»

Работа с 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, в описании обращения функции он нигде не указан. Как правильно, приведите хотя бы рабочий
пример...

Кто-нибудь вообще этим сервисом пользуется?
Ответить

 фотография tyra 17 апр 2008

$result = $client->SendWM(все необходимые параметры);



может не все?
Ответить

 фотография 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);
?>



Ответить

 фотография 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
        )

Ответить

 фотография mkseva 08 фев 2011

@fomka Спасибо Ваш пример помог.

Имею проблему следующего характера: если использую сервис и в purpose используются русские буквы получаю ошибку вида:
Uncaught SoapFault exception: [soap:Server] Fault occurred ---> sign
not right: ...Описание на русском in

где ... - правильная строка для подписи. Вся загвостка в том, что при использовании в purpose только английских букв - все проходит на ура.
Пробовал отправлять запросы в UTF-8 & win-1251 кодировки - эффект такой же.

Куда копать?
Ответить