Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/CheckoutSdk/Common/AccountHolderResponse.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,7 @@
public class AccountHolderResponse : AccountHolderBase
{
public AccountNameInquiryType? AccountNameInquiry { get; set; }

public AccountNameInquiryDetails AccountNameInquiryDetails { get; set; }
}
}
11 changes: 11 additions & 0 deletions src/CheckoutSdk/Common/AccountNameInquiryDetails.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
namespace Checkout.Common
{
public class AccountNameInquiryDetails
{
public NameCheckType? FirstName { get; set; }

public NameCheckType? MiddleName { get; set; }

public NameCheckType? LastName { get; set; }
}
}
6 changes: 3 additions & 3 deletions src/CheckoutSdk/Common/CardType.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ namespace Checkout.Common
{
public enum CardType
{
[EnumMember(Value = "Charge")] Charge,
[EnumMember(Value = "Credit")] Credit,
[EnumMember(Value = "Debit")] Debit,
[EnumMember(Value = "Deferred Debit")] DeferredDebit,
[EnumMember(Value = "Prepaid")] Prepaid
[EnumMember(Value = "Prepaid")] Prepaid,
[EnumMember(Value = "Charge")] Charge,
[EnumMember(Value = "Deferred Debit")] DeferredDebit
}
}
11 changes: 11 additions & 0 deletions src/CheckoutSdk/Common/NameCheckType.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
using System.Runtime.Serialization;

namespace Checkout.Common
{
public enum NameCheckType
{
[EnumMember(Value = "full_match")] FullMatch,
[EnumMember(Value = "partial_match")] PartialMatch,
[EnumMember(Value = "no_match")] NoMatch
}
}
2 changes: 1 addition & 1 deletion src/CheckoutSdk/Common/PaymentSourceType.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public enum PaymentSourceType
[EnumMember(Value = "rapipago")] RapiPago,
[EnumMember(Value = "klarna")] Klarna,
[EnumMember(Value = "sofort")] Sofort,
[EnumMember(Value = "knet")] KNet,
[EnumMember(Value = "knet")] Knet,
[EnumMember(Value = "qpay")] QPay,
[EnumMember(Value = "alipay")] Alipay,
[EnumMember(Value = "paypal")] PayPal,
Expand Down
3 changes: 3 additions & 0 deletions src/CheckoutSdk/Payments/PaymentStatus.cs
Original file line number Diff line number Diff line change
Expand Up @@ -48,5 +48,8 @@ public enum PaymentStatus

[EnumMember(Value = "Returned")]
Returned,

[EnumMember(Value = "Retry Scheduled")]
RetryScheduled,
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public class RequestKnetSource : AbstractRequestSource

public PaymentMethodDetails PaymentMethodDetails { get; set; }

public RequestKnetSource() : base(PaymentSourceType.KNet)
public RequestKnetSource() : base(PaymentSourceType.Knet)
{
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public class RequestKnetSource : AbstractRequestSource

public PaymentMethodDetails PaymentMethodDetails { get; set; }

public RequestKnetSource() : base(PaymentSourceType.KNet)
public RequestKnetSource() : base(PaymentSourceType.Knet)
{
}
}
Expand Down
12 changes: 6 additions & 6 deletions src/CheckoutSdk/Payments/Response/Source/CardResponseSource.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,12 @@ public class CardResponseSource : AbstractResponseSource, IResponseSource

public int? ExpiryYear { get; set; }

public string Last4 { get; set; }

public string Fingerprint { get; set; }

public string Bin { get; set; }

public string Name { get; set; }

public string Scheme { get; set; }
Expand All @@ -20,12 +26,6 @@ public class CardResponseSource : AbstractResponseSource, IResponseSource

public IList<string> LocalSchemes { get; set; }

public string Last4 { get; set; }

public string Fingerprint { get; set; }

public string Bin { get; set; }

public CardType? CardType { get; set; }

public CardCategory? CardCategory { get; set; }
Expand Down
50 changes: 50 additions & 0 deletions src/CheckoutSdk/Payments/Response/Source/KnetResponseSource.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
using Checkout.Common;

namespace Checkout.Payments.Response.Source
{
public class KnetResponseSource : AbstractResponseSource, IResponseSource
{
public string Language { get; set; }

public string UserDefinedField1 { get; set; }

public string UserDefinedField2 { get; set; }

public string UserDefinedField3 { get; set; }

public string UserDefinedField4 { get; set; }

public string UserDefinedField5 { get; set; }

public string CardToken { get; set; }

public string Ptlf { get; set; }

public string KnetPaymentId { get; set; }

public string KnetResult { get; set; }

public string InquiryResult { get; set; }

public string BankReference { get; set; }

public string KnetTransactionId { get; set; }

public string AuthCode { get; set; }

public string AuthResponseCode { get; set; }

public string PostDate { get; set; }

public string Avr { get; set; }

public string Error { get; set; }

public string ErrorText { get; set; }

public new PaymentSourceType? Type()
{
return base.Type;
}
}
}
2 changes: 1 addition & 1 deletion src/CheckoutSdk/Payments/Sessions/PaymentMethodsType.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public enum PaymentMethodsType
[EnumMember(Value = "ideal")] Ideal,
[EnumMember(Value = "kakaopay")] KakaoPay,
[EnumMember(Value = "klarna")] Klarna,
[EnumMember(Value = "knet")] KNet,
[EnumMember(Value = "knet")] Knet,
[EnumMember(Value = "mbway")] MBWay,
[EnumMember(Value = "multibanco")] Multibanco,
[EnumMember(Value = "p24")] Przelewy24,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,11 @@ private static IResponseSource CreateResponse(string sourceType)
return new CurrencyAccountResponseSource();
}

if (CheckoutUtils.GetEnumMemberValue(PaymentSourceType.Knet).Equals(sourceType))
{
return new KnetResponseSource();
}

if (CheckoutUtils.GetEnumMemberValue(PaymentSourceType.PayPal).Equals(sourceType))
{
return new PaymentContextsPayPalResponseSource();
Expand Down
3 changes: 3 additions & 0 deletions test/CheckoutSdkTest/CheckoutSdkTest.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,9 @@
<None Update="Resources\PaymentContextsPayPalDetailsResponse.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="Resources\KnetResponse.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
<ItemGroup>
<Content Include="Resources\AppSettingsPreviousTest.json">
Expand Down
12 changes: 12 additions & 0 deletions test/CheckoutSdkTest/JsonSerializerTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
using Checkout.Issuing.Controls.Responses.Create;
using Checkout.Payments.Contexts;
using Checkout.Payments.Response;
using Checkout.Payments.Response.Source;
using Checkout.Payments.Response.Source.Contexts;
using Checkout.Payments.Sender;
using Shouldly;
Expand Down Expand Up @@ -117,6 +118,17 @@ public void ShouldDeserializeDefaultCardCTypeResponse()
cardDetailsResponse.ShouldNotBeNull();
cardDetailsResponse.Type.ShouldBe(CardType.Physical);
}

[Fact]
public void ShouldDeserializeKnetResponse()
{
var fileContent = GetJsonFileContent("./Resources/KnetResponse.json");
var paymentResponse =
(PaymentResponse)new JsonSerializer().Deserialize(fileContent,
typeof(PaymentResponse));
paymentResponse.ShouldNotBeNull();
paymentResponse.Source.ShouldBeOfType(typeof(KnetResponseSource));
}

[Fact]
public void ShouldDeserializeDateTimeFormatsFromJson()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ protected static HostedPaymentRequest CreateHostedPaymentRequest()
{
PaymentSourceType.EPS,
PaymentSourceType.Ideal,
PaymentSourceType.KNet
PaymentSourceType.Knet
},
Products = new List<Product>
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ private async Task ShouldCreateAndGetPaymentLink()
AllowPaymentMethods =
new List<PaymentSourceType> { PaymentSourceType.Card, PaymentSourceType.Ideal },
DisabledPaymentMethods =
new List<PaymentSourceType> { PaymentSourceType.EPS, PaymentSourceType.Ideal, PaymentSourceType.KNet },
new List<PaymentSourceType> { PaymentSourceType.EPS, PaymentSourceType.Ideal, PaymentSourceType.Knet },
Products = new List<Product>
{
new Product
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -544,7 +544,7 @@ private async Task ShouldMakeKnetPayment()
payment.Source.ShouldBeOfType(typeof(AlternativePaymentSourceResponse));
var source = (AlternativePaymentSourceResponse)payment.Source;
source.Count.ShouldBePositive();
source.Type().ShouldBe(PaymentSourceType.KNet);
source.Type().ShouldBe(PaymentSourceType.Knet);
}

[Fact(Skip = "unavailable")]
Expand Down
39 changes: 39 additions & 0 deletions test/CheckoutSdkTest/Resources/KnetResponse.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
{
"id": "pay_4gubyq2w335upc54dx7a4257lq",
"requested_on": "2024-05-23T17:04:05Z",
"source": {
"type": "knet",
"language": "en",
"user_defined_field1": "first user defined field",
"user_defined_field2": "second user defined field",
"user_defined_field4": "fourth user defined field",
"card_token": "01234567",
"ptlf": "96033587c7b5",
"knet_payment_id": "100201914315601265",
"knet_result": "Captured",
"bank_reference": "914310000349",
"knet_transaction_id": "201914384388126",
"auth_code": "B00775",
"post_date": "0524",
"avr": "N"
},
"amount": 1000,
"currency": "KWD",
"payment_type": "Regular",
"status": "Captured",
"approved": true,
"risk": {
"flagged": false
},
"customer": {
"id": "cus_kx75h5tcegyednxeyvtn6vy3sq"
},
"_links": {
"self": {
"href": "https://api.sandbox.checkout.com/payments/pay_c2ynk5nnjacuxia3r4matf5wmu"
},
"actions": {
"href": "https://api.sandbox.checkout.com/payments/pay_c2ynk5nnjacuxia3r4matf5wmu/actions"
}
}
}
Loading