FedEx和UPS的跟踪API

18

是否有可用于跟踪Fedex和UPS包裹的JavaScript API?


1
UPS有一个SOAP API,你可以逆向工程官方应用程序。 - mcont
3个回答

30

我在谷歌上搜索了类似的内容,但没有找到。然后我决定在ROR中进行服务器端操作。

以下是如何从Fedex和UPS的测试服务器获取xml请求和响应的方法。

对于Fedex:

track_no = '111111111111'  # This is a test tracking number

# This XML Request body for fedex
xml_req = 

"<TrackRequest xmlns='http://fedex.com/ws/track/v3'><WebAuthenticationDetail><UserCredential><Key>YOUR_ACC_KEY</Key>
                <Password>YOUR_ACC_PASSWORD</Password></UserCredential></WebAuthenticationDetail><ClientDetail>
                <AccountNumber>YOUR_ACC_NUMBER</AccountNumber><MeterNumber>YOUR_ACC_METER_NUMBER</MeterNumber></ClientDetail>
                <TransactionDetail><CustomerTransactionId>ActiveShipping</CustomerTransactionId></TransactionDetail>
                <Version><ServiceId>trck</ServiceId><Major>3</Major><Intermediate>0</Intermediate><Minor>0</Minor></Version>
                <PackageIdentifier><Value>#{track_no}</Value><Type>TRACKING_NUMBER_OR_DOORTAG</Type></PackageIdentifier>
                <IncludeDetailedScans>1</IncludeDetailedScans></TrackRequest>"

path = "https://gatewaybeta.fedex.com:443/xml"

#this url connects to the test server of fedex
# for live server url is:"https://gateway.fedex.com:443/xml"

url = URI.parse(path)
http = Net::HTTP.new(url.host,url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

response =  http.post(url.path, xml_req)
response_body = response.body
res = response_body.gsub(/<(\/)?.*?\:(.*?)>/, '<\1\2>')
hash = Hash.from_xml(res.to_s)

就这样!您将在哈希变量中获得响应,我将xml响应转换为哈希,因为我们可以轻松地使用哈希对象在我们的视图中显示响应数据。

对于UPS:

track_no = '1Z12345E1512345676'  # This is a test tracking number

# This XML Request body for UPS
xml_req = 

'<?xml version="1.0"?><AccessRequest xml:lang="en-US"><AccessLicenseNumber>YOUR_ACC_LICENCE_NUMBER</AccessLicenseNumber>
                    <UserId>YOUR_ACC_USER_ID</UserId><Password>YOUR_ACC_PASSWORD</Password></AccessRequest>
                    <?xml version="1.0"?><TrackRequest xml:lang="en-US"><Request><TransactionReference>
                    <CustomerContext>QAST Track</CustomerContext><XpciVersion>1.0</XpciVersion></TransactionReference>
                    <RequestAction>Track</RequestAction><RequestOption>activity</RequestOption></Request>
                    <TrackingNumber>#{track_no}</TrackingNumber></TrackRequest>'

path = "https://www.ups.com/ups.app/xml/Track"
url = URI.parse(path)
http = Net::HTTP.new(url.host,url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

response =  http.post(url.path, xml_req)
response_body = response.body
hash = Hash.from_xml(response_body.to_s)

这个哈希变量包含了UPS追踪请求的哈希格式响应。


你有尝试过使用UPS SCS的空运提单吗? - Eder
我收到一个错误信息:“XML文档格式正确,但文档无效”,因此可能是远程端口的API已经更改。 - dlchambers
现在它无法工作。我怎样才能获得一个演示跟踪号码以进行测试? - huykon225
1
对于联邦快递,此链接将提供新信息:https://www.fedex.com/us/developer/WebHelp/ws/2014/dvg/WS_DVG_WebHelp/1_3_4_1_Example_Track_Request.htm - walderik
1
请提供一份 FedEx 跟踪的 PHP CURL 代码示例。 - Manik
显示剩余4条评论

21

7
对于USPS,请访问https://tools.usps.com/go/TrackConfirmAction.action?tLabels=<您的运单号>。 - weather
1
@weather 现在访问被拒绝了。我现在怎么能获得一个演示跟踪号码来测试呢? - huykon225
我无法通过API或curl获取联邦快递的数据。我该如何获取跟踪内容? - huykon225

1
或者您可以使用active_shipping宝石来更好地、更清晰地跟踪联邦快递和UPS的包裹。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接