From 7aaf98b5453e4198e7d2980a12d7a007ab86105b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armando=20Rodr=C3=ADguez?= <127134616+armando-rodriguez-cko@users.noreply.github.com> Date: Thu, 15 May 2025 15:50:50 +0200 Subject: [PATCH] Refactor payment context classes and update PaymentSessionsClient authorization type --- ...ommodationData.cs => AccommodationData.cs} | 5 +- .../Contexts/PaymentContextsProcessing.cs | 5 +- ...RiskData.cs => PartnerCustomerRiskData.cs} | 4 +- .../Payments/ProcessingSettings.cs | 73 ++++++++++--------- .../Payments/Response/GetPaymentResponse.cs | 2 +- .../Sessions/PaymentSessionsClient.cs | 2 +- .../Sessions/PaymentSessionsRequest.cs | 14 ++-- .../Sessions/PaymentSessionsResponse.cs | 3 + .../Hosted/HostedPaymentsIntegrationTest.cs | 2 +- .../Sessions/PaymentSessionsClientTest.cs | 6 +- 10 files changed, 65 insertions(+), 51 deletions(-) rename src/CheckoutSdk/Payments/{Contexts/PaymentContextsAccommodationData.cs => AccommodationData.cs} (87%) rename src/CheckoutSdk/Payments/{Contexts/PaymentContextsPartnerCustomerRiskData.cs => PartnerCustomerRiskData.cs} (51%) diff --git a/src/CheckoutSdk/Payments/Contexts/PaymentContextsAccommodationData.cs b/src/CheckoutSdk/Payments/AccommodationData.cs similarity index 87% rename from src/CheckoutSdk/Payments/Contexts/PaymentContextsAccommodationData.cs rename to src/CheckoutSdk/Payments/AccommodationData.cs index 34afd5d4..ca273160 100644 --- a/src/CheckoutSdk/Payments/Contexts/PaymentContextsAccommodationData.cs +++ b/src/CheckoutSdk/Payments/AccommodationData.cs @@ -1,10 +1,11 @@ using Checkout.Common; +using Checkout.Payments.Contexts; using System; using System.Collections.Generic; -namespace Checkout.Payments.Contexts +namespace Checkout.Payments { - public class PaymentContextsAccommodationData + public class AccommodationData { public string Name { get; set; } diff --git a/src/CheckoutSdk/Payments/Contexts/PaymentContextsProcessing.cs b/src/CheckoutSdk/Payments/Contexts/PaymentContextsProcessing.cs index c5309d65..9a6300f4 100644 --- a/src/CheckoutSdk/Payments/Contexts/PaymentContextsProcessing.cs +++ b/src/CheckoutSdk/Payments/Contexts/PaymentContextsProcessing.cs @@ -1,4 +1,3 @@ -using Checkout.Payments.Request.Source.Contexts; using System.Collections.Generic; namespace Checkout.Payments.Contexts @@ -23,12 +22,12 @@ public class PaymentContextsProcessing public UserAction? UserAction { get; set; } - public PaymentContextsPartnerCustomerRiskData PartnerCustomerRiskData { get; set; } + public PartnerCustomerRiskData PartnerCustomerRiskData { get; set; } public IList CustomPaymentMethodIds { get; set; } public IList AirlineData { get; set; } - public IList AccommodationData { get; set; } + public IList AccommodationData { get; set; } } } \ No newline at end of file diff --git a/src/CheckoutSdk/Payments/Contexts/PaymentContextsPartnerCustomerRiskData.cs b/src/CheckoutSdk/Payments/PartnerCustomerRiskData.cs similarity index 51% rename from src/CheckoutSdk/Payments/Contexts/PaymentContextsPartnerCustomerRiskData.cs rename to src/CheckoutSdk/Payments/PartnerCustomerRiskData.cs index 23fa4a1b..ff3d288c 100644 --- a/src/CheckoutSdk/Payments/Contexts/PaymentContextsPartnerCustomerRiskData.cs +++ b/src/CheckoutSdk/Payments/PartnerCustomerRiskData.cs @@ -1,6 +1,6 @@ -namespace Checkout.Payments.Contexts +namespace Checkout.Payments { - public class PaymentContextsPartnerCustomerRiskData + public class PartnerCustomerRiskData { public string Key { get; set; } diff --git a/src/CheckoutSdk/Payments/ProcessingSettings.cs b/src/CheckoutSdk/Payments/ProcessingSettings.cs index 07019946..cf647c3b 100644 --- a/src/CheckoutSdk/Payments/ProcessingSettings.cs +++ b/src/CheckoutSdk/Payments/ProcessingSettings.cs @@ -6,70 +6,77 @@ namespace Checkout.Payments { public class ProcessingSettings { - public string OrderId { get; set; } - + public bool? Aft { get; set; } + + public long? DiscountAmount { get; set; } + + public long? ShippingAmount { get; set; } + public long? TaxAmount { get; set; } + + public string InvoiceId { get; set; } + + public string BrandName { get; set; } - public long? DiscountAmount { get; set; } + public string Locale { get; set; } + + + public PartnerCustomerRiskData PartnerCustomerRiskData { get; set; } + + public IList CustomPaymentMethodIds { get; set; } + + public IList AirlineData { get; set; } + + public IList AccommodationData { get; set; } + + public string OrderId { get; set; } + + public long? SurchargeAmount { get; set; } public long? DutyAmount { get; set; } - - public long? ShippingAmount { get; set; } - public long? ShippingTaxAmount { get; set; } - public bool? Aft { get; set; } - - public PreferredSchema? PreferredScheme { get; set; } - + public CountryCode? PurchaseCountry { get; set; } public MerchantInitiatedReason? MerchantInitiatedReason { get; set; } public long? CampaignId { get; set; } + + public long? OriginalOrderAmount { get; set; } + + public string ReceiptId { get; set; } + + public string MerchantCallbackUrl { get; set; } + + public string LineOfBusiness { get; set; } + + public PanProcessedType? PanPreference { get; set; } + + public bool? ProvisionNetworkToken { get; set; } + + public PreferredSchema? PreferredScheme { get; set; } public ProductType? ProductType { get; set; } public string OpenId { get; set; } - public long? OriginalOrderAmount { get; set; } - - public string ReceiptId { get; set; } - public TerminalType? TerminalType { get; set; } public OsType? OsType { get; set; } - - public string InvoiceId { get; set; } - - public string BrandName { get; set; } - - public string Locale { get; set; } - + public ShippingPreference? ShippingPreference { get; set; } public UserAction? UserAction { get; set; } public IList> SetTransactionContext { get; set; } - public IList AirlineData { get; set; } - public DLocalProcessingSettings Dlocal { get; set; } public string OtpValue { get; set; } - public CountryCode? PurchaseCountry { get; set; } - - public IList CustomPaymentMethodIds { get; set; } - - public string MerchantCallbackUrl { get; set; } - - public string LineOfBusiness { get; set; } - public long? ShippingDelay { get; set; } public IList ShippingInfo { get; set; } - public PanProcessedType? PanPreference { get; set; } - [JsonProperty(PropertyName = "senderInformation")] public string SenderInformation { get; set; } } diff --git a/src/CheckoutSdk/Payments/Response/GetPaymentResponse.cs b/src/CheckoutSdk/Payments/Response/GetPaymentResponse.cs index fa6b6209..196eb7a7 100644 --- a/src/CheckoutSdk/Payments/Response/GetPaymentResponse.cs +++ b/src/CheckoutSdk/Payments/Response/GetPaymentResponse.cs @@ -88,7 +88,7 @@ public class GetPaymentResponse : Resource public bool? CkoNetworkTokenAvailable { get; set; } - public Request.PaymentInstruction Instruction { get; set; } + public PaymentInstruction Instruction { get; set; } } diff --git a/src/CheckoutSdk/Payments/Sessions/PaymentSessionsClient.cs b/src/CheckoutSdk/Payments/Sessions/PaymentSessionsClient.cs index 95099abd..8682fba5 100644 --- a/src/CheckoutSdk/Payments/Sessions/PaymentSessionsClient.cs +++ b/src/CheckoutSdk/Payments/Sessions/PaymentSessionsClient.cs @@ -8,7 +8,7 @@ public class PaymentSessionsClient : AbstractClient, IPaymentSessionsClient private const string PaymentSessionsPath = "payment-sessions"; public PaymentSessionsClient(IApiClient apiClient, CheckoutConfiguration configuration) : base(apiClient, - configuration, SdkAuthorizationType.SecretKey) + configuration, SdkAuthorizationType.SecretKeyOrOAuth) { } diff --git a/src/CheckoutSdk/Payments/Sessions/PaymentSessionsRequest.cs b/src/CheckoutSdk/Payments/Sessions/PaymentSessionsRequest.cs index 03919139..8deb8be4 100644 --- a/src/CheckoutSdk/Payments/Sessions/PaymentSessionsRequest.cs +++ b/src/CheckoutSdk/Payments/Sessions/PaymentSessionsRequest.cs @@ -14,9 +14,14 @@ public class PaymentSessionsRequest public Currency? Currency { get; set; } + public BillingInformation Billing { get; set; } + + public string SuccessUrl { get; set; } + + public string FailureUrl { get; set; } + public PaymentType? PaymentType { get; set; } - public BillingInformation Billing { get; set; } public BillingDescriptor BillingDescriptor { get; set; } @@ -31,6 +36,8 @@ public class PaymentSessionsRequest public PaymentRecipient Recipient { get; set; } public ProcessingSettings Processing { get; set; } + + public PaymentInstruction Instruction { get; set; } public string ProcessingChannelId { get; set; } @@ -52,13 +59,10 @@ public class PaymentSessionsRequest public string DisplayName { get; set; } - public string SuccessUrl { get; set; } - - public string FailureUrl { get; set; } public IDictionary Metadata { get; set; } = new Dictionary(); - public string Locale { get; set; } + public LocaleType? Locale { get; set; } [JsonProperty(PropertyName = "3ds")] public ThreeDsRequest ThreeDs { get; set; } diff --git a/src/CheckoutSdk/Payments/Sessions/PaymentSessionsResponse.cs b/src/CheckoutSdk/Payments/Sessions/PaymentSessionsResponse.cs index 5967cc4e..05b49181 100644 --- a/src/CheckoutSdk/Payments/Sessions/PaymentSessionsResponse.cs +++ b/src/CheckoutSdk/Payments/Sessions/PaymentSessionsResponse.cs @@ -8,5 +8,8 @@ public class PaymentSessionsResponse : Resource public string Id { get; set; } public string PaymentSessionToken { get; set; } + + public string PaymentSessionSecret { get; set; } + } } \ No newline at end of file diff --git a/test/CheckoutSdkTest/Payments/Hosted/HostedPaymentsIntegrationTest.cs b/test/CheckoutSdkTest/Payments/Hosted/HostedPaymentsIntegrationTest.cs index 42357e11..13825d19 100644 --- a/test/CheckoutSdkTest/Payments/Hosted/HostedPaymentsIntegrationTest.cs +++ b/test/CheckoutSdkTest/Payments/Hosted/HostedPaymentsIntegrationTest.cs @@ -158,7 +158,7 @@ protected static HostedPaymentRequest CreateHostedPaymentRequest() CaptureOn = DateTime.UtcNow, Instruction = new PaymentInstruction { - Purpose = PaymentPurposeType.Donations + Purpose = PaymentPurposeType.Donations, }, PaymentMethodConfiguration = new PaymentMethodConfiguration { diff --git a/test/CheckoutSdkTest/Payments/Sessions/PaymentSessionsClientTest.cs b/test/CheckoutSdkTest/Payments/Sessions/PaymentSessionsClientTest.cs index 089122c1..e1a4e239 100644 --- a/test/CheckoutSdkTest/Payments/Sessions/PaymentSessionsClientTest.cs +++ b/test/CheckoutSdkTest/Payments/Sessions/PaymentSessionsClientTest.cs @@ -22,7 +22,7 @@ public class PaymentSessionsClientTest : UnitTestFixture public PaymentSessionsClientTest() { - _sdkCredentials.Setup(credentials => credentials.GetSdkAuthorization(SdkAuthorizationType.SecretKey)) + _sdkCredentials.Setup(credentials => credentials.GetSdkAuthorization(SdkAuthorizationType.SecretKeyOrOAuth)) .Returns(_authorization); _configuration = new Mock(_sdkCredentials.Object, @@ -33,14 +33,14 @@ public PaymentSessionsClientTest() private async Task ShouldRequestAPaymentSessions() { PaymentSessionsRequest paymentSessionsRequest = new PaymentSessionsRequest(); - PaymentSessionsResponse paymentSessionsRequestResponse = new PaymentSessionsResponse(); + PaymentSessionsResponse paymentSessionsResponse = new PaymentSessionsResponse(); _apiClient.Setup(apiClient => apiClient.Post(PaymentSessions, _authorization, paymentSessionsRequest, CancellationToken.None, null)) - .ReturnsAsync(() => paymentSessionsRequestResponse); + .ReturnsAsync(() => paymentSessionsResponse); PaymentSessionsClient client = new PaymentSessionsClient(_apiClient.Object, _configuration.Object); PaymentSessionsResponse response =