.NET wrapper to UPS, FedEx, and USPS APIs. Use it to retrieve shipping rates from these carriers.
This is a fork from the original lib, that is now hosted on our Github Packages repository. To update this package.
- Obtain a GitHub personal access token in
Settings > Developer settings > Personal access tokens
- Update version in
DotNetShipping.nuspec
file.
Then, run the following commandes:
nuget source add -Name "Github" -Source "https://nuget.pkg.github.com/snipcart/index.json"
nuget setApiKey YOUR_GITHUB_PAT -Source "https://nuget.pkg.github.com/snipcart/index.json"
nuget pack .\DotNetShipping\DotNetShipping.csproj
nuget push DotNetShipping.x.x.x.nupkg -Source Github
Available in the NuGet Gallery:
PM> Install-Package DotNetShipping
NameValueCollection appSettings = ConfigurationManager.AppSettings;
// You will need a license #, userid and password to utilize the UPS provider.
string upsLicenseNumber = appSettings["UPSLicenseNumber"];
string upsUserId = appSettings["UPSUserId"];
string upsPassword = appSettings["UPSPassword"];
// You will need an account # and meter # to utilize the FedEx provider.
string fedexKey = appSettings["FedExKey"];
string fedexPassword = appSettings["FedExPassword"];
string fedexAccountNumber = appSettings["FedExAccountNumber"];
string fedexMeterNumber = appSettings["FedExMeterNumber"];
// You will need a userId to use the USPS provider. Your account will also need access to the production servers.
string uspsUserId = appSettings["USPSUserId"];
// Setup package and destination/origin addresses
var packages = new List<Package>();
packages.Add(new Package(12, 12, 12, 35, 150));
packages.Add(new Package(4, 4, 6, 15, 250));
var origin = new Address("", "", "06405", "US");
var destination = new Address("", "", "20852", "US"); // US Address
// Create RateManager
var rateManager = new RateManager();
// Add desired DotNetShippingProviders
rateManager.AddProvider(new UPSProvider(upsLicenseNumber, upsUserId, upsPassword));
rateManager.AddProvider(new FedExProvider(fedexKey, fedexPassword, fedexAccountNumber, fedexMeterNumber));
rateManager.AddProvider(new USPSProvider(uspsUserId));
// (Optional) Add RateAdjusters
rateManager.AddRateAdjuster(new PercentageRateAdjuster(.9M));
// Call GetRates()
Shipment shipment = rateManager.GetRates(origin, destination, packages);
// Iterate through the rates returned
foreach (Rate rate in shipment.Rates)
{
Console.WriteLine(rate);
}
DotNetShipping supports requesting a single rate from UPS and USPS. To do so, include the rate description as a parameter of the provider constructor.
rateManager.AddProvider(new USPSProvider(uspsUserId, "Priority Mail"));
rateManager.AddProvider(new UPSProvider(upsLicenseNumber, upsUserId, upsPassword, "UPS Ground"));
A list of valid shipping methods can be found in the documentation links below.
See the sample app in this repository for a working example.
USPS requires a separate API call for retrieving rates international services.
The call works the same but use the USPSInternationalProvider instead. Your current USPS credentials will work with this and will return the available services between the origin and destination addresses.
Developer documentation is often hard to find. The links below are provided as reference.
Originally forked from dotNETShipping.
- @kylewest
- @brettallred
- @gkurts
- @Soulfire86
- @StephenPAdams - FedEx SmartPost Support