baibaratsky / php-webmoney

WebMoney API PHP Library
Other
73 stars 32 forks source link

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

Closed vvovnenko closed 8 years ago

vvovnenko commented 8 years ago

Добрый день!

При использовании протокола 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>

В ответ получаю ошибку: <?xml version="1.0" encoding="windows-1251"?>

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

baibaratsky commented 8 years ago

Добрый день! Видимо, WebMoney изменили API. В ближайшее время внесу соответствующие исправления.

chuprik commented 8 years ago

Андрей, видимо, надо пинать саппорт. Потому что документация так и не изменилась, 0 — если протекция не нужна. Как бы не вышло, что через несколько дней вернется старая логика.

baibaratsky commented 8 years ago

@kotchuprik Да, я так и хотел. К сожалению, пока совсем не до этого.

@gydween Может, уточните у саппорта WebMoney, что сейчас актуально?

vvovnenko commented 8 years ago

Хорошо, поробую уточнить

chuprik commented 8 years ago

Только чтобы сэкономить время, рекомендую все запросы сразу им дать :) Они тормознее Почты России, некоторые проблемы можно неделю решать.

vvovnenko commented 8 years ago

@kotchuprik Спасибо за рекомендацию! Отписал им

vvovnenko commented 8 years ago

Webmoney ответили (как оказалось быстро)

Проблема с моей стороны. Не верно форматирую сумму платежа. (число с плавающей точкой (разделитель - .(точка) ) и для десяти с половиной может выглядеть так: 10.5; незначащие нули в конце и точка, если число целое, должны отсутствовать, например, 10.50 - не верно, 10.5 - верно, 9. - не верно, 9 - верно))

Т.е. сумма 0.10 должна передаваться интерфейсу как float 0.1, я же передавал как форматированную строку, и из-за этого вся проблема

Всем спасибо!

chuprik commented 8 years ago

Интересный случай :)

baibaratsky commented 8 years ago

Передаваться они, думаю, могут в любом виде, но для вычисления подписи будет использоваться float.