public void CloseOrderReference(AmazonPayClient client, string orderReferenceId) { var request = new CloseOrderReferenceRequest(); request.SellerId = client.Settings.SellerId; request.AmazonOrderReferenceId = orderReferenceId; var response = client.Service.CloseOrderReference(request); }
public OrderReferenceDetails SetOrderReferenceDetails(AmazonPayClient client, string orderReferenceId, decimal?orderTotalAmount, string currencyCode, string orderGuid = null, string storeName = null) { var request = new SetOrderReferenceDetailsRequest(); request.SellerId = client.Settings.SellerId; request.AmazonOrderReferenceId = orderReferenceId; var attributes = new OrderReferenceAttributes(); //attributes.SellerNote = client.Settings.SellerNoteOrderReference.Truncate(1024); attributes.PlatformId = AmazonPayCore.PlatformId; if (orderTotalAmount.HasValue) { attributes.OrderTotal = new OrderTotal { Amount = orderTotalAmount.Value.ToString("0.00", CultureInfo.InvariantCulture), CurrencyCode = currencyCode ?? "EUR" }; } if (orderGuid.HasValue()) { attributes.SellerOrderAttributes = new SellerOrderAttributes { SellerOrderId = orderGuid, StoreName = storeName }; } request.OrderReferenceAttributes = attributes; var response = client.Service.SetOrderReferenceDetails(request); if (response != null && response.IsSetSetOrderReferenceDetailsResult()) { var detailsResult = response.SetOrderReferenceDetailsResult; if (detailsResult.IsSetOrderReferenceDetails()) { return(detailsResult.OrderReferenceDetails); } } return(null); }
public OrderReferenceDetails SetOrderReferenceDetails(AmazonPayClient client, string orderReferenceId, string currencyCode, List <OrganizedShoppingCartItem> cart) { decimal orderTotalDiscountAmountBase = decimal.Zero; Discount orderTotalAppliedDiscount = null; List <AppliedGiftCard> appliedGiftCards = null; int redeemedRewardPoints = 0; decimal redeemedRewardPointsAmount = decimal.Zero; decimal?shoppingCartTotalBase = _orderTotalCalculationService.GetShoppingCartTotal(cart, out orderTotalDiscountAmountBase, out orderTotalAppliedDiscount, out appliedGiftCards, out redeemedRewardPoints, out redeemedRewardPointsAmount); if (shoppingCartTotalBase.HasValue) { return(SetOrderReferenceDetails(client, orderReferenceId, shoppingCartTotalBase, currencyCode)); } return(null); }
public string Refund(AmazonPayClient client, RefundPaymentRequest refund, RefundPaymentResult result) { result.NewPaymentStatus = refund.Order.PaymentStatus; string amazonRefundId = null; var store = _services.StoreService.GetStoreById(refund.Order.StoreId); var request = new RefundRequest(); request.SellerId = client.Settings.SellerId; request.AmazonCaptureId = refund.Order.CaptureTransactionId; request.RefundReferenceId = GetRandomId("Refund"); //request.SellerRefundNote = client.Settings.SellerNoteRefund.Truncate(255); request.RefundAmount = new Price { Amount = refund.AmountToRefund.ToString("0.00", CultureInfo.InvariantCulture), CurrencyCode = store.PrimaryStoreCurrency.CurrencyCode }; var response = client.Service.Refund(request); if (response != null && response.IsSetRefundResult() && response.RefundResult.IsSetRefundDetails()) { var details = response.RefundResult.RefundDetails; amazonRefundId = details.AmazonRefundId; if (details.IsSetRefundStatus() && details.RefundStatus.IsSetState()) { if (refund.IsPartialRefund) { result.NewPaymentStatus = Core.Domain.Payments.PaymentStatus.PartiallyRefunded; } else { result.NewPaymentStatus = Core.Domain.Payments.PaymentStatus.Refunded; } } } return(amazonRefundId); }
public OrderReferenceDetails GetOrderReferenceDetails(AmazonPayClient client, string orderReferenceId, string addressConsentToken = null) { var request = new GetOrderReferenceDetailsRequest(); request.SellerId = client.Settings.SellerId; request.AmazonOrderReferenceId = orderReferenceId; request.AddressConsentToken = addressConsentToken; var response = client.Service.GetOrderReferenceDetails(request); if (response != null && response.IsSetGetOrderReferenceDetailsResult()) { var detailsResult = response.GetOrderReferenceDetailsResult; if (detailsResult.IsSetOrderReferenceDetails()) { return(detailsResult.OrderReferenceDetails); } } return(null); }
public void Capture(AmazonPayClient client, CapturePaymentRequest capture, CapturePaymentResult result) { result.NewPaymentStatus = capture.Order.PaymentStatus; var request = new CaptureRequest(); var store = _services.StoreService.GetStoreById(capture.Order.StoreId); request.SellerId = client.Settings.SellerId; request.AmazonAuthorizationId = capture.Order.AuthorizationTransactionId; request.CaptureReferenceId = GetRandomId("Capture"); //request.SellerCaptureNote = client.Settings.SellerNoteCapture.Truncate(255); request.CaptureAmount = new Price { Amount = capture.Order.OrderTotal.ToString("0.00", CultureInfo.InvariantCulture), CurrencyCode = store.PrimaryStoreCurrency.CurrencyCode }; var response = client.Service.Capture(request); if (response != null && response.IsSetCaptureResult() && response.CaptureResult.IsSetCaptureDetails()) { var details = response.CaptureResult.CaptureDetails; result.CaptureTransactionId = details.AmazonCaptureId; if (details.IsSetCaptureStatus() && details.CaptureStatus.IsSetState()) { result.CaptureTransactionResult = details.CaptureStatus.State.ToString().Grow(details.CaptureStatus.ReasonCode, " "); if (details.CaptureStatus.State == PaymentStatus.COMPLETED) { result.NewPaymentStatus = Core.Domain.Payments.PaymentStatus.Paid; } } } }
public RefundDetails GetRefundDetails(AmazonPayClient client, string refundId, out AmazonPayApiData data) { data = new AmazonPayApiData(); RefundDetails details = null; var request = new GetRefundDetailsRequest(); request.SellerId = client.Settings.SellerId; request.AmazonRefundId = refundId; var response = client.Service.GetRefundDetails(request); if (response != null && response.IsSetGetRefundDetailsResult()) { var result = response.GetRefundDetailsResult; if (result != null && result.IsSetRefundDetails()) { details = result.RefundDetails; } } try { data.MessageType = "GetRefundDetails"; if (response.IsSetResponseMetadata() && response.ResponseMetadata.IsSetRequestId()) { data.MessageId = response.ResponseMetadata.RequestId; } if (details != null) { if (details.IsSetAmazonRefundId()) { data.RefundId = details.AmazonRefundId; } if (details.IsSetRefundReferenceId()) { data.ReferenceId = details.RefundReferenceId; } if (details.IsSetFeeRefunded()) { data.Fee = new AmazonPayApiPrice(details.FeeRefunded.Amount, details.FeeRefunded.CurrencyCode); } if (details.IsSetRefundAmount()) { data.RefundedAmount = new AmazonPayApiPrice(details.RefundAmount.Amount, details.RefundAmount.CurrencyCode); } if (details.IsSetCreationTimestamp()) { data.Creation = details.CreationTimestamp; } if (details.IsSetRefundStatus()) { data.ReasonCode = details.RefundStatus.ReasonCode; data.ReasonDescription = details.RefundStatus.ReasonDescription; data.State = details.RefundStatus.State.ToString(); data.StateLastUpdate = details.RefundStatus.LastUpdateTimestamp; } } } catch (Exception exc) { exc.Dump(); } return(details); }
public AuthorizationDetails GetAuthorizationDetails(AmazonPayClient client, string authorizationId, out AmazonPayApiData data) { data = new AmazonPayApiData(); AuthorizationDetails details = null; var request = new GetAuthorizationDetailsRequest(); request.SellerId = client.Settings.SellerId; request.AmazonAuthorizationId = authorizationId; var response = client.Service.GetAuthorizationDetails(request); if (response.IsSetGetAuthorizationDetailsResult()) { var result = response.GetAuthorizationDetailsResult; if (result != null && result.IsSetAuthorizationDetails()) { details = result.AuthorizationDetails; } } try { data.MessageType = "GetAuthorizationDetails"; if (response.IsSetResponseMetadata() && response.ResponseMetadata.IsSetRequestId()) { data.MessageId = response.ResponseMetadata.RequestId; } if (details != null) { if (details.IsSetAmazonAuthorizationId()) { data.AuthorizationId = details.AmazonAuthorizationId; } if (details.IsSetAuthorizationReferenceId()) { data.ReferenceId = details.AuthorizationReferenceId; } if (details.IsSetIdList() && details.IdList.IsSetmember()) { data.CaptureId = (details.IdList.member != null && details.IdList.member.Count > 0 ? details.IdList.member[0] : null); } if (details.IsSetAuthorizationFee()) { data.Fee = new AmazonPayApiPrice(details.AuthorizationFee.Amount, details.AuthorizationFee.CurrencyCode); } if (details.IsSetAuthorizationAmount()) { data.AuthorizedAmount = new AmazonPayApiPrice(details.AuthorizationAmount.Amount, details.AuthorizationAmount.CurrencyCode); } if (details.IsSetCapturedAmount()) { data.CapturedAmount = new AmazonPayApiPrice(details.CapturedAmount.Amount, details.CapturedAmount.CurrencyCode); } if (details.IsSetCaptureNow()) { data.CaptureNow = details.CaptureNow; } if (details.IsSetCreationTimestamp()) { data.Creation = details.CreationTimestamp; } if (details.IsSetExpirationTimestamp()) { data.Expiration = details.ExpirationTimestamp; } if (details.IsSetAuthorizationStatus()) { data.ReasonCode = details.AuthorizationStatus.ReasonCode; data.ReasonDescription = details.AuthorizationStatus.ReasonDescription; data.State = details.AuthorizationStatus.State.ToString(); data.StateLastUpdate = details.AuthorizationStatus.LastUpdateTimestamp; } } } catch (Exception exc) { exc.Dump(); } return(details); }
/// <summary>Asynchronous as long as we do not set TransactionTimeout to 0. So transaction is always in pending state after return.</summary> public void Authorize(AmazonPayClient client, ProcessPaymentResult result, List <string> errors, string orderReferenceId, decimal orderTotalAmount, string currencyCode, string orderGuid) { var request = new AuthorizeRequest(); request.SellerId = client.Settings.SellerId; request.AmazonOrderReferenceId = orderReferenceId; request.AuthorizationReferenceId = GetRandomId("Authorize"); request.CaptureNow = (client.Settings.TransactionType == AmazonPayTransactionType.AuthorizeAndCapture); //request.SellerAuthorizationNote = client.Settings.SellerNoteAuthorization.Truncate(256); request.AuthorizationAmount = new Price() { Amount = orderTotalAmount.ToString("0.00", CultureInfo.InvariantCulture), CurrencyCode = currencyCode ?? "EUR" }; var response = client.Service.Authorize(request); if (response != null && response.IsSetAuthorizeResult() && response.AuthorizeResult.IsSetAuthorizationDetails()) { var details = response.AuthorizeResult.AuthorizationDetails; result.AuthorizationTransactionId = details.AmazonAuthorizationId; result.AuthorizationTransactionCode = details.AuthorizationReferenceId; if (details.IsSetAuthorizationStatus()) { var status = details.AuthorizationStatus; if (status.IsSetState()) { result.AuthorizationTransactionResult = status.State.ToString(); } if (request.CaptureNow && details.IsSetIdList() && details.IdList.IsSetmember() && details.IdList.member.Count() > 0) { result.CaptureTransactionId = details.IdList.member[0]; } if (status.IsSetReasonCode()) { if (status.ReasonCode.IsCaseInsensitiveEqual("InvalidPaymentMethod") || status.ReasonCode.IsCaseInsensitiveEqual("AmazonRejected") || status.ReasonCode.IsCaseInsensitiveEqual("ProcessingFailure") || status.ReasonCode.IsCaseInsensitiveEqual("TransactionTimedOut") || status.ReasonCode.IsCaseInsensitiveEqual("TransactionTimeout")) { if (status.IsSetReasonDescription()) { errors.Add("{0}: {1}".FormatWith(status.ReasonCode, status.ReasonDescription)); } else { errors.Add(status.ReasonCode); } } } } } // The response to the Authorize call includes the AuthorizationStatus response element, which will be always be // set to Pending if you have selected the asynchronous mode of operation. result.NewPaymentStatus = Core.Domain.Payments.PaymentStatus.Pending; }