Last active
January 25, 2022 18:19
-
-
Save wrimik/56cc284b8c9baeb80bd8af70866a4317 to your computer and use it in GitHub Desktop.
FedEx Rates NodeJS SOAP Request
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var soap = require('soap'); // npm i soap | |
var url = 'fedex-api/RateService/RateService_v24.wsdl'; // you'll need to download the wsdl file from https://www.fedex.com/en-us/developer/web-services/process.html#StandardServices | |
// if you change the order of these variables, everything gets fucked up because "wsdl" is a format for developers who have | |
// landed themselves in a middle circle of hell. | |
// this points at fedex's production server btw. if you use dev credentials you'll need to change the url WAAAY down | |
// by the bottom of the file, in "client.setEndpoint('https://ws.fedex.com:443/web-services');" | |
var data = { | |
"WebAuthenticationDetail": { | |
"UserCredential": { | |
"Key": "======YOUR KEY=======", // you can get the key/password/etc from fedex.com 's developer center | |
"Password": "=======API PASSWORD=====" | |
} | |
}, | |
"ClientDetail": { | |
"AccountNumber": "======ACCOUNT NUMBER======", | |
"MeterNumber": "======METER NUMBER======" | |
}, | |
"TransactionDetail": {"CustomerTransactionId": " *** Rate Available Services Request using PHP ***"}, | |
"Version": {"ServiceId": "crs", "Major": "24", "Intermediate": "0", "Minor": "0"}, | |
"ReturnTransitAndCommit": true, | |
"RequestedShipment": { | |
"ShipTimestamp": "2019-10-10T17:00:00", | |
"DropoffType": "REGULAR_PICKUP", | |
"Shipper": { | |
"Address": { | |
"StreetLines": ["100 Main St"], | |
"City": "CREOLA", | |
"StateOrProvinceCode": "AL", | |
"PostalCode": "36525", | |
"CountryCode": "US" | |
} | |
}, | |
"Recipient": { | |
"Address": { | |
"StreetLines": ["100 Main St"], | |
"City": "PINOLE", | |
"StateOrProvinceCode": "CA", | |
"PostalCode": "94564", | |
"CountryCode": "US", | |
"Residential": true | |
} | |
}, | |
"ShippingChargesPayment": { | |
"PaymentType": "SENDER", | |
"Payor": { | |
"ResponsibleParty": { | |
"AccountNumber": "376080811", | |
// "Contact": null, | |
"Address": {"CountryCode": "US"} | |
} | |
} | |
}, | |
"PackageCount": "1", | |
"RequestedPackageLineItems": [{ | |
"SequenceNumber": 1, | |
"GroupPackageCount": 1, | |
// if you change the order this shit breaks because wsdl is a format for dumbasses | |
"Weight": { | |
"Units": "LB", | |
"Value": 5 | |
}, | |
"Dimensions": { | |
"Length": 10, "Width": 10, "Height": 3, "Units": "IN" | |
} | |
}] | |
} | |
}; | |
soap.createClient(url, function (err, client) { | |
if (err) throw err; | |
client.setEndpoint('https://ws.fedex.com:443/web-services'); | |
client.getRates(data, function (err, result) { | |
console.log(result) | |
if (err) throw err; | |
}); | |
}); |
Have been pulling my hair out for the past two days! God bless you for posting this gist! I am trying to implement the Process Shipment Request which is very similar... I would only wish working with this WSDL library to my worst enemy. I will follow up if I can get it working!
Make sure to change "Major": "24",
to the corresponding wsdl file. var url = 'fedex-api/RateService/RateService_v24.wsdl'
For example, I downloaded RateService_v28.wsdl so I changed mine to "Major": "28",
Thanks @wrimik
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I'm either really smart, or really stupid - because getting the fedex api to work using nodeJS / SOAP was a NIGHTMARE - but I did it.
I've searched high and low, and there's literally no example on the whole internet (I read the whole internet) of a FedEx Rates API Request, using NodeJS / SOAP, that works.
Here it is. You may need to
npm i soap
before running. God help you if this doesn't work, because fedex doesn't actually want people using their APIs