Git Product home page Git Product logo

php-webmoney's People

Contributors

baibaratsky avatar chuprik avatar den4x avatar fedorovvldmr avatar grandmotivator avatar iginikolaev avatar mastermind-ua avatar mitalcoi avatar nikolaysav avatar roman-rybalko avatar ryazanov13 avatar shahabbahmani avatar stas17 avatar vitalijssilins avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

php-webmoney's Issues

Работа с сертификатом от Keeper Lite

По какой-то причине не выходит работать с сертификатом 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 );
....

В чём может быть причина такого поведения?

WMApiRequest::AUTH_MD5 и WMApiRequest::AUTH_SECRET_KEY

В ближайшее время я добавлю X18, в котором, кроме AUTH_CLASSIC, возможно подписывание запроса MD5 или передача secret_key. Может, есть смысл генерить ошибку, если другим интерфейсам передан такой параметр. Либо в кострукторе, либо в getUrl(). Опять же, если выдавать ошибку в конструкторе, то есть смысл устанавливать там значение свойства $_url, а в getUrl() просто возвращать его. Это, кстати, и логичнее, так как url у нас зависит от того, что передано в конструктор, и потом не меняется.

X2 - ошибка валидации onlyauth

В интерфейсе X2 в запросе при присвоении onlyauth принудительно приводится к (bool), а поскольку для X2 он обязателен - validateRequired проверяет его на is_numeric(), что приводит к ошибке валидации в любом случае. Поскольку в доках вебманей возможные значения указаны как 0 и 1, думаю, проще всего приводить его к (int)

Ошибка подписи

не получается использовать X2 - следующая ошибка: "signature is incorrect. planstr=<строка> step=5" Auth type у нас - classic, проблема именно в том как подпись формируется. на WMXI(библиотека, которую раньше использовали) все подписывалось нормально. при этом остальные интерфейсы (например X9) работают нормально.

WMRequestSigner: WMID

Что-то мне не очень нравится, что у нас WMID нужно сначала в конструктор WMRequestSigner передавать, а потом еще в запрос. Может, как-то отрефакторим?
Только мне бы не хотелось убирать WMID из конструктора WMRequestSigner, чтобы его можно было использовать автономно, без привязки к остальной библиотеке.

реализация сертификата Webmoney

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

Пытаюсь воспользоваться интерфейсом 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>

реализация toArray в 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

для работы с x19 обязательно нужен kwm файл или достаточно light_auth (key, cer, pass)

fullAccess -> fullaccess

class WMX11Response строка 54 нужно написать все слово в нижнем регистре, как оно приходит от wm

X1 validation

Webmoney X1 required no gap at the start/end of description and required win-1251 encoding (field invoice\desc), can you fix this

Снова Unknown SSL protocol error in connection to w3s.webmoney.ru:443

На этот раз уже явно не в библиотеке, но где ещё найти людей которые наступали на эти грабли?

Суть - локально у себя я получаю эту ошибку. 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>

Certificate -> Passport

В терминологии WM аттестат по-английски называется «passport».

Проблемы с SSL в CurlRequester.

#90

Снова здравствуйте.
При установке версии 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.

X18: pursefrom

http://wiki.webmoney.ru/projects/webmoney/wiki/%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_X18

Назвал параметр pursefrom как

    /** @var string operation/pursefrom */
    protected $_payerPurse;

Но есть одна загвоздка:

Обратите внимание, что при платеже через терминалы или банкоматы, либо чеком Пеймер или ВМ-картой, в качестве кошелька плательщика будет передан кошелек соответствующего шлюза или сервиса Пеймер.

То есть в таком случае это уже не кошелек плательщика. Вот теперь думаю.
Может, надо переименовать?

Uncaught exception 'Exception' with message 'Hash check failed. Key file seems to be corrupted.'

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.

Add the php-webmoney dependency error

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]#

Issue with SimpleXMLElement

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(): &lt;/body&gt; /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(): &lt;/html&gt; /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(): &lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01//EN&quot;&quot;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(): &lt;META HTTP-EQUIV=&quot;Content-Type&quot; Content=&quot;text/html; charset=us-ascii&quot;&gt;&lt;/HEAD&gt; /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(): &lt;/BODY&gt;&lt;/HTML&gt; /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(): &lt;/BODY&gt;&lt;/HTML&gt; /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)

X19 не работает корректно

после переезда с 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>&#x421;&#x438;&#x43D;&#x44F;&#x432;&#x441;&#x43A;&#x438;&#x439;</fname>
                <iname>&#x421;&#x435;&#x440;&#x433;&#x435;&#x439;</iname>
                <bank_name>&#x41F;&#x440;&#x438;&#x432;&#x430;&#x442;&#x411;&#x430;&#x43D;&#x43A;</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 августа не добавлены в версию, можно плз накатить новую.

Еще раз спасибо за либу

Error while performing request (Unknown SSL protocol error in connection to w3s.webmoney.ru:443 )

`
$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 / Signature is incorrect / Step=6

Здравствуйте, работа с интерфейсом X2 работает с попеременным успехом: иногда всё отрабатывает корректно, а иногда валится ошибка:
http://img.netpeak.ua/chinaski/2016-08-12_74c912.jpg

Как вы видите, комментарии есть как на латинице, так и на кириллице. Никак не могу найти причину бага, гуглил - везде у всех ошибки step=5, а у меня еще и step=6. Можете помочь? Заранее спасибо!

_addElementToXml()

Мне кажется излишним хранить $_xml как свойство класса. Предлагаю просто пользоваться локальной переменной в методе getXml(). В таком случае необходимо переработать метод _addElementToXml(), возможно, как-то так:

_addElementToXml($xml, $name, $value)

Какие есть мысли на этот счет?

X2 без кода протекции

Добрый день!

При использовании протокола 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> и платеж проходит успешно

Интерфейс X2, trans\wminvid

Здравствуйте, подскажите, пожалуйста, где взять значение trans\wminvid ?

В описание интерфейса сказано следующее - trans\wminvid - это номер счета (в системе WebMoney), по которому выполняется перевод, целое число > 0; если 0 - перевод не по счету.

Устанавливается он функцией $request->setInvoiceId(0);
Если указывать wminvid равным 0, то перевод как будто происходит, в ответ приход код ответа - 0 и id транзакции, но на самом деле деньги не списываются с кошелька и не поступают на другой кошелек.

Спасибо.

Проблемы с авторизацией AUTH_LIGHT

Возникли проблемы с использованием интерфейса 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

Аналогичная ситуация, судя по всему, и по другим интерфейсам. Но они почему-то работают.

AUTH_LIGHT

Пропишите плз в доках где-то, что при работе с сертификатами 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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.