Eway 沙盒网关 CURL


Eway Sandbox Gateway CURL

我正在开发一个与Eway连接的网站。我尝试在沙盒中重新计费客户。但是调用中的一些错误。

<?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>';

$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>';
}
?>

我在

<customerState>ACT<</customerState>

我的原始代码在删除此额外小于时起作用。

工作代码。

<?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>';

    $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>';
    }
    ?>

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

<?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>';
}
?>

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

这对我来说效果很好!

$data = array('salutation' => 'Mr', 'first_name' => 'Joe', 'last_name' => 'Bloggs', 'address' => 'Bloggs', 'city' => 'Capital City', 'state' => 'ACT', 'company' => 'Bloggs','postcode' => '2111', 'country' => 'Australia', 'email' => 'test3@eway.com.au', 'phone' => '0297979797', 'fax' => '0298989898', 'cusRef' => 'Ref123', 'customerComments' => 'Please Ship ASASP', 'cusURL' => 'https://www.eway.com.au');
$xml = '<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:man="http://www.eway.com.au/gateway/rebill/manageRebill">
<soap:Header>
    <eWAYHeader xmlns="http://www.eway.com.au/gateway/rebill/manageRebill">
        <eWAYCustomerID>SandboxCustomerID</eWAYCustomerID>
        <Username>Username</Username>
        <Password>Password</Password>
    </eWAYHeader>
</soap:Header>
  <soap:Body>
<CreateRebillCustomer xmlns="http://www.eway.com.au/gateway/rebill/manageRebill">
  <customerTitle>' . $data["salutation"] . '</customerTitle>
        <customerFirstName>' . $data["first_name"] . '</customerFirstName>
        <customerLastName>' . $data["last_name"] . '</customerLastName>
        <customerAddress>' . $data["address"] . '</customerAddress>
        <customerSuburb>' . $data["city"] . '</customerSuburb>
        <customerState>' . $data["state"] . '</customerState>
        <customerCompany>' . $data["company"] . '</customerCompany>
        <customerPostCode>' . $data["postcode"] . '</customerPostCode>
        <customerCountry>' . $data["country"] . '</customerCountry>
        <customerEmail>' . $data["email"] . '</customerEmail>
        <customerFax>' . $data["fax"] . '</customerFax>
        <customerPhone1>' . $data["phone"] . '</customerPhone1>
        <customerPhone2/>
        <customerRef>' . $data["cusRef"] . '</customerRef>
        <customerJobDesc/>
        <customerComments>' . $data["customerComments"] . '</customerComments>
        <customerURL>' . $data["cusURL"] . '</customerURL>
</CreateRebillCustomer>
</soap:Body>
</soap:Envelope>';

$ch = curl_init('https://www.eway.com.au/gateway/rebill/manageRebill.asmx');
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
    curl_setopt($ch, CURLOPT_POSTFIELDS, "$xml");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $output = curl_exec($ch);
    curl_close($ch);
    echo "<pre>";
   print_r($output);

请使用以下名称空间。

<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>