SetShipmentDetails - Modification
if (_fedexSettings.CarrierServicesOffered != null && _fedexSettings.CarrierServicesOffered.Contains("SMART_POST"))
{
request.RequestedShipment.ServiceType = RateServiceWebReference.ServiceType.SMART_POST;
//Smart Post require some additional elements
request.RequestedShipment.SmartPostDetail = new SmartPostShipmentDetail();
request.RequestedShipment.SmartPostDetail.Indicia = SmartPostIndiciaType.PARCEL_SELECT;
request.RequestedShipment.SmartPostDetail.IndiciaSpecified = true;
//of course, 5185 shuold be configurable
request.RequestedShipment.SmartPostDetail.HubId = "5185";
}
CreateRateRequest - Modification
Replace:
request.CarrierCodes = new RateServiceWebReference.CarrierCodeType[2];
// Insert the Carriers you would like to see the rates for
request.CarrierCodes[0] = RateServiceWebReference.CarrierCodeType.FDXE;
request.CarrierCodes[1] = RateServiceWebReference.CarrierCodeType.FDXG;
With:
request.CarrierCodes = null;
--
Based on my conversation with FedEx as of the time of this post, CarrierCodes is a legacy feature. It is still required, but only used to limit the returned rates. By setting it to null, you won't filter out SmartPost rates. As for IndiciaSpecified = true, FedEx wasn't receiving the Indicia until I set this value.