public static GetOrderReferenceDetailsResponse GetOrderReferenceDetails(OffAmazonPaymentsServicePropertyCollection propertiesCollection,
                                                                                IOffAmazonPaymentsService service, string orderReferenceId, string addressConsentToken, TextWriter buffer)
        {
            GetOrderReferenceDetailsResponse response = InvokeGetOrderReferenceDetails(propertiesCollection, service, orderReferenceId, addressConsentToken);

            printOrderReferenceDetailsResponseToBuffer(response, buffer);
            return(response);
        }
        private static GetOrderReferenceDetailsResponse InvokeGetOrderReferenceDetails(OffAmazonPaymentsServicePropertyCollection propertiesCollection,
                                                                                       IOffAmazonPaymentsService service, string orderReferenceId, string addressConsentToken)
        {
            GetOrderReferenceDetailsRequest getOrderRequest = new GetOrderReferenceDetailsRequest();

            getOrderRequest.SellerId = propertiesCollection.MerchantID;
            getOrderRequest.AmazonOrderReferenceId = orderReferenceId;
            getOrderRequest.AddressConsentToken    = addressConsentToken;

            GetOrderReferenceDetailsResponse response = service.GetOrderReferenceDetails(getOrderRequest);

            return(response);
        }
Ejemplo n.º 3
0
        private void RunSampleMultiShipments(string orderAmount, OffAmazonPaymentsServiceMultipleShipment instance)
        {
            /************************************************************************
             * Invoke Get Order Reference Details Action
             ***********************************************************************/
            GetOrderReferenceDetailsResponse getOrderDetails = instance.GetOrderReferenceDetails();

            if (getOrderDetails == null)
            {
                throw new OffAmazonPaymentsServiceException("The response from GetOrderReference request is null");
            }

            Address address = getOrderDetails.GetOrderReferenceDetailsResult.OrderReferenceDetails.Destination.PhysicalDestination;

            lblShipping.Text = "The shipping address is: " + address.City + "<br>" + address.StateOrRegion + "<br>" + address.PostalCode + "<br>";

            /************************************************************************
             * Invoke Set Order Reference Details Action
             ***********************************************************************/
            SetOrderReferenceDetailsResponse setOrderDetailsResponse = instance.SetOrderReferenceDetails(orderAmount);

            if (setOrderDetailsResponse == null)
            {
                throw new OffAmazonPaymentsServiceException("The response from SetOrderReference request is null");
            }

            /************************************************************************
             * Invoke Confirm Order Reference Action
             ***********************************************************************/
            if (instance.ConfirmOrderReferenceObject() == null)
            {
                throw new OffAmazonPaymentsServiceException("The response from ConfirmOrderResponse request is null");
            }

            //iterate the authoriztion amount in the authList
            for (int i = 0; i < numberOfShipment; i++)
            {
                String eachOrderAmount = amountEachShip[i].ToString();

                /************************************************************************
                 * Invoke Authorize Action
                 ***********************************************************************/
                AuthorizeResponse authResponse = instance.AuthorizeAction(eachOrderAmount, indicator);
                if (authResponse == null)
                {
                    throw new OffAmazonPaymentsServiceException("The response from Authorization Response request is null");
                }

                /************************************************************************
                 * Wait for the notification from ipn.aspx page in a loop, then print the corresponding information
                 ***********************************************************************/
                lblNotification.Text += WaitAndGetNotificationDetails(authResponse.AuthorizeResult.AuthorizationDetails.AmazonAuthorizationId + "_Authorize");

                instance.CheckAuthorizationStatus(authResponse);

                /************************************************************************
                 * Invoke Capture Action
                 ***********************************************************************/
                CaptureResponse captureResponse = instance.CaptureAction(authResponse, eachOrderAmount, indicator);
                if (captureResponse == null)
                {
                    throw new OffAmazonPaymentsServiceException("The response from Caputre Response request is null");
                }

                lblNotification.Text += WaitAndGetNotificationDetails(captureResponse.CaptureResult.CaptureDetails.AmazonCaptureId + "_Capture");

                /************************************************************************
                 * Invoke Get Capture Details Action
                 ***********************************************************************/
                if (instance.GetCaptureDetails(captureResponse) == null)
                {
                    throw new OffAmazonPaymentsServiceException("The response from GetCaputreDetails Response request is null");
                }

                indicator++;
            }

            /************************************************************************
             * Invoke Close Order Reference Action
             ***********************************************************************/
            if (instance.CloseOrderReference() == null)
            {
                throw new OffAmazonPaymentsServiceException("The response from CloseOrderReference Response request is null");
            }

            lblNotification.Text += WaitAndGetNotificationDetails(orderReferenceId + "_OrderReference");
        }
        private static void RunSampleMultiShipments(string orderReferenceId, string orderAmount, OffAmazonPaymentsServiceMultipleShipment instance)
        {
            /************************************************************************
             * Invoke Get Order Reference Details Action
             ***********************************************************************/
            GetOrderReferenceDetailsResponse getOrderDetails = instance.GetOrderReferenceDetails();

            if (getOrderDetails == null)
            {
                throw new OffAmazonPaymentsServiceException("The response from GetOrderReference request is null");
            }
            Console.WriteLine("=======================================================");

            /************************************************************************
             * Invoke Set Order Reference Details Action
             ***********************************************************************/
            SetOrderReferenceDetailsResponse setOrderDetailsResponse = instance.SetOrderReferenceDetails(orderAmount);

            if (setOrderDetailsResponse == null)
            {
                throw new OffAmazonPaymentsServiceException("The response from SetOrderReference request is null");
            }
            Console.WriteLine("=======================================================");

            /************************************************************************
             * Invoke Confirm Order Reference Action
             ***********************************************************************/
            if (instance.ConfirmOrderReferenceObject() == null)
            {
                throw new OffAmazonPaymentsServiceException("The response from ConfirmOrderResponse request is null");
            }
            Console.WriteLine("=======================================================");
            Console.WriteLine("===========================================");
            Console.WriteLine("Here is the demo of one capture per authorization.");
            Console.WriteLine("===========================================");
            Console.WriteLine();

            IDictionary <string, OrderItem> orderList = instance.OrderList;

            Console.WriteLine("Current orders are listed as below: ");
            instance.ShowCurrentOrders();
            System.Threading.Thread.Sleep(3000);

            //iterate the authoriztion amount in the authList
            foreach (string item in orderList.Keys)
            {
                String eachOrderAmount = (orderList[item].Price * orderList[item].Number).ToString();

                /************************************************************************
                 * Invoke Authorize Action
                 ***********************************************************************/
                AuthorizeResponse authResponse = instance.AuthorizeAction(eachOrderAmount, indicator);
                if (authResponse == null)
                {
                    throw new OffAmazonPaymentsServiceException("The response from Authorization Response request is null");
                }
                Console.WriteLine("=======================================================");

                /************************************************************************
                 * Check the authorization status unitl it is not "PENDING" any more
                 * GetAuthorizeDetails is contained in this method
                 ***********************************************************************/
                instance.CheckAuthorizationStatus(authResponse);

                /************************************************************************
                 * Invoke Capture Action
                 ***********************************************************************/
                CaptureResponse captureResponse = instance.CaptureAction(authResponse, eachOrderAmount, indicator);
                if (captureResponse == null)
                {
                    throw new OffAmazonPaymentsServiceException("The response from Caputre Response request is null");
                }
                Console.WriteLine("=======================================================");

                /************************************************************************
                 * Invoke GetCaptureDetails Action
                 ***********************************************************************/
                if (instance.GetCaptureDetails(captureResponse) == null)
                {
                    throw new OffAmazonPaymentsServiceException("The response from GetCaputreDetails Response request is null");
                }
                Console.WriteLine("=======================================================");

                indicator++;
            }

            /************************************************************************
             * Invoke CloseOrderReference Action
             ***********************************************************************/
            if (instance.CloseOrderReference() == null)
            {
                throw new OffAmazonPaymentsServiceException("The response from CloseOrderReference Response request is null");
            }
        }
Ejemplo n.º 5
0
        private void RunSample(OffAmazonPaymentsServiceProviderCheckout providerCheckout,
                               string orderReferenceId, string orderAmount, int shippingOption, int authorizationOption, string providerId, string creditAmount)
        {
            /************************************************************************
             * Invoke Get Order Reference Details Action
             ***********************************************************************/
            GetOrderReferenceDetailsResponse getOrderDetails = providerCheckout.GetOrderReferenceDetails();

            if (getOrderDetails == null)
            {
                throw new OffAmazonPaymentsServiceException("The response from GetOrderReference request is null");
            }

            /************************************************************************
             * Add the tax and shipping rates here
             * Get the rates by using the CountryCode and the StateOrRegionCode from the orderReferenceDetails
             ***********************************************************************/
            Destination         destination = getOrderDetails.GetOrderReferenceDetailsResult.OrderReferenceDetails.Destination;
            TaxAndShippingRates rates       = new TaxAndShippingRates(destination);
            string totalAmount = rates.getTotalAmountWithTaxAndShipping(Convert.ToDouble(orderAmount), shippingOption).ToString("0.##");

            Address address = destination.PhysicalDestination;

            lblShipping.Text = "The shipping address is: <br>" + address.City + "<br>" + address.StateOrRegion + "<br>" + address.PostalCode + "<br>"
                               + "The total amount with tax and shipping is: " + totalAmount + "<br>";

            /************************************************************************
             * Invoke Set Order Reference Details Action
             ***********************************************************************/
            SetOrderReferenceDetailsResponse setOrderDetailsResponse = providerCheckout.SetOrderReferenceDetails(totalAmount);

            if (setOrderDetailsResponse == null)
            {
                throw new OffAmazonPaymentsServiceException("The response from SetOrderReference request is null");
            }

            /************************************************************************
             * Invoke Confirm Order Reference Action
             ***********************************************************************/
            if (providerCheckout.ConfirmOrderReferenceObject() == null)
            {
                throw new OffAmazonPaymentsServiceException("The response from ConfirmOrderResponse request is null");
            }

            /************************************************************************
             * Invoke Authorize Action
             ***********************************************************************/
            AuthorizeResponse authResponse = providerCheckout.AuthorizeAction(setOrderDetailsResponse, authorizationOption);

            if (authResponse == null)
            {
                throw new OffAmazonPaymentsServiceException("The response from Authorization Response request is null");
            }

            /************************************************************************
             * Wait for the notification from ipn.aspx page in a loop, then print the corresponding information
             ***********************************************************************/
            lblNotification.Text += formatStringForDisplay(WaitAndGetNotificationDetails(authResponse.AuthorizeResult.AuthorizationDetails.AmazonAuthorizationId + "_Authorize"));
            GetAuthorizationDetailsResponse response = providerCheckout.CheckAuthorizationStatus(authResponse);

            /************************************************************************
             * On an IPN callback, call GetAuthorizationDetails to retreive additional
             * information about the authorization - this is done as part of the
             * previous call to check the status.
             ***********************************************************************/
            StringWriter stringWriter = new StringWriter();

            GetAuthorizationDetailsSample.printGetAuthorizationDetailsResponseToBuffer(response, stringWriter);
            lblNotification.Text += formatStringForDisplay(stringWriter.ToString());

            /************************************************************************
             * Invoke Capture Action
             ***********************************************************************/
            CaptureResponse captureResponse = providerCheckout.CaptureActionWithProviderCredit(authResponse, totalAmount, providerId, creditAmount);

            if (captureResponse == null)
            {
                throw new OffAmazonPaymentsServiceException("The response from Caputre Response request is null");
            }

            /************************************************************************
             * Wait for the notification from ipn.aspx page in a loop, then print the corresponding information
             ***********************************************************************/
            lblNotification.Text += formatStringForDisplay(WaitAndGetNotificationDetails(captureResponse.CaptureResult.CaptureDetails.AmazonCaptureId + "_Capture"));

            /************************************************************************
             * Invoke Get Capture Details Action
             ***********************************************************************/
            GetCaptureDetailsResponse getCaptureDetailsResponse = providerCheckout.GetCaptureDetails(captureResponse);

            if (getCaptureDetailsResponse == null)
            {
                throw new OffAmazonPaymentsServiceException("The response from GetCaputreDetails Response request is null");
            }

            /************************************************************************
             * Invoke GetProviderCreditDetails Action
             ***********************************************************************/
            if (!String.IsNullOrEmpty(providerId) && !String.IsNullOrEmpty(creditAmount))
            {
                /************************************************************************
                 * Wait till the the ProviderCreditSummaryList is available in the GetCaptureDetailsResponse
                 ***********************************************************************/
                OffAmazonPaymentsService.Model.ProviderCreditSummaryList providerCreditSummaryList = providerCheckout.CheckCaptureForProviderCreditSummaryList(captureResponse);
                foreach (OffAmazonPaymentsService.Model.ProviderCreditSummary providerCreditSummary in providerCreditSummaryList.member)
                {
                    /************************************************************************
                     * Wait for the notification from ipn.aspx page in a loop, then print the corresponding information
                     ***********************************************************************/
                    lblNotification.Text += formatStringForDisplay(WaitAndGetNotificationDetails(providerCreditSummary.ProviderCreditId + "_ProviderCredit"));
                    GetProviderCreditDetailsResponse getProviderCreditDetailsResponse = providerCheckout.GetProviderCreditDetails(providerCreditSummary);
                    if (getProviderCreditDetailsResponse == null)
                    {
                        throw new OffAmazonPaymentsServiceException("The response from GetProviderCreditDetails request is null for ProviderCreditId:" + providerCreditSummary.ProviderCreditId);
                    }
                }
            }

            /************************************************************************
             * Invoke CloseOrderReference Action
             ***********************************************************************/
            if (providerCheckout.CloseOrderReference() == null)
            {
                throw new OffAmazonPaymentsServiceException("The response from CloseOrderReference Response request is null");
            }

            /************************************************************************
             * Wait for the notification from ipn.aspx page in a loop, then print the corresponding information
             ***********************************************************************/
            lblNotification.Text += formatStringForDisplay(WaitAndGetNotificationDetails(orderReferenceId + "_OrderReference"));
        }
 private static void printOrderReferenceDetailsResponseToBuffer(GetOrderReferenceDetailsResponse response, TextWriter outputBuffer)
 {
     outputBuffer.WriteLine("Service Response");
     outputBuffer.WriteLine("=============================================================================");
     outputBuffer.WriteLine();
     outputBuffer.WriteLine("        GetOrderReferenceDetailsResponse");
     if (response.IsSetGetOrderReferenceDetailsResult())
     {
         outputBuffer.WriteLine("            GetOrderReferenceDetailsResult");
         GetOrderReferenceDetailsResult getOrderReferenceDetailsResult = response.GetOrderReferenceDetailsResult;
         if (getOrderReferenceDetailsResult.IsSetOrderReferenceDetails())
         {
             outputBuffer.WriteLine("                OrderReferenceDetails");
             OrderReferenceDetails orderReferenceDetails = getOrderReferenceDetailsResult.OrderReferenceDetails;
             if (orderReferenceDetails.IsSetAmazonOrderReferenceId())
             {
                 outputBuffer.WriteLine("                    AmazonOrderReferenceId");
                 outputBuffer.WriteLine("                        {0}", orderReferenceDetails.AmazonOrderReferenceId);
             }
             if (orderReferenceDetails.IsSetBuyer())
             {
                 outputBuffer.WriteLine("                    Buyer");
                 Buyer buyer = orderReferenceDetails.Buyer;
                 if (buyer.IsSetName())
                 {
                     outputBuffer.WriteLine("                        Name");
                     outputBuffer.WriteLine("                            {0}", buyer.Name);
                 }
                 if (buyer.IsSetEmail())
                 {
                     outputBuffer.WriteLine("                        Email");
                     outputBuffer.WriteLine("                            {0}", buyer.Email);
                 }
                 if (buyer.IsSetPhone())
                 {
                     outputBuffer.WriteLine("                        Phone");
                     outputBuffer.WriteLine("                            {0}", buyer.Phone);
                 }
             }
             if (orderReferenceDetails.IsSetOrderTotal())
             {
                 outputBuffer.WriteLine("                    OrderTotal");
                 OrderTotal orderTotal = orderReferenceDetails.OrderTotal;
                 if (orderTotal.IsSetCurrencyCode())
                 {
                     outputBuffer.WriteLine("                        CurrencyCode");
                     outputBuffer.WriteLine("                            {0}", orderTotal.CurrencyCode);
                 }
                 if (orderTotal.IsSetAmount())
                 {
                     outputBuffer.WriteLine("                        Amount");
                     outputBuffer.WriteLine("                            {0}", orderTotal.Amount);
                 }
             }
             if (orderReferenceDetails.IsSetSellerNote())
             {
                 outputBuffer.WriteLine("                    SellerNote");
                 outputBuffer.WriteLine("                        {0}", orderReferenceDetails.SellerNote);
             }
             if (orderReferenceDetails.IsSetPlatformId())
             {
                 outputBuffer.WriteLine("                    PlatformId");
                 outputBuffer.WriteLine("                        {0}", orderReferenceDetails.PlatformId);
             }
             if (orderReferenceDetails.IsSetDestination())
             {
                 outputBuffer.WriteLine("                    Destination");
                 Destination destination = orderReferenceDetails.Destination;
                 if (destination.IsSetDestinationType())
                 {
                     outputBuffer.WriteLine("                        DestinationType");
                     outputBuffer.WriteLine("                            {0}", destination.DestinationType);
                 }
                 if (destination.IsSetPhysicalDestination())
                 {
                     outputBuffer.WriteLine("                        PhysicalDestination");
                     Address physicalDestination = destination.PhysicalDestination;
                     if (physicalDestination.IsSetName())
                     {
                         outputBuffer.WriteLine("                            Name");
                         outputBuffer.WriteLine("                                {0}", physicalDestination.Name);
                     }
                     if (physicalDestination.IsSetAddressLine1())
                     {
                         outputBuffer.WriteLine("                            AddressLine1");
                         outputBuffer.WriteLine("                                {0}", physicalDestination.AddressLine1);
                     }
                     if (physicalDestination.IsSetAddressLine2())
                     {
                         outputBuffer.WriteLine("                            AddressLine2");
                         outputBuffer.WriteLine("                                {0}", physicalDestination.AddressLine2);
                     }
                     if (physicalDestination.IsSetAddressLine3())
                     {
                         outputBuffer.WriteLine("                            AddressLine3");
                         outputBuffer.WriteLine("                                {0}", physicalDestination.AddressLine3);
                     }
                     if (physicalDestination.IsSetCity())
                     {
                         outputBuffer.WriteLine("                            City");
                         outputBuffer.WriteLine("                                {0}", physicalDestination.City);
                     }
                     if (physicalDestination.IsSetCounty())
                     {
                         outputBuffer.WriteLine("                            County");
                         outputBuffer.WriteLine("                                {0}", physicalDestination.County);
                     }
                     if (physicalDestination.IsSetDistrict())
                     {
                         outputBuffer.WriteLine("                            District");
                         outputBuffer.WriteLine("                                {0}", physicalDestination.District);
                     }
                     if (physicalDestination.IsSetStateOrRegion())
                     {
                         outputBuffer.WriteLine("                            StateOrRegion");
                         outputBuffer.WriteLine("                                {0}", physicalDestination.StateOrRegion);
                     }
                     if (physicalDestination.IsSetPostalCode())
                     {
                         outputBuffer.WriteLine("                            PostalCode");
                         outputBuffer.WriteLine("                                {0}", physicalDestination.PostalCode);
                     }
                     if (physicalDestination.IsSetCountryCode())
                     {
                         outputBuffer.WriteLine("                            CountryCode");
                         outputBuffer.WriteLine("                                {0}", physicalDestination.CountryCode);
                     }
                     if (physicalDestination.IsSetPhone())
                     {
                         outputBuffer.WriteLine("                            Phone");
                         outputBuffer.WriteLine("                                {0}", physicalDestination.Phone);
                     }
                 }
             }
             if (orderReferenceDetails.IsSetBillingAddress())
             {
                 outputBuffer.WriteLine("                    BillingAddress");
                 BillingAddress billingAddress = orderReferenceDetails.BillingAddress;
                 if (billingAddress.IsSetAddressType())
                 {
                     outputBuffer.WriteLine("                        AddressType");
                     outputBuffer.WriteLine("                            {0}", billingAddress.AddressType);
                 }
                 if (billingAddress.IsSetPhysicalAddress())
                 {
                     outputBuffer.WriteLine("                        PhysicalAddress");
                     Address physicalAddress = billingAddress.PhysicalAddress;
                     if (physicalAddress.IsSetName())
                     {
                         outputBuffer.WriteLine("                            Name");
                         outputBuffer.WriteLine("                                {0}", physicalAddress.Name);
                     }
                     if (physicalAddress.IsSetAddressLine1())
                     {
                         outputBuffer.WriteLine("                            AddressLine1");
                         outputBuffer.WriteLine("                                {0}", physicalAddress.AddressLine1);
                     }
                     if (physicalAddress.IsSetAddressLine2())
                     {
                         outputBuffer.WriteLine("                            AddressLine2");
                         outputBuffer.WriteLine("                                {0}", physicalAddress.AddressLine2);
                     }
                     if (physicalAddress.IsSetAddressLine3())
                     {
                         outputBuffer.WriteLine("                            AddressLine3");
                         outputBuffer.WriteLine("                                {0}", physicalAddress.AddressLine3);
                     }
                     if (physicalAddress.IsSetCity())
                     {
                         outputBuffer.WriteLine("                            City");
                         outputBuffer.WriteLine("                                {0}", physicalAddress.City);
                     }
                     if (physicalAddress.IsSetCounty())
                     {
                         outputBuffer.WriteLine("                            County");
                         outputBuffer.WriteLine("                                {0}", physicalAddress.County);
                     }
                     if (physicalAddress.IsSetDistrict())
                     {
                         outputBuffer.WriteLine("                            District");
                         outputBuffer.WriteLine("                                {0}", physicalAddress.District);
                     }
                     if (physicalAddress.IsSetStateOrRegion())
                     {
                         outputBuffer.WriteLine("                            StateOrRegion");
                         outputBuffer.WriteLine("                                {0}", physicalAddress.StateOrRegion);
                     }
                     if (physicalAddress.IsSetPostalCode())
                     {
                         outputBuffer.WriteLine("                            PostalCode");
                         outputBuffer.WriteLine("                                {0}", physicalAddress.PostalCode);
                     }
                     if (physicalAddress.IsSetCountryCode())
                     {
                         outputBuffer.WriteLine("                            CountryCode");
                         outputBuffer.WriteLine("                                {0}", physicalAddress.CountryCode);
                     }
                     if (physicalAddress.IsSetPhone())
                     {
                         outputBuffer.WriteLine("                            Phone");
                         outputBuffer.WriteLine("                                {0}", physicalAddress.Phone);
                     }
                 }
             }
             if (orderReferenceDetails.IsSetReleaseEnvironment())
             {
                 outputBuffer.WriteLine("                    ReleaseEnvironment");
                 outputBuffer.WriteLine("                        {0}", orderReferenceDetails.ReleaseEnvironment);
             }
             if (orderReferenceDetails.IsSetSellerOrderAttributes())
             {
                 outputBuffer.WriteLine("                    SellerOrderAttributes");
                 SellerOrderAttributes sellerOrderAttributes = orderReferenceDetails.SellerOrderAttributes;
                 if (sellerOrderAttributes.IsSetSellerOrderId())
                 {
                     outputBuffer.WriteLine("                        SellerOrderId");
                     outputBuffer.WriteLine("                            {0}", sellerOrderAttributes.SellerOrderId);
                 }
                 if (sellerOrderAttributes.IsSetStoreName())
                 {
                     outputBuffer.WriteLine("                        StoreName");
                     outputBuffer.WriteLine("                            {0}", sellerOrderAttributes.StoreName);
                 }
                 if (sellerOrderAttributes.IsSetOrderItemCategories())
                 {
                     outputBuffer.WriteLine("                        OrderItemCategories");
                     OrderItemCategories orderItemCategories = sellerOrderAttributes.OrderItemCategories;
                     List<String> orderItemCategoryList = orderItemCategories.OrderItemCategory;
                     foreach (String orderItemCategory in orderItemCategoryList)
                     {
                         outputBuffer.WriteLine("                            OrderItemCategory");
                         outputBuffer.WriteLine("                                {0}", orderItemCategory);
                     }
                 }
                 if (sellerOrderAttributes.IsSetCustomInformation())
                 {
                     outputBuffer.WriteLine("                        CustomInformation");
                     outputBuffer.WriteLine("                            {0}", sellerOrderAttributes.CustomInformation);
                 }
             }
             if (orderReferenceDetails.IsSetOrderReferenceStatus())
             {
                 outputBuffer.WriteLine("                    OrderReferenceStatus");
                 OrderReferenceStatus orderReferenceStatus = orderReferenceDetails.OrderReferenceStatus;
                 if (orderReferenceStatus.IsSetState())
                 {
                     outputBuffer.WriteLine("                        State");
                     outputBuffer.WriteLine("                            {0}", orderReferenceStatus.State);
                 }
                 if (orderReferenceStatus.IsSetLastUpdateTimestamp())
                 {
                     outputBuffer.WriteLine("                        LastUpdateTimestamp");
                     outputBuffer.WriteLine("                            {0}", orderReferenceStatus.LastUpdateTimestamp);
                 }
                 if (orderReferenceStatus.IsSetReasonCode())
                 {
                     outputBuffer.WriteLine("                        ReasonCode");
                     outputBuffer.WriteLine("                            {0}", orderReferenceStatus.ReasonCode);
                 }
                 if (orderReferenceStatus.IsSetReasonDescription())
                 {
                     outputBuffer.WriteLine("                        ReasonDescription");
                     outputBuffer.WriteLine("                            {0}", orderReferenceStatus.ReasonDescription);
                 }
             }
             if (orderReferenceDetails.IsSetConstraints())
             {
                 outputBuffer.WriteLine("                    Constraints");
                 Constraints constraints = orderReferenceDetails.Constraints;
                 List<Constraint> constraintList = constraints.Constraint;
                 foreach (Constraint constraint in constraintList)
                 {
                     outputBuffer.WriteLine("                        Constraint");
                     if (constraint.IsSetConstraintID())
                     {
                         outputBuffer.WriteLine("                            ConstraintID");
                         outputBuffer.WriteLine("                                {0}", constraint.ConstraintID);
                     }
                     if (constraint.IsSetDescription())
                     {
                         outputBuffer.WriteLine("                            Description");
                         outputBuffer.WriteLine("                                {0}", constraint.Description);
                     }
                 }
             }
             if (orderReferenceDetails.IsSetCreationTimestamp())
             {
                 outputBuffer.WriteLine("                    CreationTimestamp");
                 outputBuffer.WriteLine("                        {0}", orderReferenceDetails.CreationTimestamp);
             }
             if (orderReferenceDetails.IsSetExpirationTimestamp())
             {
                 outputBuffer.WriteLine("                    ExpirationTimestamp");
                 outputBuffer.WriteLine("                        {0}", orderReferenceDetails.ExpirationTimestamp);
             }
             if (orderReferenceDetails.IsSetIdList())
             {
                 outputBuffer.WriteLine("                    IdList");
                 IdList  idList = orderReferenceDetails.IdList;
                 List<String> memberList  =  idList.member;
                 foreach (String member in memberList)
                 {
                         outputBuffer.WriteLine("                        member");
                         outputBuffer.WriteLine("                            {0}", member);
                 }
             }
         }
     }
     if (response.IsSetResponseMetadata())
     {
         outputBuffer.WriteLine("            ResponseMetadata");
         ResponseMetadata responseMetadata = response.ResponseMetadata;
         if (responseMetadata.IsSetRequestId())
         {
             outputBuffer.WriteLine("                RequestId");
             outputBuffer.WriteLine("                    {0}", responseMetadata.RequestId);
         }
     }
 }
        private static void RunSample(string orderReferenceId, double orderAmount, int shippingOption, int authorizationOption, OffAmazonPaymentsServiceSimpleCheckout simpleCheckout)
        {
            /************************************************************************
             * Invoke Get Order Reference Details Action
             ***********************************************************************/
            GetOrderReferenceDetailsResponse getOrderDetails = simpleCheckout.GetOrderReferenceDetails();

            if (getOrderDetails == null)
            {
                throw new OffAmazonPaymentsServiceException("The response from GetOrderReference request is null");
            }

            /************************************************************************
             * Add the tax and shipping rates here
             * Get the rates by using the CountryCode and the StateOrRegionCode from the orderReferenceDetails
             ***********************************************************************/

            Destination         destination = getOrderDetails.GetOrderReferenceDetailsResult.OrderReferenceDetails.Destination;
            TaxAndShippingRates rates       = new TaxAndShippingRates(destination);
            string totalAmount = rates.getTotalAmountWithTaxAndShipping(orderAmount, shippingOption).ToString("0.##");

            Console.WriteLine("=========================Tax and Shipping Calculation========================");
            Console.WriteLine("The tax and shipping rate will be calculated based on the CountryCode: " + destination.PhysicalDestination.CountryCode
                              + " and the StateOrRegionCode: " + destination.PhysicalDestination.StateOrRegion);
            Console.WriteLine("The total amount is " + totalAmount);
            Console.WriteLine("=============================================================================");

            /************************************************************************
             * Invoke Set Order Reference Details Action
             ***********************************************************************/
            SetOrderReferenceDetailsResponse setOrderDetailsResponse = simpleCheckout.SetOrderReferenceDetails(totalAmount);

            if (setOrderDetailsResponse == null)
            {
                throw new OffAmazonPaymentsServiceException("The response from SetOrderReference request is null");
            }
            Console.WriteLine("=============================================================================");

            /************************************************************************
             * Invoke Confirm Order Reference Action
             ***********************************************************************/
            if (simpleCheckout.ConfirmOrderReferenceObject() == null)
            {
                throw new OffAmazonPaymentsServiceException("The response from ConfirmOrderResponse request is null");
            }
            Console.WriteLine("=============================================================================");

            /************************************************************************
             * Invoke Authorize Action
             ***********************************************************************/
            AuthorizeResponse authResponse = simpleCheckout.AuthorizeAction(setOrderDetailsResponse, authorizationOption);

            if (authResponse == null)
            {
                throw new OffAmazonPaymentsServiceException("The response from Authorization request is null");
            }
            Console.WriteLine("=============================================================================");

            /************************************************************************
             * When Regular Asynchronous Authorization is used, the Authorization
             * State remains in pending and we need to wait for the state change.
             * Fast Authorization has a synchronous response and doesn't require this.
             ***********************************************************************/
            if (authorizationOption == 1)
            {
                /************************************************************************
                 * Check the authorization status unitl it is not "PENDING" any more
                 * GetAuthorizeDetails is contained in this method
                 ***********************************************************************/
                simpleCheckout.CheckAuthorizationStatus(authResponse);
            }

            /************************************************************************
             * Invoke Capture Action
             ***********************************************************************/
            CaptureResponse captureResponse = simpleCheckout.CaptureAction(authResponse, totalAmount);

            if (captureResponse == null)
            {
                throw new OffAmazonPaymentsServiceException("The response from Caputre request is null");
            }

            Console.WriteLine("=============================================================================");

            /************************************************************************
             * Invoke GetCaptureDetails Action
             ***********************************************************************/
            if (simpleCheckout.GetCaptureDetails(captureResponse) == null)
            {
                throw new OffAmazonPaymentsServiceException("The response from GetCaputreDetails request is null");
            }
            Console.WriteLine("=============================================================================");

            /************************************************************************
             * Invoke CloseOrderReference Action
             ***********************************************************************/
            if (simpleCheckout.CloseOrderReference() == null)
            {
                throw new OffAmazonPaymentsServiceException("The response from CloseOrderReference request is null");
            }
        }
 private static void printOrderReferenceDetailsResponseToBuffer(GetOrderReferenceDetailsResponse response, TextWriter outputBuffer)
 {
     outputBuffer.WriteLine("Service Response");
     outputBuffer.WriteLine("=============================================================================");
     outputBuffer.WriteLine();
     outputBuffer.WriteLine("        GetOrderReferenceDetailsResponse");
     if (response.IsSetGetOrderReferenceDetailsResult())
     {
         outputBuffer.WriteLine("            GetOrderReferenceDetailsResult");
         GetOrderReferenceDetailsResult getOrderReferenceDetailsResult = response.GetOrderReferenceDetailsResult;
         if (getOrderReferenceDetailsResult.IsSetOrderReferenceDetails())
         {
             outputBuffer.WriteLine("                OrderReferenceDetails");
             OrderReferenceDetails orderReferenceDetails = getOrderReferenceDetailsResult.OrderReferenceDetails;
             if (orderReferenceDetails.IsSetAmazonOrderReferenceId())
             {
                 outputBuffer.WriteLine("                    AmazonOrderReferenceId");
                 outputBuffer.WriteLine("                        {0}", orderReferenceDetails.AmazonOrderReferenceId);
             }
             if (orderReferenceDetails.IsSetBuyer())
             {
                 outputBuffer.WriteLine("                    Buyer");
                 Buyer buyer = orderReferenceDetails.Buyer;
                 if (buyer.IsSetName())
                 {
                     outputBuffer.WriteLine("                        Name");
                     outputBuffer.WriteLine("                            {0}", buyer.Name);
                 }
                 if (buyer.IsSetEmail())
                 {
                     outputBuffer.WriteLine("                        Email");
                     outputBuffer.WriteLine("                            {0}", buyer.Email);
                 }
                 if (buyer.IsSetPhone())
                 {
                     outputBuffer.WriteLine("                        Phone");
                     outputBuffer.WriteLine("                            {0}", buyer.Phone);
                 }
             }
             if (orderReferenceDetails.IsSetOrderTotal())
             {
                 outputBuffer.WriteLine("                    OrderTotal");
                 OrderTotal orderTotal = orderReferenceDetails.OrderTotal;
                 if (orderTotal.IsSetCurrencyCode())
                 {
                     outputBuffer.WriteLine("                        CurrencyCode");
                     outputBuffer.WriteLine("                            {0}", orderTotal.CurrencyCode);
                 }
                 if (orderTotal.IsSetAmount())
                 {
                     outputBuffer.WriteLine("                        Amount");
                     outputBuffer.WriteLine("                            {0}", orderTotal.Amount);
                 }
             }
             if (orderReferenceDetails.IsSetSellerNote())
             {
                 outputBuffer.WriteLine("                    SellerNote");
                 outputBuffer.WriteLine("                        {0}", orderReferenceDetails.SellerNote);
             }
             if (orderReferenceDetails.IsSetPlatformId())
             {
                 outputBuffer.WriteLine("                    PlatformId");
                 outputBuffer.WriteLine("                        {0}", orderReferenceDetails.PlatformId);
             }
             if (orderReferenceDetails.IsSetDestination())
             {
                 outputBuffer.WriteLine("                    Destination");
                 Destination destination = orderReferenceDetails.Destination;
                 if (destination.IsSetDestinationType())
                 {
                     outputBuffer.WriteLine("                        DestinationType");
                     outputBuffer.WriteLine("                            {0}", destination.DestinationType);
                 }
                 if (destination.IsSetPhysicalDestination())
                 {
                     outputBuffer.WriteLine("                        PhysicalDestination");
                     Address physicalDestination = destination.PhysicalDestination;
                     if (physicalDestination.IsSetName())
                     {
                         outputBuffer.WriteLine("                            Name");
                         outputBuffer.WriteLine("                                {0}", physicalDestination.Name);
                     }
                     if (physicalDestination.IsSetAddressLine1())
                     {
                         outputBuffer.WriteLine("                            AddressLine1");
                         outputBuffer.WriteLine("                                {0}", physicalDestination.AddressLine1);
                     }
                     if (physicalDestination.IsSetAddressLine2())
                     {
                         outputBuffer.WriteLine("                            AddressLine2");
                         outputBuffer.WriteLine("                                {0}", physicalDestination.AddressLine2);
                     }
                     if (physicalDestination.IsSetAddressLine3())
                     {
                         outputBuffer.WriteLine("                            AddressLine3");
                         outputBuffer.WriteLine("                                {0}", physicalDestination.AddressLine3);
                     }
                     if (physicalDestination.IsSetCity())
                     {
                         outputBuffer.WriteLine("                            City");
                         outputBuffer.WriteLine("                                {0}", physicalDestination.City);
                     }
                     if (physicalDestination.IsSetCounty())
                     {
                         outputBuffer.WriteLine("                            County");
                         outputBuffer.WriteLine("                                {0}", physicalDestination.County);
                     }
                     if (physicalDestination.IsSetDistrict())
                     {
                         outputBuffer.WriteLine("                            District");
                         outputBuffer.WriteLine("                                {0}", physicalDestination.District);
                     }
                     if (physicalDestination.IsSetStateOrRegion())
                     {
                         outputBuffer.WriteLine("                            StateOrRegion");
                         outputBuffer.WriteLine("                                {0}", physicalDestination.StateOrRegion);
                     }
                     if (physicalDestination.IsSetPostalCode())
                     {
                         outputBuffer.WriteLine("                            PostalCode");
                         outputBuffer.WriteLine("                                {0}", physicalDestination.PostalCode);
                     }
                     if (physicalDestination.IsSetCountryCode())
                     {
                         outputBuffer.WriteLine("                            CountryCode");
                         outputBuffer.WriteLine("                                {0}", physicalDestination.CountryCode);
                     }
                     if (physicalDestination.IsSetPhone())
                     {
                         outputBuffer.WriteLine("                            Phone");
                         outputBuffer.WriteLine("                                {0}", physicalDestination.Phone);
                     }
                 }
             }
             if (orderReferenceDetails.IsSetBillingAddress())
             {
                 outputBuffer.WriteLine("                    BillingAddress");
                 BillingAddress billingAddress = orderReferenceDetails.BillingAddress;
                 if (billingAddress.IsSetAddressType())
                 {
                     outputBuffer.WriteLine("                        AddressType");
                     outputBuffer.WriteLine("                            {0}", billingAddress.AddressType);
                 }
                 if (billingAddress.IsSetPhysicalAddress())
                 {
                     outputBuffer.WriteLine("                        PhysicalAddress");
                     Address physicalAddress = billingAddress.PhysicalAddress;
                     if (physicalAddress.IsSetName())
                     {
                         outputBuffer.WriteLine("                            Name");
                         outputBuffer.WriteLine("                                {0}", physicalAddress.Name);
                     }
                     if (physicalAddress.IsSetAddressLine1())
                     {
                         outputBuffer.WriteLine("                            AddressLine1");
                         outputBuffer.WriteLine("                                {0}", physicalAddress.AddressLine1);
                     }
                     if (physicalAddress.IsSetAddressLine2())
                     {
                         outputBuffer.WriteLine("                            AddressLine2");
                         outputBuffer.WriteLine("                                {0}", physicalAddress.AddressLine2);
                     }
                     if (physicalAddress.IsSetAddressLine3())
                     {
                         outputBuffer.WriteLine("                            AddressLine3");
                         outputBuffer.WriteLine("                                {0}", physicalAddress.AddressLine3);
                     }
                     if (physicalAddress.IsSetCity())
                     {
                         outputBuffer.WriteLine("                            City");
                         outputBuffer.WriteLine("                                {0}", physicalAddress.City);
                     }
                     if (physicalAddress.IsSetCounty())
                     {
                         outputBuffer.WriteLine("                            County");
                         outputBuffer.WriteLine("                                {0}", physicalAddress.County);
                     }
                     if (physicalAddress.IsSetDistrict())
                     {
                         outputBuffer.WriteLine("                            District");
                         outputBuffer.WriteLine("                                {0}", physicalAddress.District);
                     }
                     if (physicalAddress.IsSetStateOrRegion())
                     {
                         outputBuffer.WriteLine("                            StateOrRegion");
                         outputBuffer.WriteLine("                                {0}", physicalAddress.StateOrRegion);
                     }
                     if (physicalAddress.IsSetPostalCode())
                     {
                         outputBuffer.WriteLine("                            PostalCode");
                         outputBuffer.WriteLine("                                {0}", physicalAddress.PostalCode);
                     }
                     if (physicalAddress.IsSetCountryCode())
                     {
                         outputBuffer.WriteLine("                            CountryCode");
                         outputBuffer.WriteLine("                                {0}", physicalAddress.CountryCode);
                     }
                     if (physicalAddress.IsSetPhone())
                     {
                         outputBuffer.WriteLine("                            Phone");
                         outputBuffer.WriteLine("                                {0}", physicalAddress.Phone);
                     }
                 }
             }
             if (orderReferenceDetails.IsSetReleaseEnvironment())
             {
                 outputBuffer.WriteLine("                    ReleaseEnvironment");
                 outputBuffer.WriteLine("                        {0}", orderReferenceDetails.ReleaseEnvironment);
             }
             if (orderReferenceDetails.IsSetSellerOrderAttributes())
             {
                 outputBuffer.WriteLine("                    SellerOrderAttributes");
                 SellerOrderAttributes sellerOrderAttributes = orderReferenceDetails.SellerOrderAttributes;
                 if (sellerOrderAttributes.IsSetSellerOrderId())
                 {
                     outputBuffer.WriteLine("                        SellerOrderId");
                     outputBuffer.WriteLine("                            {0}", sellerOrderAttributes.SellerOrderId);
                 }
                 if (sellerOrderAttributes.IsSetStoreName())
                 {
                     outputBuffer.WriteLine("                        StoreName");
                     outputBuffer.WriteLine("                            {0}", sellerOrderAttributes.StoreName);
                 }
                 if (sellerOrderAttributes.IsSetOrderItemCategories())
                 {
                     outputBuffer.WriteLine("                        OrderItemCategories");
                     OrderItemCategories orderItemCategories   = sellerOrderAttributes.OrderItemCategories;
                     List <String>       orderItemCategoryList = orderItemCategories.OrderItemCategory;
                     foreach (String orderItemCategory in orderItemCategoryList)
                     {
                         outputBuffer.WriteLine("                            OrderItemCategory");
                         outputBuffer.WriteLine("                                {0}", orderItemCategory);
                     }
                 }
                 if (sellerOrderAttributes.IsSetCustomInformation())
                 {
                     outputBuffer.WriteLine("                        CustomInformation");
                     outputBuffer.WriteLine("                            {0}", sellerOrderAttributes.CustomInformation);
                 }
             }
             if (orderReferenceDetails.IsSetOrderReferenceStatus())
             {
                 outputBuffer.WriteLine("                    OrderReferenceStatus");
                 OrderReferenceStatus orderReferenceStatus = orderReferenceDetails.OrderReferenceStatus;
                 if (orderReferenceStatus.IsSetState())
                 {
                     outputBuffer.WriteLine("                        State");
                     outputBuffer.WriteLine("                            {0}", orderReferenceStatus.State);
                 }
                 if (orderReferenceStatus.IsSetLastUpdateTimestamp())
                 {
                     outputBuffer.WriteLine("                        LastUpdateTimestamp");
                     outputBuffer.WriteLine("                            {0}", orderReferenceStatus.LastUpdateTimestamp);
                 }
                 if (orderReferenceStatus.IsSetReasonCode())
                 {
                     outputBuffer.WriteLine("                        ReasonCode");
                     outputBuffer.WriteLine("                            {0}", orderReferenceStatus.ReasonCode);
                 }
                 if (orderReferenceStatus.IsSetReasonDescription())
                 {
                     outputBuffer.WriteLine("                        ReasonDescription");
                     outputBuffer.WriteLine("                            {0}", orderReferenceStatus.ReasonDescription);
                 }
             }
             if (orderReferenceDetails.IsSetConstraints())
             {
                 outputBuffer.WriteLine("                    Constraints");
                 Constraints       constraints    = orderReferenceDetails.Constraints;
                 List <Constraint> constraintList = constraints.Constraint;
                 foreach (Constraint constraint in constraintList)
                 {
                     outputBuffer.WriteLine("                        Constraint");
                     if (constraint.IsSetConstraintID())
                     {
                         outputBuffer.WriteLine("                            ConstraintID");
                         outputBuffer.WriteLine("                                {0}", constraint.ConstraintID);
                     }
                     if (constraint.IsSetDescription())
                     {
                         outputBuffer.WriteLine("                            Description");
                         outputBuffer.WriteLine("                                {0}", constraint.Description);
                     }
                 }
             }
             if (orderReferenceDetails.IsSetCreationTimestamp())
             {
                 outputBuffer.WriteLine("                    CreationTimestamp");
                 outputBuffer.WriteLine("                        {0}", orderReferenceDetails.CreationTimestamp);
             }
             if (orderReferenceDetails.IsSetExpirationTimestamp())
             {
                 outputBuffer.WriteLine("                    ExpirationTimestamp");
                 outputBuffer.WriteLine("                        {0}", orderReferenceDetails.ExpirationTimestamp);
             }
             if (orderReferenceDetails.IsSetIdList())
             {
                 outputBuffer.WriteLine("                    IdList");
                 IdList        idList     = orderReferenceDetails.IdList;
                 List <String> memberList = idList.member;
                 foreach (String member in memberList)
                 {
                     outputBuffer.WriteLine("                        member");
                     outputBuffer.WriteLine("                            {0}", member);
                 }
             }
         }
     }
     if (response.IsSetResponseMetadata())
     {
         outputBuffer.WriteLine("            ResponseMetadata");
         ResponseMetadata responseMetadata = response.ResponseMetadata;
         if (responseMetadata.IsSetRequestId())
         {
             outputBuffer.WriteLine("                RequestId");
             outputBuffer.WriteLine("                    {0}", responseMetadata.RequestId);
         }
     }
 }