SoapFault exception: [HTTP] Bad Request In eway

匿名 (未验证) 提交于 2019-12-03 07:50:05

问题:

I am going to integrate the eway token payment integration and i am facing this problem.

SoapFault exception: [HTTP] Bad Request 

the wsdl file is here

https://www.eway.com.au/gateway/ManagedPaymentService/managedCreditCardPayment.asmx?wsdl 

and the xml format is here

https://www.eway.com.au/gateway/ManagedPaymentService/test/managedcreditcardpayment.asmx?op=CreateCustomer 

and i get the xml file with $client->__getLastRequest(); script is

<?xml version="1.0" encoding="UTF-8"?> <env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="https://www.eway.com.au/gateway/managedpayment" xmlns:ns2="eWAYHeader"> <env:Header> <ns2:http://www.eway.com.au/gateway/managedPayment> <item> <key>eWAYCustomerID</key><value>87654321</value> </item> <item><key>Username</key><value>test@eway.com.au</value> </item> <item><key>Password</key><value>test123</value> </item> </ns2:http://www.eway.com.au/gateway/managedPayment> </env:Header><env:Body> <ns1:CreateCustomer> <ns1:Title>Mr.</ns1:Title> <ns1:FirstName>Joe</ns1:FirstName> <ns1:LastName>Bloggs</ns1:LastName> <ns1:Address>Bloggs Enterprise</ns1:Address> <ns1:Suburb>Capital City</ns1:Suburb> <ns1:State>ACT</ns1:State> <ns1:Company>Bloggs</ns1:Company> <ns1:PostCode>2111</ns1:PostCode> <ns1:Country>au</ns1:Country> <ns1:Email>test@eway.com.au</ns1:Email> <ns1:Fax>0298989898</ns1:Fax> <ns1:Phone>0297979797</ns1:Phone> <ns1:Mobile>9841381980</ns1:Mobile> <ns1:CustomerRef>Ref123</ns1:CustomerRef> <ns1:JobDesc>Web developer</ns1:JobDesc> <ns1:Comments>Please Ship ASASP</ns1:Comments> <ns1:URL>http://www.test.com.au</ns1:URL> <ns1:CCNumber>4444333322221111</ns1:CCNumber> <ns1:CCNameOnCard>Test Account </ns1:CCNameOnCard> <ns1:CCExpiryMonth>1</ns1:CCExpiryMonth> <ns1:CCExpiryYear>13</ns1:CCExpiryYear> </ns1:CreateCustomer> </env:Body> </env:Envelope> 

Is there both xml structure effets to soap:

Or is this something like problem of soap header?

i have set header like this

$data = array('eWAYCustomerID'=>'87654321',                 'Username' => "test@eway.com.au",                  'Password' => "test123"                  );  $header = new SoapHeader('eWAYHeader',$url,$data);  $client->__setSoapHeaders($header); 

I am getting:

SoapFault exception: [HTTP] Bad Request in D:\wamp\www\eway\newfile.php:196 Stack trace: #0 [internal function]: SoapClient->__doRequest('__call('CreateCustomer', Array) #2 D:\wamp\www\eway\newfile.php(196): SoapClient->CreateCustomer(Array) #3 {main} 

This error always while i call this function

$customerinfo =          array(         'Title'=>'Mr.',         'FirstName' => 'Joe',         'LastName'=>'Bloggs',         'Address'=>'Bloggs Enterprise',         'Suburb'=>'Capital City',         'State'=>'ACT',         'Company'=>'Bloggs',         'PostCode'=>'2111',         'Country'=>'au',         'Email'=>'test@eway.com.au',         'Fax'=>'0298989898',         'Phone'=>'0297979797',         'Mobile'=>'9841381980',         'CustomerRef'=>'Ref123',         'JobDesc'=>'Web developer',         'Comments'=>'Please Ship ASASP',         'URL'=>'http://www.test.com.au',         'CCNumber'=>'4444333322221111',         'CCNameOnCard'=>'Test Account ',         'CCExpiryMonth'=>'01',         'CCExpiryYear'=>'13'  );  $client->CreateCustomer($customerinfo); 

Any help will be more valuable.

Thanks in advance.

回答1:

Try to use the following code instead:

<?php $apiUrl         = 'https://www.eway.com.au/gateway/ManagedPaymentService/test/managedcreditcardpayment.asmx?WSDL'; $options        = array( 'trace' => 1, 'exceptions' => 1); try{     $client     = new SoapClient($apiUrl, $options);     $data       = array(         'eWAYCustomerID'    => '87654321',         'Username'          => "test@eway.com.au",         'Password'          => "test123"     );      $header = new SoapHeader('https://www.eway.com.au/gateway/managedpayment', 'eWAYHeader', $data, false);     $client->__setSoapHeaders($header);      $customerinfo =  array(             'Title'=>'Mr.',             'FirstName' => 'Joe',             'LastName'=>'Bloggs',             'Address'=>'Bloggs Enterprise',             'Suburb'=>'Capital City',             'State'=>'ACT',             'Company'=>'Bloggs',             'PostCode'=>'2111',             'Country'=>'au',             'Email'=>'test@eway.com.au',             'Fax'=>'0298989898',             'Phone'=>'0297979797',             'Mobile'=>'9841381980',             'CustomerRef'=>'Ref123',             'JobDesc'=>'Web developer',             'Comments'=>'Please Ship ASASP',             'URL'=>'http://www.test.com.au',             'CCNumber'=>'4444333322221111',             'CCNameOnCard'=>'Test Account ',             'CCExpiryMonth'=>'01',             'CCExpiryYear'=>'13'      );      $result = $client->CreateCustomer($customerinfo);     var_dump($result);  }catch(Exception $e){     echo $e->getMessage(); } 

which worked for me.

Notes:
1. Always try to wrap the code in try{} catch{} block
2. Make sure to check php_openssl extension is enabled or not
3. Disable the wsdl cache & enable the exceptions
4. Note the SoapHeader constructor.

Hope this helps you.
Regards



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!