PHP soapclient请求在Transaction Express中具有长值

时间:2018-09-20 12:30:26

标签: php soap

Am使用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,则钱包ID更改了
从(发送)1537444446788162467(肥皂)1537444446788162560

如何解决?

1 个答案:

答案 0 :(得分:1)

我会在这里进行猜测,但是如果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