web-dev-qa-db-fra.com

Suivi des API pour FedEx et UPS

Existe-t-il une API JavaScript disponible pour suivre les packages FedEx et UPS?

17
Harshal_m_joshi

J'ai googlé pour la même chose mais je n'ai trouvé aucun. Ensuite, je le décide par le côté serveur dans ror

voici comment obtenir la demande et la réponse de FedEx XML de leurs serveurs de test

Pour FedEx:

track_no = '111111111111' (This is test track no)

Ce corps de demande XML pour 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)

and that's it you will get response in hash variable, I converted xml response in to Hash because we can easily use Hash object at our view to display response data.

Pour UPS:

track_no = '1Z12345E1512345676' (This is test track no)

Ce corps de demande XML pour 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)

cette variable de hachage contient la réponse de la demande de suivi UPS en format hachage

28
Harshal_m_joshi

un autre moyen facile de le faire: Créez simplement un lien hypertexte avec le HREF suivant

UPS:

http://wwwapps.ups.com/webtracking/track?loc=en_us&track.x=track&tracknums=put_tracking_number_here

FedEx:

http://fedex.com/tracking?Action=Track&language=frish&cntry_code=us&tracknumbers=put_tracking_number_here

(pas aussi élégant, mais rapide, facile et obtient le travail!)

21
Richard Varno

Ou vous pouvez utiliser le active_shipping GEM pour un moyen plus agréable et plus propre de suivre vos packages pour FedEx et UPS

1
Nikhil