Eway沙盒网关CURL

时间:2012-06-19 09:33:13

标签: php xml soap

我正在开发一个与Eway连接的网站。我试图在Sandbox中创建一个Rebill客户。但是电话中有些错误。有人可以帮助我。

这是来源的网址

http://pastebin.com/NJgmVPFL

3 个答案:

答案 0 :(得分:2)

我在

中遇到语法错误

<customerState>ACT<</customerState>

当这个额外的小于删除时,我的原始代码工作。

工作代码。

`

$url = "https://www.eway.com.au/gateway/rebill/test/manageRebill_test.asmx";

$post_string = '<?xml version="1.0" encoding="utf-8"?>
                                <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
                                  <soap:Header>
                                        <eWAYHeader xmlns="http://www.eway.com.au/gateway/rebill/manageRebill">
                                          <eWAYCustomerID>9194****</eWAYCustomerID>
                                          <Username>******@********d.com.sand</Username>
                                          <Password>S******55</Password>
                                        </eWAYHeader>
                                  </soap:Header>
                                  <soap:Body>
                                        <CreateRebillCustomer xmlns="http://www.eway.com.au/gateway/rebill/manageRebill">
                                          <customerTitle>Mr</customerTitle>
                                          <customerFirstName>Achintha</customerFirstName>
                                          <customerLastName>Samindika</customerLastName>
                                          <customerAddress>SID Designs</customerAddress>
                                          <customerSuburb>Colombo</customerSuburb>
                                          <customerState>ACT</customerState>
                                          <customerCompany>SID Con</customerCompany>
                                          <customerPostCode>2111</customerPostCode>
                                          <customerCountry>Australia</customerCountry>
                                          <customerEmail>a****@ymail.com</customerEmail>
                                          <customerFax>0298989898</customerFax>
                                          <customerPhone1>0298989558</customerPhone1>
                                          <customerPhone2>0295489898</customerPhone2>
                                          <customerRef>REF585</customerRef>
                                          <customerJobDesc>Dev</customerJobDesc>
                                          <customerComments>Please Ship ASASP</customerComments>
                                          <customerURL>www.****.com</customerURL>
                                        </CreateRebillCustomer>
                                  </soap:Body>
                                </soap:Envelope>';


$header  = "POST /gateway/rebill/test/manageRebill_test.asmx HTTP/1.1 \r\n";
$header .= "Host: www.eway.com.au \r\n";
$header .= "Content-Type: text/xml; charset=utf-8 \r\n";
$header .= "Content-Length: ".strlen($post_string)." \r\n";
//$header .= 'SOAPAction: "http://www.eway.com.au/gateway/rebill/manageRebill/CreateRebillCustomer"'. "\r\n";
$header .= "Connection: close \r\n\r\n";
$header .= $post_string;

$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_URL,$url);

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $header);

$data = curl_exec($ch);
$status = curl_getinfo($ch);

if(curl_errno($ch))
        print curl_error($ch);
else{
        curl_close($ch);

        echo '<pre>';
        print_r($data);
        print_r($status);
        echo '</pre>';
        //echo '<div align="center"><h3>Thank you.</h3></div>';
}
?>`

答案 1 :(得分:0)

你能试试吗?修改了一些标题。

<?php
$url = 'https://www.eway.com.au/gateway/rebill/test/manageRebill_test.asmx';
$post_string = "<?xml version=\"1.0\" encoding=\"utf-8\"?>
                <soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">
                  <soap:Header>
                        <eWAYHeader xmlns=\"http://www.eway.com.au/gateway/rebill/manageRebill\">
                          <eWAYCustomerID>9194****</eWAYCustomerID>
                          <Username>******@********d.com.sand</Username>
                          <Password>S******55</Password>
                        </eWAYHeader>
                  </soap:Header>
                  <soap:Body>
                        <CreateRebillCustomer xmlns=\"http://www.eway.com.au/gateway/rebill/manageRebill\">
                          <customerTitle>Mr</customerTitle>
                          <customerFirstName>Achintha</customerFirstName>
                          <customerLastName>Samindika</customerLastName>
                          <customerAddress>SID Designs</customerAddress>
                          <customerSuburb>Colombo</customerSuburb>
                          <customerState>ACT<</customerState>
                          <customerCompany>SID Con</customerCompany>
                          <customerPostCode>2111</customerPostCode>
                          <customerCountry>Australia</customerCountry>
                          <customerEmail>a****@ymail.com</customerEmail>
                          <customerFax>0298989898</customerFax>
                          <customerPhone1>0298989558</customerPhone1>
                          <customerPhone2>0295489898</customerPhone2>
                          <customerRef>REF585</customerRef>
                          <customerJobDesc>Dev</customerJobDesc>
                          <customerComments>Please Ship ASASP</customerComments>
                          <customerURL>www.****.com</customerURL>
                        </CreateRebillCustomer>
                  </soap:Body>
                </soap:Envelope>";

    $headers    = array(
        "Content-Length: : " . strlen($post_string),
       'Content-Type: application/soap+xml;charset=utf-8'
   );

$ch     = curl_init();
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_POST, true );
curl_setopt( $ch, CURLOPT_POSTFIELDS, $post_string );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers );

$data = curl_exec($ch);
$status = curl_getinfo($ch);

if(curl_errno($ch)) {
        print curl_error($ch);
}else{
        curl_close($ch);

        echo '<pre>';
        print_r($data);
        print_r($status);
        echo '</pre>';
        //echo '<div align="center"><h3>Thank you.</h3></div>';
}
?>

请替换占位符。希望它有效。

答案 2 :(得分:0)

请使用以下名称空间。

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:man="https://www.eway.com.au/gateway/managedpayment">
   <soapenv:Header>
      <man:eWAYHeader>
         <man:eWAYCustomerID></man:eWAYCustomerID>
         <man:Username></man:Username>
         <man:Password></man:Password>
      </man:eWAYHeader>
   </soapenv:Header>
   <soapenv:Body>
      <man:CreateCustomer>
         <man:Title></man:Title>
         <man:FirstName></man:FirstName>
         <man:LastName></man:LastName>
         <man:Address></man:Address>
         <man:Suburb></man:Suburb>
         <man:State></man:State>
         <man:Company></man:Company>
         <man:PostCode></man:PostCode>
         <man:Country></man:Country>
         <man:Email></man:Email>
         <man:Fax></man:Fax>
         <man:Phone></man:Phone>
         <man:Mobile></man:Mobile>
         <man:CustomerRef></man:CustomerRef>
         <man:JobDesc></man:JobDesc>
         <man:Comments></man:Comments>
         <man:URL></man:URL>
         <man:CCNumber></man:CCNumber>
         <man:CCNameOnCard></man:CCNameOnCard>
         <man:CCExpiryMonth></man:CCExpiryMonth>
         <man:CCExpiryYear></man:CCExpiryYear>
      </man:CreateCustomer>
   </soapenv:Body>
</soapenv:Envelope>

6年的eWAY经验。

相关问题