Перейти к содержимому


Фотография

Интрефейс X14: ошибка возврата средств


  • Пожалуйста, авторизуйтесь для ответа.
5 ответов в данной теме

#1 Пользователь Serjan (WMID 262002484771 )

  • Группа: Пользователи
  • сообщений 7
  • Регистрация: 09-января 15
  • Webmoney BL

Отправлено 07 июля 2015 - 09:00

Доброго времени суток.

Дорабатываю скрипт обменника. Для работы с интерфейсами webmoney обменник использует вот эту библиотеку http://sourceforge.net/projects/wmxi/.

Клиент хочет автоматический ворврат средств при ошибке автообмена через биржу.

Для этого задействовал интерфейс Х14 в качесве параметров передаюему
Внутренний номер платежа в системе WebMoney Transfer (LMI_SYS_TRANS_NO) и сумму возврата.

вот содержание запроса

<?xml version="1.0"?>
<w3s.request>
    <reqn>143622257265667</reqn>
    <wmid>778284995493</wmid>
    <sign>b0de8884fae9bf0ce988b539cee489c8761be7397e94326c36b82847e062aac4160f992d1d0062c1e1c3f4f6b02945d06f78d3d60fc4d7c7ab50d61e9f1aacd503b1</sign>
    <trans>
        <inwmtranid>1209162446</inwmtranid>
        <amount>200.00</amount>
    </trans>
</w3s.request>

а вот ответ сервиса

<?xml version="1.0"?>
<w3s.response>
	<reqn>143622257265667</reqn>
	<retval>-14</retval>
	<retdesc>signature is incorrect. planstr=1436222572656671209162446200 step=5</retdesc>
</w3s.response>

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


    • 0
  • Наверх

#2 Знаток ^-^ (WMID 273407224562 )

  • Группа: Пользователи
  • сообщений 6 059
  • Регистрация: 10-сентября 13
  • Webmoney BL

Отправлено 07 июля 2015 - 11:35

Доброго.

 

Ошибка "-14" говорит о "проверка подписи не прошла". А URL для передачи запроса указан верный?


Бесплатный SSL на 3 мес. / Сертификат SSL от 299 руб.
    • 0
  • Наверх

#3 Пользователь Serjan (WMID 262002484771 )

  • Группа: Пользователи
  • сообщений 7
  • Регистрация: 09-января 15
  • Webmoney BL

Отправлено 07 июля 2015 - 23:42

урл правильный запрос отсылается сюда https://w3s.webmoney...nsMoneyback.asp
вот код метода
 

    public function X14($inwmtranid, $amount)
    {
        $reqn      = $this->_reqn();
        $req       = new SimpleXMLElement('<w3s.request/>');
        $req->reqn = $reqn;

        if ($this->classic) {
            $req->wmid = $this->wmid;
            $req->sign = $this->_sign($reqn . $inwmtranid . $amount);
        }
        $group                   = 'trans';
        $req->$group->inwmtranid = $inwmtranid;
        $req->$group->amount     = $amount;
        $url                     = $this->classic ? 'https://w3s.webmoney.ru/asp/XMLTransMoneyback.asp'
                : 'https://w3s.wmtransfer.com/asp/XMLTransMoneybackCert.asp';

        return $this->_request($url, $req->asXML(), __FUNCTION__);
    }

    • 0
  • Наверх

#4 Знаток ^-^ (WMID 273407224562 )

  • Группа: Пользователи
  • сообщений 6 059
  • Регистрация: 10-сентября 13
  • Webmoney BL

Отправлено 09 июля 2015 - 00:27

А при помощи этой библиотеки не пробовали работоспособность X14?


Бесплатный SSL на 3 мес. / Сертификат SSL от 299 руб.
    • 0
  • Наверх

#5 Пользователь Serjan (WMID 262002484771 )

  • Группа: Пользователи
  • сообщений 7
  • Регистрация: 09-января 15
  • Webmoney BL

Отправлено 09 июля 2015 - 00:58

Нет не пробовал, но дело не в библиотеке. Все оказалось гораздо проще: передаваемую сумму нужно пропускать через php-функцию floatval и тогда 10.00 -> 10 ,   7.30 -> 7.3 и все замечательно работает.


    • 1
  • Наверх

#6 Знаток ^-^ (WMID 273407224562 )

  • Группа: Пользователи
  • сообщений 6 059
  • Регистрация: 10-сентября 13
  • Webmoney BL

Отправлено 09 июля 2015 - 11:16

Оу..
В X1 есть описание данного параметра

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

Бесплатный SSL на 3 мес. / Сертификат SSL от 299 руб.
    • 1
  • Наверх