【发布时间】:2015-03-28 02:13:00
【问题描述】:
我在使用 UPS api 跟踪包裹时遇到了很多麻烦。我不明白它是如何工作的,我从 UPS 示例中下载了这些文件:
$wsdl = " Add Wsdl File Here ";
$endpointurl = ' Add URL Here';
我没有任何 wsdl 文件,当我下载 UPS 跟踪示例时,也没有。我也不知道该为端点 url 放什么。 UPS 没有解释,或者至少我找不到他们在哪里。
所以我决定试试这个:
https://github.com/gabrielbull/php-ups-api#installation
但我不知道如何使用它。我已经下载了文件,但我不知道我可以把我的测试文件放在哪里:
$tracking = new Ups\Tracking($accessKey, $userId, $password);
try {
$shipment = $tracking->track('TRACKING NUMBER');
foreach($shipment->Package->Activity as $activity) {
var_dump($activity);
}
} catch (Exception $e) {
var_dump($e);
}
而且我也不知道将 API 访问密钥、用户名和密码的凭据放在哪里。我现在很困惑,我什么都想不通。我很抱歉我的英语不好。谢谢。
这是我来自 UPS 的完整代码:
//Configuration
$access = "XXX";
$userid = "XXX";
$passwd = "XXX";
$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);
}
【问题讨论】: