Example #1
0
        /// <summary>
        /// Sets shipment details
        /// </summary>
        /// <param name="request"></param>
        protected override sealed void SetShipmentDetails(RateRequest request)
        {
            request.RequestedShipment = new RequestedShipment();
            request.RequestedShipment.ShipTimestamp = DateTime.Now; // Shipping date and time
            request.RequestedShipment.ShipTimestampSpecified = true;
            request.RequestedShipment.DropoffType = DropoffType.REGULAR_PICKUP; //Drop off types are BUSINESS_SERVICE_CENTER, DROP_BOX, REGULAR_PICKUP, REQUEST_COURIER, STATION
            request.RequestedShipment.DropoffTypeSpecified = true;
            request.RequestedShipment.PackagingType = PackagingType.YOUR_PACKAGING;
            request.RequestedShipment.PackagingTypeSpecified = true;

            SetOrigin(request);

            SetDestination(request);

            SetPackageLineItems(request);

            request.RequestedShipment.RateRequestTypes = new RateRequestType[1];
            request.RequestedShipment.RateRequestTypes[0] = RateRequestType.LIST;
            request.RequestedShipment.PackageCount = Shipment.PackageCount.ToString();
        }
        private RateRequest CreateRateRequest()
        {
            // Build the RateRequest
            var request = new RateRequest();

            request.WebAuthenticationDetail = new WebAuthenticationDetail();
            request.WebAuthenticationDetail.UserCredential = new WebAuthenticationCredential();
            request.WebAuthenticationDetail.UserCredential.Key = _key;
            request.WebAuthenticationDetail.UserCredential.Password = _password;

            request.ClientDetail = new ClientDetail();
            request.ClientDetail.AccountNumber = _accountNumber;
            request.ClientDetail.MeterNumber = _meterNumber;

            request.Version = new VersionId();

            request.ReturnTransitAndCommit = true;
            request.ReturnTransitAndCommitSpecified = true;

            SetShipmentDetails(request);

            return request;
        }
        private void SetPackageLineItems(RateRequest request)
        {
            request.RequestedShipment.RequestedPackageLineItems = new RequestedPackageLineItem[Shipment.PackageCount];

            var i = 0;
            foreach (var package in Shipment.Packages)
            {
                request.RequestedShipment.RequestedPackageLineItems[i] = new RequestedPackageLineItem();
                request.RequestedShipment.RequestedPackageLineItems[i].SequenceNumber = (i + 1).ToString();
                request.RequestedShipment.RequestedPackageLineItems[i].GroupPackageCount = "1";
                // package weight
                request.RequestedShipment.RequestedPackageLineItems[i].Weight = new Weight();
                request.RequestedShipment.RequestedPackageLineItems[i].Weight.Units = WeightUnits.LB;
                request.RequestedShipment.RequestedPackageLineItems[i].Weight.Value = package.RoundedWeight;
                // package dimensions
                request.RequestedShipment.RequestedPackageLineItems[i].Dimensions = new Dimensions();
                request.RequestedShipment.RequestedPackageLineItems[i].Dimensions.Length = package.RoundedLength.ToString();
                request.RequestedShipment.RequestedPackageLineItems[i].Dimensions.Width = package.RoundedWidth.ToString();
                request.RequestedShipment.RequestedPackageLineItems[i].Dimensions.Height = package.RoundedHeight.ToString();
                request.RequestedShipment.RequestedPackageLineItems[i].Dimensions.Units = LinearUnits.IN;
                // package insured value
                request.RequestedShipment.RequestedPackageLineItems[i].InsuredValue = new Money();
                request.RequestedShipment.RequestedPackageLineItems[i].InsuredValue.Amount = package.InsuredValue;
                request.RequestedShipment.RequestedPackageLineItems[i].InsuredValue.AmountSpecified = true;
                request.RequestedShipment.RequestedPackageLineItems[i].InsuredValue.Currency = "USD";
                i++;
            }
        }
 private void SetOrigin(RateRequest request)
 {
     request.RequestedShipment.Shipper = new Party();
     request.RequestedShipment.Shipper.Address = new RateServiceWebReference.Address();
     request.RequestedShipment.Shipper.Address.StreetLines = new string[1] {""};
     request.RequestedShipment.Shipper.Address.City = "";
     request.RequestedShipment.Shipper.Address.StateOrProvinceCode = "";
     request.RequestedShipment.Shipper.Address.PostalCode = Shipment.OriginAddress.PostalCode;
     request.RequestedShipment.Shipper.Address.CountryCode = Shipment.OriginAddress.CountryCode;
 }
 private void SetDestination(RateRequest request)
 {
     request.RequestedShipment.Recipient = new Party();
     request.RequestedShipment.Recipient.Address = new RateServiceWebReference.Address();
     request.RequestedShipment.Recipient.Address.StreetLines = new string[1] {""};
     request.RequestedShipment.Recipient.Address.City = "";
     request.RequestedShipment.Recipient.Address.StateOrProvinceCode = "";
     request.RequestedShipment.Recipient.Address.PostalCode = Shipment.DestinationAddress.PostalCode;
     request.RequestedShipment.Recipient.Address.CountryCode = Shipment.DestinationAddress.CountryCode;
 }
 /// <summary>
 /// Sets shipment details
 /// </summary>
 /// <param name="request"></param>
 protected abstract void SetShipmentDetails(RateRequest request);
 /// <summary>
 /// Sets the origin
 /// </summary>
 /// <param name="request"></param>
 protected void SetOrigin(RateRequest request)
 {
     request.RequestedShipment.Shipper = new Party();
     request.RequestedShipment.Shipper.Address = new RateServiceWebReference.Address();
     request.RequestedShipment.Shipper.Address.StreetLines = new string[1] { "" };
     request.RequestedShipment.Shipper.Address.City = "";
     request.RequestedShipment.Shipper.Address.StateOrProvinceCode = "";
     request.RequestedShipment.Shipper.Address.PostalCode = Shipment.OriginAddress.PostalCode;
     request.RequestedShipment.Shipper.Address.CountryCode = Shipment.OriginAddress.CountryCode;
     request.RequestedShipment.Shipper.Address.Residential = Shipment.OriginAddress.IsResidential;
     request.RequestedShipment.Shipper.Address.ResidentialSpecified = Shipment.OriginAddress.IsResidential;
 }
        /// <summary>
        /// Sets SmartPost details
        /// </summary>
        /// <param name="request"></param>
        private void SetSmartPostDetails(RateRequest request)
        {
            request.RequestedShipment.ServiceType = ServiceType.SMART_POST;
            request.RequestedShipment.ServiceTypeSpecified = true;
            request.RequestedShipment.SmartPostDetail = new SmartPostShipmentDetail { HubId = _hubId, Indicia = SmartPostIndiciaType.PARCEL_SELECT, IndiciaSpecified = true };

            // Handle the various SmartPost Incidia scenarios
            // The ones we should mainly care about are as follows:
            // PRESORTED_STANDARD (less than 1 LB)
            // PARCEL_SELECT (1 LB through 70 LB)

            var weight = request.RequestedShipment.GetTotalWeight();
            if (weight?.Value < 1.0m)
                request.RequestedShipment.SmartPostDetail.Indicia = SmartPostIndiciaType.PRESORTED_STANDARD;
        }
Example #9
0
 /// <remarks/>
 public void getRatesAsync(RateRequest RateRequest, object userState) {
     if ((this.getRatesOperationCompleted == null)) {
         this.getRatesOperationCompleted = new System.Threading.SendOrPostCallback(this.OngetRatesOperationCompleted);
     }
     this.InvokeAsync("getRates", new object[] {
                 RateRequest}, this.getRatesOperationCompleted, userState);
 }
Example #10
0
 /// <remarks/>
 public void getRatesAsync(RateRequest RateRequest) {
     this.getRatesAsync(RateRequest, null);
 }