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); }
/// <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); } } } }
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"); } }
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); }