public static GetRefundDetailsResponse CheckRefundStatus(string amazonRefundId, IOffAmazonPaymentsService service, OffAmazonPaymentsServicePropertyCollection propertiesCollection)
        {
            //used to check if the refund is time-out
            TimeSpan startTime = DateTime.Now.TimeOfDay;
            GetRefundDetailsRequest refundDetailRequest = new GetRefundDetailsRequest();

            refundDetailRequest.SellerId       = propertiesCollection.MerchantID;
            refundDetailRequest.AmazonRefundId = amazonRefundId;

            GetRefundDetailsResponse getRefundDetailsResponse = GetRefundDetailsSample.InvokeGetRefundDetails(service, refundDetailRequest);

            while (getRefundDetailsResponse.IsSetGetRefundDetailsResult() && getRefundDetailsResponse.GetRefundDetailsResult.RefundDetails.RefundStatus.State.Equals(PaymentStatus.PENDING))
            {
                if (DateTime.Now.TimeOfDay.Milliseconds - startTime.Milliseconds > 60000)
                {
                    throw new OffAmazonPaymentsServiceException("The refund has timed-out.");
                }

                System.Threading.Thread.Sleep(8000);
                Console.WriteLine("Waiting until the Refund Status changes from PENDING");
                getRefundDetailsResponse = GetRefundDetailsSample.InvokeGetRefundDetails(service, refundDetailRequest);
            }

            return(getRefundDetailsResponse);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Execute the sample, using the given arguments as parameters for the scenario
        ///
        /// The sample executes the refund against the capture and verifies that the
        /// refund has been performed through waiting for a refund payment notification
        /// </summary>
        /// <param name="amazonCaptureId">Amazon Capture Id for the capture transaction to perform the refund against</param>
        /// <param name="refundAmount">Amount to refund to the customer</param>
        /// <param name="providerId">Provider Id for whom credit reversal is needed</param>
        /// <param name="creditReversalAmount">Credit Amount to reverse from the provider</param>
        private void RunSample(string amazonCaptureId, string refundAmount, string providerId, string creditReversalAmount)
        {
            /************************************************************************
             * Invoke Refund Action
             ***********************************************************************/
            RefundResponse refundResponse = this._providerRefund.RefundActionWithProviderCreditReversal(amazonCaptureId, refundAmount, providerId, creditReversalAmount);

            if (refundResponse == null)
            {
                throw new Exception("The response from Refund request is null");
            }

            /************************************************************************
             * Wait for the refund notification to arrive and display it to the user
             ***********************************************************************/
            lblNotification.Text += WaitAndGetNotificationDetails(refundResponse.RefundResult.RefundDetails.AmazonRefundId + "_Refund");

            /************************************************************************
             * Invoke Get Refund Details Action
             ***********************************************************************/
            GetRefundDetailsResponse getRefundDetailsResponse = this._providerRefund.GetRefundDetails(refundResponse);

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

            /************************************************************************
             * Invoke Get Provider Credit Reversal Details Action after getting ipn
             ***********************************************************************/
            if (!String.IsNullOrEmpty(providerId) && !String.IsNullOrEmpty(creditReversalAmount))
            {
                foreach (OffAmazonPaymentsService.Model.ProviderCreditReversalSummary providerCreditReversalSummary in getRefundDetailsResponse.GetRefundDetailsResult.RefundDetails.ProviderCreditReversalSummaryList.member)
                {
                    /************************************************************************
                     * Wait for the notification from ipn.aspx page in a loop, then print the corresponding information
                     ***********************************************************************/
                    lblNotification.Text += formatStringForDisplay(WaitAndGetNotificationDetails(providerCreditReversalSummary.ProviderCreditReversalId + "_ProviderCreditReversal"));
                    GetProviderCreditReversalDetailsResponse getProviderCreditReversalDetailsResponse = this._providerRefund.GetProviderCreditReversalDetails(providerCreditReversalSummary);
                    if (getProviderCreditReversalDetailsResponse == null)
                    {
                        throw new OffAmazonPaymentsServiceException("The response from GetProviderCreditReversalDetails request is null for ProviderCreditReversalId:" + providerCreditReversalSummary.ProviderCreditReversalId);
                    }
                }
            }
        }
Ejemplo n.º 3
0
        private static void RunSample()
        {
            /************************************************************************
             * Invoke Refund Action
             ***********************************************************************/
            RefundResponse refundResponse = instance.RefundAction(amazonCaptureId, refundAmount);

            if (refundResponse == null)
            {
                throw new OffAmazonPaymentsServiceException("The response of Refund request is null");
            }

            /************************************************************************
             * Invoke Get Refund Details
             ***********************************************************************/
            GetRefundDetailsResponse refundDetailsResponse = instance.GetRefundDetails(refundResponse);

            if (refundDetailsResponse == null)
            {
                throw new OffAmazonPaymentsServiceException("The response of GetRefundDetails request is null");
            }
        }
Ejemplo n.º 4
0
        private static void RunSample()
        {
            /************************************************************************
             * Invoke Refund Action With Provider Credit Reversal
             ***********************************************************************/
            RefundResponse refundResponse = providerRefund.RefundActionWithProviderCreditReversal(amazonCaptureId, refundAmount, providerId, creditReversalAmount);

            if (refundResponse == null)
            {
                throw new OffAmazonPaymentsServiceException("The response of Refund request is null");
            }

            /************************************************************************
             * Check Refund Status unitl it is not "PENDING" any more
             * GetRefundDetails is contained in this method
             ***********************************************************************/
            GetRefundDetailsResponse getRefundDetailsResponse = providerRefund.CheckRefundStatus(refundResponse);

            if (getRefundDetailsResponse == null)
            {
                throw new OffAmazonPaymentsServiceException("The response of GetRefundDetails request is null");
            }

            /************************************************************************
             * Invoke Get Provider Credit Reversal Details
             ***********************************************************************/
            if (getRefundDetailsResponse.GetRefundDetailsResult.RefundDetails.IsSetProviderCreditReversalSummaryList())
            {
                foreach (ProviderCreditReversalSummary providerCreditReversalSummary in getRefundDetailsResponse.GetRefundDetailsResult.RefundDetails.ProviderCreditReversalSummaryList.member)
                {
                    GetProviderCreditReversalDetailsResponse getProviderCreditReversalDetails = providerRefund.GetProviderCreditReversalDetails(providerCreditReversalSummary);
                    if (getProviderCreditReversalDetails == null)
                    {
                        throw new OffAmazonPaymentsServiceException("The response from GetProviderCreditDetails request is null for ProviderCreditId:" + providerCreditReversalSummary.ProviderCreditReversalId);
                    }
                    Console.WriteLine("=============================================================================");
                }
            }
        }
        public static GetRefundDetailsResponse InvokeGetRefundDetails(IOffAmazonPaymentsService service, GetRefundDetailsRequest request)
        {
            GetRefundDetailsResponse response = null;

            try
            {
                response = service.GetRefundDetails(request);
                Console.WriteLine("Service Response");
                Console.WriteLine("=============================================================================");
                Console.WriteLine();
                Console.WriteLine("        GetRefundDetailsResponse");
                if (response.IsSetGetRefundDetailsResult())
                {
                    Console.WriteLine("            GetRefundDetailsResult");
                    GetRefundDetailsResult getRefundDetailsResult = response.GetRefundDetailsResult;
                    if (getRefundDetailsResult.IsSetRefundDetails())
                    {
                        Console.WriteLine("                RefundDetails");
                        RefundDetails refundDetails = getRefundDetailsResult.RefundDetails;
                        if (refundDetails.IsSetAmazonRefundId())
                        {
                            Console.WriteLine("                    AmazonRefundId");
                            Console.WriteLine("                        {0}", refundDetails.AmazonRefundId);
                        }
                        if (refundDetails.IsSetRefundReferenceId())
                        {
                            Console.WriteLine("                    RefundReferenceId");
                            Console.WriteLine("                        {0}", refundDetails.RefundReferenceId);
                        }
                        if (refundDetails.IsSetSellerRefundNote())
                        {
                            Console.WriteLine("                    SellerRefundNote");
                            Console.WriteLine("                        {0}", refundDetails.SellerRefundNote);
                        }
                        if (refundDetails.IsSetRefundType())
                        {
                            Console.WriteLine("                    RefundType");
                            Console.WriteLine("                        {0}", refundDetails.RefundType);
                        }
                        if (refundDetails.IsSetFeeRefunded())
                        {
                            Console.WriteLine("                    FeeRefunded");
                            Price feeRefunded = refundDetails.FeeRefunded;
                            if (feeRefunded.IsSetAmount())
                            {
                                Console.WriteLine("                        Amount");
                                Console.WriteLine("                            {0}", feeRefunded.Amount);
                            }
                            if (feeRefunded.IsSetCurrencyCode())
                            {
                                Console.WriteLine("                        CurrencyCode");
                                Console.WriteLine("                            {0}", feeRefunded.CurrencyCode);
                            }
                        }
                        if (refundDetails.IsSetCreationTimestamp())
                        {
                            Console.WriteLine("                    CreationTimestamp");
                            Console.WriteLine("                        {0}", refundDetails.CreationTimestamp);
                        }
                        if (refundDetails.IsSetRefundStatus())
                        {
                            Console.WriteLine("                    RefundStatus");
                            Status refundStatus = refundDetails.RefundStatus;
                            if (refundStatus.IsSetState())
                            {
                                Console.WriteLine("                        State");
                                Console.WriteLine("                            {0}", refundStatus.State);
                            }
                            if (refundStatus.IsSetLastUpdateTimestamp())
                            {
                                Console.WriteLine("                        LastUpdateTimestamp");
                                Console.WriteLine("                            {0}", refundStatus.LastUpdateTimestamp);
                            }
                            if (refundStatus.IsSetReasonCode())
                            {
                                Console.WriteLine("                        ReasonCode");
                                Console.WriteLine("                            {0}", refundStatus.ReasonCode);
                            }
                            if (refundStatus.IsSetReasonDescription())
                            {
                                Console.WriteLine("                        ReasonDescription");
                                Console.WriteLine("                            {0}", refundStatus.ReasonDescription);
                            }
                        }
                    }
                }
                if (response.IsSetResponseMetadata())
                {
                    Console.WriteLine("            ResponseMetadata");
                    ResponseMetadata responseMetadata = response.ResponseMetadata;
                    if (responseMetadata.IsSetRequestId())
                    {
                        Console.WriteLine("                RequestId");
                        Console.WriteLine("                    {0}", responseMetadata.RequestId);
                    }
                }
            }
            catch (OffAmazonPaymentsServiceException ex)
            {
                PrintException(ex);
            }
            return(response);
        }