PHP-запрос мыльного клиента с длинным значением в Transaction Express - PullRequest
0 голосов
/ 20 сентября 2018

Я использую php5.6 win: 8.1

Невозможно осуществить продажу кошелька через SOAP-клиент.

Мой массив запросов типа

([reqAmt] => 025000
[recurMan] => Array  ([id] => 1537444446788162467
 )
[merc] => Array(
    [id] => 1223234234
    [regKey] => adsds23234343
    [inType] => 1
    [prodType] => 5
)
[tranCode] => 0
)

Но последний отправленный запрос напечатан

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:ns1="http://postilion/realtime/merchantframework/xsd/v1/">
<SOAP-ENV:Body><ns1:SendTranRequest>
<ns1:merc>
<ns1:id>1223234234</ns1:id>
<ns1:regKey>adsds23234343</ns1:regKey>
<ns1:inType>1</ns1:inType>
<ns1:prodType>5</ns1:prodType>
</ns1:merc>
<ns1:tranCode>0</ns1:tranCode>
<ns1:reqAmt>025000</ns1:reqAmt>
<ns1:recurMan>
<ns1:id>2147483647</ns1:id>
</ns1:recurMan>
</ns1:SendTranRequest>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>  

Если я конвертирую в float до отправленного запроса, то идентификатор кошелька изменится
с (отправить) 1537444446788162467 (мыло) 1537444446788162560

Как решить это?

1 Ответ

0 голосов
/ 20 сентября 2018

Я приму здесь предположение, но если конечная точка SOAP действительно ожидает Int, а не Float, то я предполагаю, что вы используете 32-битную версию PHP.

32-битнаяверсия PHP имеет PHP_INT_MAX значение 2147483647.

32-битная версия PHP имеет PHP_INT_MAX значение 9223372036854775807.

http://php.net/manual/en/language.types.integer.php

Если это так, я надеюсь, что ваша Windows 64-битная!Обновите свою установку PHP.

ОБНОВЛЕНИЕ.

Хорошо, вы прокомментировали, что «WSDL ожидает долго, используя 64-битный PHP».Поэтому он отклонит целое число!Так что просто сделай это поплавком!

 'id' => (float) 7777778541
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...