跟踪api - 设置响应语言

时间:2018-01-15 12:47:44

标签: php xml api tracking ups

我有一个用于ups跟踪的php解决方案。 我使用“英语”语言从UPS获得的回复 有没有办法为响应获得另一种语言?

这是我的ups开发者文档中的代码: 这是我的ups开发者文档中的代码: 这是我的ups开发者文档中的代码: 这是我的ups开发人员文档中的代码:这是来自ups开发人员文档的代码:

// Configuration
$accessLicenseNumber = "xxx";
$userId = "xxx";
$password = "xxx";
$endpointurl = 'https://onlinetools.ups.com/ups.app/xml/Track';


try {

    // Create AccessRequest XMl
    $accessRequestXML = new SimpleXMLElement ( "<AccessRequest></AccessRequest>" );
    $accessRequestXML->addChild ( "AccessLicenseNumber", $accessLicenseNumber );
    $accessRequestXML->addChild ( "UserId", $userId );
    $accessRequestXML->addChild ( "Password", $password );

    // Create TrackRequest XMl
    $trackRequestXML = new SimpleXMLElement ( "<TrackRequest></TrackRequest  >" );
    $request = $trackRequestXML->addChild ( 'Request' );
    $request->addChild ( "RequestAction", "Track" );
    $request->addChild ( "RequestOption", "activity" );

    $trackRequestXML->addChild ( "TrackingNumber", "xxx" );

    $requestXML = $accessRequestXML->asXML () . $trackRequestXML->asXML ();

    $form = array (
            'http' => array (
                    'method' => 'POST',
                    'header' => 'Content-type: application/x-www-form-urlencoded',
                    'content' => $requestXML
            ) 
    );

    // get request
    $request = stream_context_create ( $form );
    $browser = fopen ( $endpointurl, 'rb', false, $request );
    if (! $browser) {
        throw new Exception ( "Connection failed." );
    }

    // get response
    $response = stream_get_contents ( $browser );
    fclose ( $browser );

    if ($response == false) {
        throw new Exception ( "Bad data." );
    } else {    

        // get response status
        $resp = new SimpleXMLElement ( $response );
    }

    Header ( 'Content-type: text/xml' );
} catch ( Exception $ex ) {}
}

2 个答案:

答案 0 :(得分:0)

您无法通过XML执行此操作,您需要使用WSDL(SOAP)或JSON。 您可以在/TrackRequest/Locale =&gt;中使用本地标记<v3:Locale>it_IT</v3:Locale>

WSDL(SOAP)请求

测试网络服务的网址https://wwwcie.ups.com/webservices/Track

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:v1="http://www.ups.com/XMLSchema/XOLTWS/UPSS/v1.0"
xmlns:v3="http://www.ups.com/XMLSchema/XOLTWS/Track/v2.0"
xmlns:v11="http://www.ups.com/XMLSchema/XOLTWS/Common/v1.0">
    <soapenv:Header>
        <v1:UPSSecurity>
            <v1:UsernameToken>
                <v1:Username>USERID</v1:Username>
                <v1:Password>PASSWORD</v1:Password>
            </v1:UsernameToken>
            <v1:ServiceAccessToken>
                <v1:AccessLicenseNumber>API KEY</v1:AccessLicenseNumber>
            </v1:ServiceAccessToken>
        </v1:UPSSecurity>
    </soapenv:Header>
    <soapenv:Body>
        <v3:TrackRequest>
            <v11:Request>
                <v11:RequestOption>1</v11:RequestOption>
                <v11:TransactionReference>
                    <v11:CustomerContext>Your Test Case Summary Description</v11:CustomerContext>
                </v11:TransactionReference>
            </v11:Request>
            <v3:Locale>it_IT</v3:Locale>
            <v3:InquiryNumber>TRACKING NUMBER</v3:InquiryNumber>
        </v3:TrackRequest>
    </soapenv:Body>
</soapenv:Envelope>

我使用跟踪次数测试和那些不起作用的测试进行了一些测试 然后我使用发送到我的国家/地区(意大利)的真实跟踪代码来运行

响应WSDL(SOAP)

..........
<trk:Status>
   <trk:Type>M</trk:Type>
   <trk:Description>Ordine elaborato: Pronto per UPS</trk:Description>
   <trk:Code>MP</trk:Code>
</trk:Status>
..........

我使用Postman提出请求

enter image description here

您也可以使用JSON(请参阅UPS网站上的指南)

答案 1 :(得分:0)

这是来自开发套件UPS的肥皂客户端的示例

<?php

  //Configuration
  $access = " Add License Key Here";
  $userid = " Add User Id Here";
  $passwd = " Add Password Here";
  $wsdl = " Add Wsdl File Here ";
  $operation = "ProcessTrack";
  $endpointurl = ' Add URL Here';
  $outputFileName = "XOLTResult.xml";

  function processTrack()
  {
      //create soap request
    $req['RequestOption'] = '15';
    $tref['CustomerContext'] = 'Add description here';
    $req['TransactionReference'] = $tref;
    $request['Request'] = $req;
    $request['InquiryNumber'] = '';
    $request['TrackingOption'] = '02';

    echo "Request.......\n";
    print_r($request);
    echo "\n\n";
    return $request;
  }

  try
  {

    $mode = array
    (
         'soap_version' => 'SOAP_1_1',  // use soap 1.1 client
         'trace' => 1
    );

    // initialize soap client
    $client = new SoapClient($wsdl , $mode);

    //set endpoint url
    $client->__setLocation($endpointurl);


    //create soap header
    $usernameToken['Username'] = $userid;
    $usernameToken['Password'] = $passwd;
    $serviceAccessLicense['AccessLicenseNumber'] = $access;
    $upss['UsernameToken'] = $usernameToken;
    $upss['ServiceAccessToken'] = $serviceAccessLicense;

    $header = new SoapHeader('http://www.ups.com/XMLSchema/XOLTWS/UPSS/v1.0','UPSSecurity',$upss);
    $client->__setSoapHeaders($header);


    //get response
    $resp = $client->__soapCall($operation ,array(processTrack()));

    //get status
    echo "Response Status: " . $resp->Response->ResponseStatus->Description ."\n";

    //save soap request and response to file
    $fw = fopen($outputFileName , 'w');
    fwrite($fw , "Request: \n" . $client->__getLastRequest() . "\n");
    fwrite($fw , "Response: \n" . $client->__getLastResponse() . "\n");
    fclose($fw);

  }
  catch(Exception $ex)
  {
    print_r ($ex);
  }

?>