0

我正在开发一个与 Eway 连接的网站。我试图在 Sandbox 中创建一个 Rebill 客户。但是调用中的一些错误。

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

4 回答 4

2

我有一个语法错误

<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>';
    }
    ?>
于 2012-06-20T18:06:24.353 回答
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>';
}
?>

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

于 2012-06-19T13:24:36.420 回答
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>
于 2012-06-20T03:25:51.737 回答
0

这对我来说很好用!

$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);
于 2015-12-21T10:38:10.903 回答