baibaratsky / php-webmoney Goto Github PK
View Code? Open in Web Editor NEWWebMoney API PHP Library
License: Other
WebMoney API PHP Library
License: Other
Like in Yii2
По какой-то причине не выходит работать с сертификатом Keeper Light.
Выпадаёт ошибка: PHP Fatal error: Call to undefined method baibaratsky\\WebMoney\\Api\\X\\X3\\Request::lightAuth() in *
Собственно код:
<?php
namespace pay\modules;
use baibaratsky\WebMoney\WebMoney;
use baibaratsky\WebMoney\Api\X\X2;
use baibaratsky\WebMoney\Api\X\X3;
use baibaratsky\WebMoney\Request\Requester\CurlRequester;
// Дополнительный функционал ручного метода оплаты
class pm_webmoney extends manualModule
{
private $wmid = '*';
private $certificateKey = '/*.spc';
private $certificateFile = '/*.p12';
private $fileKeyPassword = '*';
//
public function __construct( )
{
}
// Проверка состояния оплаты
public function checkPayments( $orderID, $amount, $currency )
{
//
$webMoney = new WebMoney( new CurlRequester );
// Формируем запрос
$request = new X3\Request( X3\Request::AUTH_LIGHT );
// $request->setRequestedWmid( $this->wmid );
$request->setPurse( * );
$request->setStartDateTime( new \DateTime( '-1 week' ) );
$request->setEndDateTime( new \DateTime );
// Подписываем запрос
$request->lightAuth( $this->certificateFile, $this->certificateKey, $this->fileKeyPassword );
....
В чём может быть причина такого поведения?
Hello! I am trying to use X2 interface of web money. I did as written here https://github.com/baibaratsky/php-webmoney/wiki/X2 , I only wrote my parametrs such as wmid, purse, path to key file, etc, but got this error: Payment error: signature is incorrect. Could you please tell me how to fix this error, where to look?) I saw this too: #63, but id did not help me.
В ближайшее время я добавлю X18, в котором, кроме AUTH_CLASSIC, возможно подписывание запроса MD5 или передача secret_key. Может, есть смысл генерить ошибку, если другим интерфейсам передан такой параметр. Либо в кострукторе, либо в getUrl()
. Опять же, если выдавать ошибку в конструкторе, то есть смысл устанавливать там значение свойства $_url
, а в getUrl()
просто возвращать его. Это, кстати, и логичнее, так как url у нас зависит от того, что передано в конструктор, и потом не меняется.
В интерфейсе X2 в запросе при присвоении onlyauth принудительно приводится к (bool)
, а поскольку для X2 он обязателен - validateRequired
проверяет его на is_numeric()
, что приводит к ошибке валидации в любом случае. Поскольку в доках вебманей возможные значения указаны как 0
и 1
, думаю, проще всего приводить его к (int)
There is need of validation rule, when one parameter becomes non-mandatory if other parameter is specified.
Example:
payment/purse and payment/phone parameters in WMC1 interface:
https://wiki.webmoney.ru/projects/webmoney/wiki/%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_WMC1
не получается использовать X2 - следующая ошибка: "signature is incorrect. planstr=<строка> step=5" Auth type у нас - classic, проблема именно в том как подпись формируется. на WMXI(библиотека, которую раньше использовали) все подписывалось нормально. при этом остальные интерфейсы (например X9) работают нормально.
Что-то мне не очень нравится, что у нас WMID нужно сначала в конструктор WMRequestSigner передавать, а потом еще в запрос. Может, как-то отрефакторим?
Только мне бы не хотелось убирать WMID из конструктора WMRequestSigner, чтобы его можно было использовать автономно, без привязки к остальной библиотеке.
WMXI позволяет использовать сертификат Webmoney для защиты от атаки с подменой DNS. Реализуется очень просто - в корень ложиться сертификат (в WMXI документ называется WebMoneyCA.crt) и затем в CurlRequester добавляется несколько параметров в запрос:
curl_setopt($ch, CURLOPT_CAINFO, __DIR__.'/WebMoneyCA.crt');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
Что думаете насчет реализации такого улучшения и в php-webmoney?
Пытаюсь воспользоваться интерфейсом X11, получаю ошибку:
1) AppBundle\Tests\Service\SecurityCheckerTest::testWmAdvcashCredentialsOk
Argument 1 passed to baibaratsky\WebMoney\Api\X\X11\Response::dirtyXmlToArray() must be an instance of SimpleXMLElement, null given, called in /var/www/vendor/baibaratsky/php-webmoney/Api/X/X11/Response.php on line 60 and defined
/var/www/vendor/baibaratsky/php-webmoney/Api/X/X11/Response.php:195
/var/www/vendor/baibaratsky/php-webmoney/Api/X/X11/Response.php:60
Причина в том, что разбор ожидаемого xml слишком чувствительный, а некоторых параметров в xml может и не быть. Response от этого ломаться не должен.
Вот пример ответа от WM, отсутствует поле certifno/directory, а библиотека ожидает что он будет:
<?xml version="1.0" encoding="windows-1251"?>
<response retval="0">
<fullaccess>0</fullaccess>
<certinfo wmid="WMID">
<attestat>
<row cid="1742959" regcid="10" tid="110" locked="1" admlocked="0" recalled="0"
datecrt="2009-01-02T22:34:20.547" dateupd="2014-08-21T21:01:21.833" datediff="2328"
regnickname="WM Passport Service /Центр аттестации/" regwmid="WMID" status="11" notary=""/>
</attestat>
<wmids>
<row wmid="WMID" info="" nickname="Chizdrel" datereg="2009-01-02T22:25:51.217" yearreg="2009"
monthreg="1" dayreg="2" timereg="22:25:51" ctype="1" companyname="" companyid="" phone="" email=""
phone-check-lock="11" email-check-lock="11"/>
</wmids>
<userinfo>
<value>
<row ctype="1" jstatus="1" osnovainfo="" locked="0" nickname="Chizdrel" infoopen="" city="" region=""
citid="" countryid="" country="" zipcode="" adres="" fname="" iname="" oname="" pnomer="" pdate=""
pday="" pmonth="" pyear="" pdateMMDDYYYY="" pcountryid="" pcountry="" pcity="" pcitid="" pbywhom=""
pdateend="" pcode="" ncountryid="" ncountry="" ntype="1" rcountryid="" rcountry="" rcity=""
rcitid="" radres="" bplace="" bday="" bmonth="" byear="" name="" dirfio="" buhfio="" inn="" okpo=""
okonx="" jadres="" jcountry="" jcountryid="" jcity="" jzipcode="" bankname="" bik="" ks="" rs=""
phonehome="" phonemobile="" icq="" fax="" phone="" email="" web="" cap_owner="0 "
pasdoc="0" inndoc="0" regdoc="0" photoid="0" fm="0" jabberid="" sex="1"
permis="111101011000000000111011101101100011000000110000001110110010"
regcheck="010100000000000000000000000000000000000000000000000000000000"/>
</value>
<check-lock>
<row ctype="00" jstatus="00" osnovainfo="00" nickname="00" infoopen="01" city="01" region="01"
country="01" adres="01" zipcode="01" fname="01" iname="01" oname="01" pnomer="01" pdate="01"
pbywhom="01" pdateend="00" pcode="01" pcountry="01" pcity="01" ncountryid="01" ncountry="01"
rcountry="01" rcity="01" radres="01" bplace="01" bday="01" inn="01" name="00" dirfio="00"
buhfio="00" okpo="00" okonx="00" jadres="00" jcountry="00" jcity="00" jzipcode="00" bankname="00"
bik="00" ks="00" rs="00" fax="01" email="11" web="01" phone="11" phonehome="01" phonemobile="01"
icq="01" jabberid="01" sex="00"/>
</check-lock>
<weblist></weblist>
<extendeddata></extendeddata>
</userinfo>
</certinfo>
</response>
Было бы очень удобно иметь в классах X\Xn\Response публичный метод toArray для
конвертации ответа Webmoney в массив. Например, будет удобно логировать ответы Webmoney:
$request = new WebMoney\Api\X\X9\Request;
$request->setSignerWmid('YOUR WMID');
$request->setRequestedWmid('REQUESTED WMID');
$request->sign(new Signer('YOUR WMID', 'FULL PATH TO KEY FILE', 'KEY FILE PASSWORD'));
if ($request->validate()) {
/** @var WebMoney\Api\X\X9\Response $response */
$response = $webMoney->request($request);
/** @var Psr\Log\LoggerInterface $logger **/
$logger->debug("X9 response", $response->toArray());//второй аргумент - контекст, может быть массивом
if ($response->getReturnCode() === 0) {
echo $response->getPurseByName('Z000000000000')->getAmount();
}
}
Я могу реализовать для всех Respponse toArray методы и сделать Pull-request, если дадите добро.
для работы с x19 обязательно нужен kwm файл или достаточно light_auth (key, cer, pass)
Create a wiki-page describing how to use the validation
class WMX11Response строка 54 нужно написать все слово в нижнем регистре, как оно приходит от wm
Webmoney X1 required no gap at the start/end of description and required win-1251 encoding (field invoice\desc), can you fix this
На этот раз уже явно не в библиотеке, но где ещё найти людей которые наступали на эти грабли?
Суть - локально у себя я получаю эту ошибку. Ubuntu 16.04, PHP 7.0.11.
curl_version(); возвращает такое: http://dl2.joxi.net/drive/2016/10/07/0001/1232/66768/68/4a06312d4d.jpg
При этом у коллеги в gentoo всё отрабатывает корректно, у него curl_version(); выдаёт такое: http://dl2.joxi.net/drive/2016/10/07/0001/1232/66768/68/9b1f442595.jpg
Что тут может не нравится вебманям?
Привет, нашел ошибку. в baibaratsky\WebMoney\Api\X\X22\Request
/**
* @param string $payeePurse lmi_payee_purse
*/
public function setPayeePurse($payeePurse)
{
$this->payeePurse = (int)$payeePurse;
}
соответственно надо (int) на (string)
/**
* @param string $payeePurse lmi_payee_purse
*/
public function setPayeePurse($payeePurse)
{
$this->payeePurse = (string)$payeePurse;
}
За либу гранд мерси!!!
есть вот такая ошибка, в что надо настроить, что бы все поправилось
<?xml version="1.0"?><merchant.response>
<retval>-101</retval>
<retdesc>error on payment.asp ()/1206/ step=20</retdesc>
<LMIERRCODE>4</LMIERRCODE>
<LMIERRDESC>merchant purse (Z_____9307) not acivated for input</LMIERRDESC>
<LMIERRSTEP>13.3</LMIERRSTEP>
</merchant.response>
В терминологии WM аттестат по-английски называется «passport».
Снова здравствуйте.
При установке версии ssl = 1
curl_setopt($handler, CURLOPT_SSLVERSION, 1);
получаю
Error while performing request (Unknown SSL protocol error in connection to w3s.webmoney.ru:443 )
При установке версии ssl = 4 все гуд (версии 2 и 3 не безопасны)
Есть у меня мнение, что я что то не так делаю с версией 1, но получилось поправить только сменой версии.
Может быть добавить метод setSSLVersion в CurlRequester?
$xmlRequester new CurlRequester();
$xmlRequester->setSSLVersion(CURL_SSLVERSION_TLSv1_0);
А в CurlRequester
class CurlRequester extends AbstractRequester
{
private $sslVersion = CURL_SSLVERSION_TLSv1;
Спс.
P.S.
Ну, и немного занудства. Мне больше нравится использование стандартных констант
CURL_SSLVERSION_TLSv1 для v1,
CURL_SSLVERSION_TLSv1_0 для v4.
Can I taking his API for working with debt service?
SOAP нам изрядно архитектуру попортил. В том числе пришлось, например, такие грязные штуки юзать: https://github.com/magnetic-project/wm/blob/master/WebMoney.php#L29
Надо думать, как отрефакторить теперь все это.
Назвал параметр pursefrom
как
/** @var string operation/pursefrom */
protected $_payerPurse;
Но есть одна загвоздка:
Обратите внимание, что при платеже через терминалы или банкоматы, либо чеком Пеймер или ВМ-картой, в качестве кошелька плательщика будет передан кошелек соответствующего шлюза или сервиса Пеймер.
То есть в таком случае это уже не кошелек плательщика. Вот теперь думаю.
Может, надо переименовать?
Hello.
I get this error :
root@s15:/home/wmz3# php test1.php
PHP Fatal error: Uncaught exception 'Exception' with message 'Hash check failed. Key file seems to be corrupted.' in /home/wmz3/vendor/baibaratsky/php-wmsigner/Signer.php:53
Stack trace:
#0 /home/wmz3/test1.php(14): baibaratsky\WebMoney\Signer->__construct('XXXX10261095', 'XXXX10261095.kw...', 'Password1234!@#...')
#1 {main}
thrown in /home/wmz3/vendor/baibaratsky/php-wmsigner/Signer.php on line 53
root@s15:/home/wmz3#
On this script :
https://github.com/baibaratsky/php-webmoney/wiki/X3
I have double check the WMID and PASS ... with those crededentials i enter my account.
The KVM file was creeated from my computer and i am trying to use the key from my server (Ubuntu 14.04.2 LTS). What i am doing wrong? Please help me.
Thanks.
I got error when Adding the php-webmoney dependency:
root@do [/home/the247/public_html/wmzapi]# php composer.phar require baibaratsky/php-webmoney:0.10.*
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.
Problem 1
- The requested package baibaratsky/php-webmoney 1.0.0 could not be found.
Potential causes:
- A typo in the package name
- The package is not available in a stable-enough version according to your minimum-stability setting
see <https://groups.google.com/d/topic/composer-dev/_g3ASeIFlrc/discussion> for more details.
Read <http://getcomposer.org/doc/articles/troubleshooting.md> for further common problems.
Installation failed, reverting ./composer.json to its original content.
root@do [/home/the247/public_html/wmzapi]#
Hello,
Thank you for this amazing library,
Every few days (not always) I have something like this logged into error_logs:
ERROR - 2016-11-26 02:48:02 --> Severity: Warning --> SimpleXMLElement::__construct(): Entity: line 6: parser error : Opening and ending tag mismatch: hr line 5 and body /path/w_money/Api/X/X9/Response.php 24
ERROR - 2016-11-26 02:48:02 --> Severity: Warning --> SimpleXMLElement::__construct(): </body> /path/w_money/Api/X/X9/Response.php 24
ERROR - 2016-11-26 02:48:02 --> Severity: Warning --> SimpleXMLElement::__construct(): ^ /path/w_money/Api/X/X9/Response.php 24
ERROR - 2016-11-26 02:48:02 --> Severity: Warning --> SimpleXMLElement::__construct(): Entity: line 7: parser error : Opening and ending tag mismatch: body line 3 and html /path/w_money/Api/X/X9/Response.php 24
ERROR - 2016-11-26 02:48:02 --> Severity: Warning --> SimpleXMLElement::__construct(): </html> /path/w_money/Api/X/X9/Response.php 24
ERROR - 2016-11-26 02:48:02 --> Severity: Warning --> SimpleXMLElement::__construct(): ^ /path/w_money/Api/X/X9/Response.php 24
ERROR - 2016-11-26 02:48:02 --> Severity: Warning --> SimpleXMLElement::__construct(): Entity: line 8: parser error : Premature end of data in tag html line 1 /path/w_money/Api/X/X9/Response.php 24
ERROR - 2016-11-26 02:48:02 --> Severity: error --> Exception: String could not be parsed as XML /path/w_money/Api/X/X9/Response.php 24
Another Example
ERROR - 2016-11-22 15:28:24 --> Severity: Warning --> SimpleXMLElement::__construct(): Entity: line 1: parser error : Space required after the Public Identifier /path/w_money/Api/X/X2/Response.php 63
ERROR - 2016-11-22 15:28:24 --> Severity: Warning --> SimpleXMLElement::__construct(): <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/str /path/w_money/Api/X/X2/Response.php 63
ERROR - 2016-11-22 15:28:24 --> Severity: Warning --> SimpleXMLElement::__construct(): ^ /path/w_money/Api/X/X2/Response.php 63
ERROR - 2016-11-22 15:28:24 --> Severity: Warning --> SimpleXMLElement::__construct(): Entity: line 3: parser error : Opening and ending tag mismatch: META line 3 and HEAD /path/w_money/Api/X/X2/Response.php 63
ERROR - 2016-11-22 15:28:24 --> Severity: Warning --> SimpleXMLElement::__construct(): <META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD> /path/w_money/Api/X/X2/Response.php 63
ERROR - 2016-11-22 15:28:24 --> Severity: Warning --> SimpleXMLElement::__construct(): ^ /path/w_money/Api/X/X2/Response.php 63
ERROR - 2016-11-22 15:28:24 --> Severity: Warning --> SimpleXMLElement::__construct(): Entity: line 6: parser error : Opening and ending tag mismatch: hr line 5 and BODY /path/w_money/Api/X/X2/Response.php 63
ERROR - 2016-11-22 15:28:24 --> Severity: Warning --> SimpleXMLElement::__construct(): </BODY></HTML> /path/w_money/Api/X/X2/Response.php 63
ERROR - 2016-11-22 15:28:24 --> Severity: Warning --> SimpleXMLElement::__construct(): ^ /path/w_money/Api/X/X2/Response.php 63
ERROR - 2016-11-22 15:28:24 --> Severity: Warning --> SimpleXMLElement::__construct(): Entity: line 6: parser error : Opening and ending tag mismatch: BODY line 4 and HTML /path/w_money/Api/X/X2/Response.php 63
ERROR - 2016-11-22 15:28:24 --> Severity: Warning --> SimpleXMLElement::__construct(): </BODY></HTML> /path/w_money/Api/X/X2/Response.php 63
ERROR - 2016-11-22 15:28:24 --> Severity: Warning --> SimpleXMLElement::__construct(): ^ /path/w_money/Api/X/X2/Response.php 63
ERROR - 2016-11-22 15:28:24 --> Severity: Warning --> SimpleXMLElement::__construct(): Entity: line 7: parser error : Premature end of data in tag HEAD line 2 /path/w_money/Api/X/X2/Response.php 63
ERROR - 2016-11-22 15:28:24 --> Severity: Warning --> SimpleXMLElement::__construct(): Entity: line 7: parser error : Premature end of data in tag HTML line 2 /path/w_money/Api/X/X2/Response.php 63
ERROR - 2016-11-22 15:28:24 --> Severity: error --> Exception: String could not be parsed as XML /path/w_money/Api/X/X2/Response.php 63
Is this an issue I should be worried about?
(Sorry for posting this on wm-signer first, was a mistake)
i want to integrate webmoney payment gateway can you help
после переезда с WMXI интерфейс X19 перестал корректно работать. Всегда возвращается ошибка 404 (указанные параметры не соответствуют участнику системы userinfo/wmid).Решил сравнить результаты "сырого" xml, формируемого вашей библиотекой и WMXI/
php-webmoney:
<passport.request>
<reqn>143220935598189</reqn>
<signerwmid>WMID</signerwmid>
<sign>SIGN
</sign>
<operation>
<type>4</type>
<direction>1</direction>
<pursetype>WMR</pursetype>
<amount>175.00</amount>
</operation>
<userinfo>
<wmid>USER_WMID</wmid>
<fname>Петр</fname>
<iname>Петрович</iname>
<bank_name>ПриватБанк</bank_name>
<card_number>CARD_NUMBER</card_number>
</userinfo>
</passport.request>
wmxi:
<passport.request>
<reqn>143221039973991</reqn>
<signerwmid>WMID</signerwmid>
<sign>SIGN
</sign>
<operation>
<type>card</type>
<direction>output</direction>
<pursetype>WMR</pursetype>
<amount>175.00</amount>
</operation>
<userinfo>
<wmid>USER_WMID</wmid>
<pnomer></pnomer>
<fname>Синявский</fname>
<iname>Сергей</iname>
<bank_name>ПриватБанк</bank_name>
<bank_account></bank_account>
<card_number>CARD_NUMBER</card_number>
<emoney_name></emoney_name>
<emoney_id></emoney_id>
</userinfo>
</passport.request>
Данные пользователя корреткные 100%, xml генерируемый WMXI возвращает retval=0
Изменения внесенные 2 августа не добавлены в версию, можно плз накатить новую.
Еще раз спасибо за либу
`
$webMoney = new WebMoney(new CurlRequester);
$request = new X3\Request;
$request->setSignerWmid('233429976456');
$request->setPurse('R295646368242');
$request->setStartDateTime(new DateTime('-1 year'));
$request->setEndDateTime(new DateTime);
$request->sign(new Signer( '233429976456', '/var/www/233429976456.kwm', 'passwd'));
if ($request->validate()) {
/** @var X3\Response $response */
$response = $webMoney->request($request);
if ($response->getReturnCode() === 0) {
echo '<h1>Transactions</h1>';
echo '<ul>';
foreach ($response->getOperations() as $operation) {
echo '<li>' . $operation->getTransactionId() . ': ' . $operation->getAmount() . ' '
. $operation->getPayerPurse() . '→' . $operation->getPayeePurse() . '</li>';
}
echo '</ul>';
} else {
echo 'Error: ' . $response->getReturnDescription();
}
} else {
echo 'Request errors: ' . PHP_EOL;
foreach ($request->getErrors() as $error) {
echo ' - ' . $error . PHP_EOL;
}
}
`
baibaratsky\WebMoney\Exception\RequesterException
Error while performing request (Unknown SSL protocol error in connection to w3s.webmoney.ru:443 )
How can this be fixed?
Здравствуйте, работа с интерфейсом X2 работает с попеременным успехом: иногда всё отрабатывает корректно, а иногда валится ошибка:
http://img.netpeak.ua/chinaski/2016-08-12_74c912.jpg
Как вы видите, комментарии есть как на латинице, так и на кириллице. Никак не могу найти причину бага, гуглил - везде у всех ошибки step=5, а у меня еще и step=6. Можете помочь? Заранее спасибо!
Краткое описание интерфейсов http://wmxml.narod.ru/
Мне кажется излишним хранить $_xml
как свойство класса. Предлагаю просто пользоваться локальной переменной в методе getXml()
. В таком случае необходимо переработать метод _addElementToXml()
, возможно, как-то так:
_addElementToXml($xml, $name, $value)
Какие есть мысли на этот счет?
Добрый день!
При использовании протокола X2 не использую код протекции
$request = new X2\Request;
$request->setRequestNumber($requestNumber);
$request->setTransactionExternalId($payoutId);
$request->setPayeePurse($payeeAccount);
$request->setAmount($payeeAmount);
$request->setDescription($description);
$request->setPayerPurse($payerPurse);
$request->setSignerWmid($payerWmid);
$request->sign(new Signer($payerWmid, $keyPath, $keyPassword));
Отправляется запрос (кошелки заменены на нереальные):
<w3s.request>
<reqn>212104191103035</reqn>
<wmid>wmid</wmid>
<sign>
2ba837cd2a97a9827f512d88ea7e400f3473bcfda03e0e6690e9fbc270cb4b7351df2a9ff77bdb6bfbe0f2b794856437a957b341d7a9f48dca6ce89e4e19b0be1c5a
</sign>
<trans>
<tranid>1555000025</tranid>
<pursesrc>Z111111111111</pursesrc>
<pursedest>Z222222222222</pursedest>
<amount>0.10</amount>
<period>0</period>
<desc>test repayment</desc>
<wminvid>0</wminvid>
<onlyauth>1</onlyauth>
</trans>
</w3s.request>
В ответ получаю ошибку:
<w3s.response>
<reqn>212104191103035</reqn>
<retval>-14</retval>
<retdesc>signature is incorrect. planstr=2121041911030351555000025Z111111111111Z2222222222220.10test repayment0
step=5
</retdesc>
</w3s.response>
Платеж проходит корректно после установки пустой строки для кода протекции:
$request->setProtectionPeriod('');
В данном случае в теле запроса отсутствует тег <period>0</period>
и платеж проходит успешно
Здравствуйте, подскажите, пожалуйста, где взять значение trans\wminvid ?
В описание интерфейса сказано следующее - trans\wminvid - это номер счета (в системе WebMoney), по которому выполняется перевод, целое число > 0; если 0 - перевод не по счету.
Устанавливается он функцией $request->setInvoiceId(0);
Если указывать wminvid равным 0, то перевод как будто происходит, в ответ приход код ответа - 0 и id транзакции, но на самом деле деньги не списываются с кошелька и не поступают на другой кошелек.
Спасибо.
Возникли проблемы с использованием интерфейса X4. Запрос следующего вида:
<w3s.request>
<reqn>148400317916191</reqn>
<getoutinvoices>
<purse>R*********</purse>
<wminvid>123456789</wminvid>
<datestart>20170110 00:48:06</datestart>
<datefinish>20170110 00:48:06</datefinish>
</getoutinvoices>
</w3s.request>
Ответ:
<?xml version="1.0"?>
<w3s.response>
<reqn>148400317916191</reqn>
<retval>-1</retval>
<retdesc>wrong wmid of signer step=3</retdesc>
</w3s.response>
Решение проблемы:
https://wiki.webmoney.ru/projects/webmoney/wiki/%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_X4
URL для передачи запроса с авторизацией по ключам WM Keeper WebPro (Light) - https://w3s.wmtransfer.com/asp/XMLOutInvoicesCert.asp
При этом в коде запросы идут на другой домен
WebMoney\Api\X\X4\Request.php
https://w3s.wmtransfer.com/asp/XMLOutInvoicesCert.asp
Аналогичная ситуация, судя по всему, и по другим интерфейсам. Но они почему-то работают.
Пропишите плз в доках где-то, что при работе с сертификатами light недостаточно закоментить sign и раскоментить cert, надо еще указать authType при создании объекта Request
в моем случае, я решил это так
$request = new X3\Request("light");
Полдня убил на борьбу с сертификатами, пока не сообразил что дело в URL, подставлялся
https://w3s.webmoney.ru/asp/XMLOperations.asp #AUTH_CLASSIC.
вместо
https://w3s.wmtransfer.com/asp/XMLOperationsCert.as #AUTH_LIGHT
При этом вываливалась ошибка
Error: signature is incorrect.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.