From a5ae6fe6cf73409d9400af4a6b6aec682f2cf952 Mon Sep 17 00:00:00 2001 From: Onur Polattimur Date: Mon, 25 Sep 2023 14:08:20 +0300 Subject: [PATCH] Add ApplePay integration --- Craftgate/Adapter/PaymentAdapter.cs | 16 ++++++++++++++++ Craftgate/Model/TokenizedCardType.cs | 9 +++++++++ .../ApplePayMerchantSessionCreateRequest.cs | 11 +++++++++++ Craftgate/Request/Dto/Card.cs | 1 + Craftgate/Request/Dto/TokenizedCard.cs | 11 +++++++++++ 5 files changed, 48 insertions(+) create mode 100644 Craftgate/Model/TokenizedCardType.cs create mode 100644 Craftgate/Request/ApplePayMerchantSessionCreateRequest.cs create mode 100644 Craftgate/Request/Dto/TokenizedCard.cs diff --git a/Craftgate/Adapter/PaymentAdapter.cs b/Craftgate/Adapter/PaymentAdapter.cs index 739bb52..bbf7086 100644 --- a/Craftgate/Adapter/PaymentAdapter.cs +++ b/Craftgate/Adapter/PaymentAdapter.cs @@ -516,6 +516,22 @@ public Task UpdatePaymentTransactionAsync( CreateHeaders(updatePaymentTransactionRequest, path, RequestOptions), updatePaymentTransactionRequest); } + public object CreateApplePayMerchantSession( + ApplePayMerchantSessionCreateRequest applePayMerchantSessionCreateRequest) + { + var path = "/payment/v1/apple-pay/merchant-sessions"; + return RestClient.Post(RequestOptions.BaseUrl + path, + CreateHeaders(applePayMerchantSessionCreateRequest, path, RequestOptions), applePayMerchantSessionCreateRequest); + } + + public Task CreateApplePayMerchantSessionAsync( + ApplePayMerchantSessionCreateRequest applePayMerchantSessionCreateRequest) + { + var path = "/payment/v1/apple-pay/merchant-sessions"; + return AsyncRestClient.Post(RequestOptions.BaseUrl + path, + CreateHeaders(applePayMerchantSessionCreateRequest, path, RequestOptions), applePayMerchantSessionCreateRequest); + } + public bool Is3DSecureCallbackVerified(string threeDSecureCallbackKey, Dictionary parameters) { string hash = parameters["hash"]; diff --git a/Craftgate/Model/TokenizedCardType.cs b/Craftgate/Model/TokenizedCardType.cs new file mode 100644 index 0000000..e81c15c --- /dev/null +++ b/Craftgate/Model/TokenizedCardType.cs @@ -0,0 +1,9 @@ +using System.Runtime.Serialization; + +namespace Craftgate.Model +{ + public enum TokenizedCardType + { + [EnumMember(Value = "APPLE_PAY")] APPLE_PAY, + } +} \ No newline at end of file diff --git a/Craftgate/Request/ApplePayMerchantSessionCreateRequest.cs b/Craftgate/Request/ApplePayMerchantSessionCreateRequest.cs new file mode 100644 index 0000000..a0b6b5d --- /dev/null +++ b/Craftgate/Request/ApplePayMerchantSessionCreateRequest.cs @@ -0,0 +1,11 @@ +namespace Craftgate.Request +{ + public class ApplePayMerchantSessionCreateRequest + { + public string MerchantIdentifier { get; set; } + public string DisplayName { get; set; } + public string Initiative { get; set; } + public string InitiativeContext { get; set; } + public string ValidationUrl { get; set; } + } +} \ No newline at end of file diff --git a/Craftgate/Request/Dto/Card.cs b/Craftgate/Request/Dto/Card.cs index 102c7a4..5dbb47c 100644 --- a/Craftgate/Request/Dto/Card.cs +++ b/Craftgate/Request/Dto/Card.cs @@ -17,5 +17,6 @@ public class Card public string LastFourDigits { get; set; } public string CardHolderIdentityNumber { get; set; } public Loyalty Loyalty { get; set; } + public TokenizedCard TokenizedCard { get; set; } } } \ No newline at end of file diff --git a/Craftgate/Request/Dto/TokenizedCard.cs b/Craftgate/Request/Dto/TokenizedCard.cs new file mode 100644 index 0000000..d14fd24 --- /dev/null +++ b/Craftgate/Request/Dto/TokenizedCard.cs @@ -0,0 +1,11 @@ +using System.Collections.Generic; +using Craftgate.Model; + +namespace Craftgate.Request.Dto +{ + public class TokenizedCard + { + public TokenizedCardType? Type { get; set; } + public Dictionary Data { get; set; } + } +} \ No newline at end of file