首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >适用于Fedex和UPS的跟踪API

适用于Fedex和UPS的跟踪API
EN

Stack Overflow用户
提问于 2011-05-04 15:25:02
回答 3查看 53.8K关注 0票数 18

有没有可用于追踪联邦快递和JavaScript包裹的UPS?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-13 14:04:06

我在谷歌上搜索过这样的东西,但什么也找不到。然后我决定用ROR的服务器端来做。

这里是如何从他们的测试服务器获取联合包裹和联邦快递xml请求和响应。

对于联邦快递:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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追踪请求响应。

票数 30
EN

Stack Overflow用户

发布于 2011-07-29 12:06:41

另一种简单的方法是:只需使用下面的href创建一个超链接

UPS:

http://wwwapps.ups.com/WebTracking/track?loc=en_US&track.x=Track&trackNums=put_tracking_number_here

联邦快递:

http://fedex.com/Tracking?action=track&language=english&cntry_code=us&tracknumbers=put_tracking_number_here

(不是很优雅,但很快,很容易就能完成工作!)

票数 21
EN

Stack Overflow用户

发布于 2014-03-15 06:15:07

或者,您可以使用active_shipping gem来更好、更干净地跟踪您的联邦快递和联合包裹。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5879953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档