From 84bdad0df28a7bbff16ff3ed4470d626fb1c9dfe Mon Sep 17 00:00:00 2001 From: Tim van den Hof Date: Thu, 22 Jul 2021 20:36:43 +0200 Subject: [PATCH 01/37] Ignore .vs folder --- .gitignore | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index bba970e..6aef1ab 100644 --- a/.gitignore +++ b/.gitignore @@ -344,4 +344,6 @@ ASALocalRun/ healthchecksdb # Backup folder for Package Reference Convert tool in Visual Studio 2017 -MigrationBackup/ \ No newline at end of file +MigrationBackup/ + +.vs/ \ No newline at end of file From e21bb84afc96d8461b7258e24e4d5bcf7cc15f94 Mon Sep 17 00:00:00 2001 From: Tim van den Hof Date: Thu, 22 Jul 2021 20:37:29 +0200 Subject: [PATCH 02/37] Retarget test project from .NET 4.7.1 to 4.8 --- BuckarooSdk.Tests/App.config | 2 +- BuckarooSdk.Tests/BuckarooSdk.Tests.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/BuckarooSdk.Tests/App.config b/BuckarooSdk.Tests/App.config index 3911efe..e7c016a 100644 --- a/BuckarooSdk.Tests/App.config +++ b/BuckarooSdk.Tests/App.config @@ -8,7 +8,7 @@ - + diff --git a/BuckarooSdk.Tests/BuckarooSdk.Tests.csproj b/BuckarooSdk.Tests/BuckarooSdk.Tests.csproj index 04a2220..bedf702 100644 --- a/BuckarooSdk.Tests/BuckarooSdk.Tests.csproj +++ b/BuckarooSdk.Tests/BuckarooSdk.Tests.csproj @@ -10,7 +10,7 @@ Properties BuckarooSdk.Tests BuckarooSdk.Tests - v4.7.1 + v4.8 512 {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 10.0 From 9db5a2517a464e3a539c3e54d1c5b6fa287a2ed0 Mon Sep 17 00:00:00 2001 From: Tim van den Hof Date: Thu, 22 Jul 2021 20:38:19 +0200 Subject: [PATCH 03/37] Ignore .vs folder correctly --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 6aef1ab..8e2b700 100644 --- a/.gitignore +++ b/.gitignore @@ -346,4 +346,4 @@ healthchecksdb # Backup folder for Package Reference Convert tool in Visual Studio 2017 MigrationBackup/ -.vs/ \ No newline at end of file +.vs/** From 56978274624bf286360e2f47fd655453f639ebd0 Mon Sep 17 00:00:00 2001 From: Tim van den Hof Date: Thu, 22 Jul 2021 20:43:33 +0200 Subject: [PATCH 04/37] Add .NET default editorconfig to prevent tabs --- .editorconfig | 123 ++++++++++++++++++++++++++++++++++++++++++++++++ BuckarooSdk.sln | 3 +- 2 files changed, 125 insertions(+), 1 deletion(-) create mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..49de0d3 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,123 @@ +# To learn more about .editorconfig see https://aka.ms/editorconfigdocs +############################### +# Core EditorConfig Options # +############################### +# All files +[*] +indent_style = space +# Code files +[*.{cs,csx,vb,vbx}] +indent_size = 4 +insert_final_newline = true +charset = utf-8-bom +############################### +# .NET Coding Conventions # +############################### +[*.{cs,vb}] +# Organize usings +dotnet_sort_system_directives_first = true +# this. preferences +dotnet_style_qualification_for_field = false:silent +dotnet_style_qualification_for_property = false:silent +dotnet_style_qualification_for_method = false:silent +dotnet_style_qualification_for_event = false:silent +# Language keywords vs BCL types preferences +dotnet_style_predefined_type_for_locals_parameters_members = true:silent +dotnet_style_predefined_type_for_member_access = true:silent +# Parentheses preferences +dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:silent +dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:silent +dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:silent +dotnet_style_parentheses_in_other_operators = never_if_unnecessary:silent +# Modifier preferences +dotnet_style_require_accessibility_modifiers = for_non_interface_members:silent +dotnet_style_readonly_field = true:suggestion +# Expression-level preferences +dotnet_style_object_initializer = true:suggestion +dotnet_style_collection_initializer = true:suggestion +dotnet_style_explicit_tuple_names = true:suggestion +dotnet_style_null_propagation = true:suggestion +dotnet_style_coalesce_expression = true:suggestion +dotnet_style_prefer_is_null_check_over_reference_equality_method = true:silent +dotnet_style_prefer_inferred_tuple_names = true:suggestion +dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion +dotnet_style_prefer_auto_properties = true:silent +dotnet_style_prefer_conditional_expression_over_assignment = true:silent +dotnet_style_prefer_conditional_expression_over_return = true:silent +############################### +# Naming Conventions # +############################### +# Style Definitions +dotnet_naming_style.pascal_case_style.capitalization = pascal_case +# Use PascalCase for constant fields +dotnet_naming_rule.constant_fields_should_be_pascal_case.severity = suggestion +dotnet_naming_rule.constant_fields_should_be_pascal_case.symbols = constant_fields +dotnet_naming_rule.constant_fields_should_be_pascal_case.style = pascal_case_style +dotnet_naming_symbols.constant_fields.applicable_kinds = field +dotnet_naming_symbols.constant_fields.applicable_accessibilities = * +dotnet_naming_symbols.constant_fields.required_modifiers = const +############################### +# C# Coding Conventions # +############################### +[*.cs] +# var preferences +csharp_style_var_for_built_in_types = true:silent +csharp_style_var_when_type_is_apparent = true:silent +csharp_style_var_elsewhere = true:silent +# Expression-bodied members +csharp_style_expression_bodied_methods = false:silent +csharp_style_expression_bodied_constructors = false:silent +csharp_style_expression_bodied_operators = false:silent +csharp_style_expression_bodied_properties = true:silent +csharp_style_expression_bodied_indexers = true:silent +csharp_style_expression_bodied_accessors = true:silent +# Pattern matching preferences +csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion +csharp_style_pattern_matching_over_as_with_null_check = true:suggestion +# Null-checking preferences +csharp_style_throw_expression = true:suggestion +csharp_style_conditional_delegate_call = true:suggestion +# Modifier preferences +csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:suggestion +# Expression-level preferences +csharp_prefer_braces = true:silent +csharp_style_deconstructed_variable_declaration = true:suggestion +csharp_prefer_simple_default_expression = true:suggestion +csharp_style_pattern_local_over_anonymous_function = true:suggestion +csharp_style_inlined_variable_declaration = true:suggestion +############################### +# C# Formatting Rules # +############################### +# New line preferences +csharp_new_line_before_open_brace = all +csharp_new_line_before_else = true +csharp_new_line_before_catch = true +csharp_new_line_before_finally = true +csharp_new_line_before_members_in_object_initializers = true +csharp_new_line_before_members_in_anonymous_types = true +csharp_new_line_between_query_expression_clauses = true +# Indentation preferences +csharp_indent_case_contents = true +csharp_indent_switch_labels = true +csharp_indent_labels = flush_left +# Space preferences +csharp_space_after_cast = false +csharp_space_after_keywords_in_control_flow_statements = true +csharp_space_between_method_call_parameter_list_parentheses = false +csharp_space_between_method_declaration_parameter_list_parentheses = false +csharp_space_between_parentheses = false +csharp_space_before_colon_in_inheritance_clause = true +csharp_space_after_colon_in_inheritance_clause = true +csharp_space_around_binary_operators = before_and_after +csharp_space_between_method_declaration_empty_parameter_list_parentheses = false +csharp_space_between_method_call_name_and_opening_parenthesis = false +csharp_space_between_method_call_empty_parameter_list_parentheses = false +# Wrapping preferences +csharp_preserve_single_line_statements = true +csharp_preserve_single_line_blocks = true +############################### +# VB Coding Conventions # +############################### +[*.vb] +# Modifier preferences +visual_basic_preferred_modifier_order = Partial,Default,Private,Protected,Public,Friend,NotOverridable,Overridable,MustOverride,Overloads,Overrides,MustInherit,NotInheritable,Static,Shared,Shadows,ReadOnly,WriteOnly,Dim,Const,WithEvents,Widening,Narrowing,Custom,Async:suggestion diff --git a/BuckarooSdk.sln b/BuckarooSdk.sln index 0e9b8d2..d1f264b 100644 --- a/BuckarooSdk.sln +++ b/BuckarooSdk.sln @@ -3,10 +3,11 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 16 VisualStudioVersion = 16.0.28809.33 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BuckarooSdk", "BuckarooSdk\BuckarooSdk.csproj", "{CB68F005-23BC-42B0-8D90-787F97E9E646}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BuckarooSdk", "BuckarooSdk\BuckarooSdk.csproj", "{CB68F005-23BC-42B0-8D90-787F97E9E646}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{6F0BFC81-9AA4-45C6-8635-EC9B5FE50DA0}" ProjectSection(SolutionItems) = preProject + .editorconfig = .editorconfig .gitattributes = .gitattributes .gitignore = .gitignore EndProjectSection From d90f3f57fe09936d748812181ad0d2a400e1301f Mon Sep 17 00:00:00 2001 From: Tim van den Hof Date: Thu, 22 Jul 2021 21:09:23 +0200 Subject: [PATCH 05/37] Untabify mixed tab-spaces files --- .vs/VSWorkspaceState.json | 1 + .vs/slnx.sqlite | Bin 1601536 -> 1601536 bytes BuckarooSdk.Tests/Mocks/Afterpay.cs | 308 ++++---- .../Services/Afterpay/AfterpayTests.cs | 330 ++++----- .../Services/Giftcard/VVVGiftcardTests.cs | 118 +-- .../Services/PayPerEmail/PayPerEmailTests.cs | 20 +- BuckarooSdk/Base/AuthenticatedRequest.cs | 64 +- BuckarooSdk/Base/PushHandler.cs | 100 +-- BuckarooSdk/Base/ResponseHandler.cs | 2 +- BuckarooSdk/Constants/Services.cs | 102 +-- BuckarooSdk/Data/ConfiguredDataRequest.cs | 134 ++-- BuckarooSdk/Data/Data.cs | 90 +-- BuckarooSdk/DataTypes/AdditionalParameter.cs | 26 +- BuckarooSdk/DataTypes/AdditionalParameters.cs | 30 +- BuckarooSdk/DataTypes/ChannelEnum.cs | 62 +- BuckarooSdk/DataTypes/ContinueOnIncomplete.cs | 18 +- BuckarooSdk/DataTypes/CustomParameter.cs | 20 +- BuckarooSdk/DataTypes/CustomParameters.cs | 26 +- BuckarooSdk/DataTypes/IpAddress.cs | 18 +- BuckarooSdk/DataTypes/IpProtocolVersion.cs | 18 +- .../ParameterGroups/Afterpay/Article.cs | 32 +- .../DataTypes/RequestBases/TransactionBase.cs | 216 +++--- .../RequestBases/TransactionStatusBase.cs | 66 +- .../DataTypes/Response/ConsumerMessage.cs | 40 +- BuckarooSdk/DataTypes/Response/DataType.cs | 84 +-- .../DataTypes/Response/Error/ActionError.cs | 46 +- .../DataTypes/Response/Error/ChannelError.cs | 48 +- .../Response/Error/CustomParameterError.cs | 38 +- .../Response/Error/ParameterError.cs | 54 +- .../DataTypes/Response/Error/RequestErrors.cs | 40 +- .../DataTypes/Response/Error/ServiceError.cs | 36 +- .../DataTypes/Response/MutationType.cs | 42 +- .../DataTypes/Response/PayRemainderDetails.cs | 22 +- .../DataTypes/Response/RelatedTransaction.cs | 16 +- .../Response/RequestInformationParameter.cs | 40 +- .../DataTypes/Response/RequiredAction.cs | 6 +- .../DataTypes/Response/ResponseParameter.cs | 22 +- BuckarooSdk/DataTypes/Response/Service.cs | 30 +- .../DataTypes/Response/Status/Status.cs | 8 +- BuckarooSdk/DataTypes/TransactionReference.cs | 20 +- .../Afterpay/AfterpayRefundRequest.cs | 8 +- .../AmericanExpressTransaction.cs | 60 +- .../BanContact/BanContactTransaction.cs | 74 +- .../Response/MasterCardCaptureResponse.cs | 18 +- .../Visa/Response/VisaAuthorizeResponse.cs | 26 +- .../Visa/Response/VisaCaptureResponse.cs | 18 +- .../Visa/Response/VisaPayRemainderResponse.cs | 34 +- .../Visa/Response/VisaPayResponse.cs | 34 +- .../IdealPayRemainderRequest.cs | 22 +- .../IdealPayRemainderResponse.cs | 22 +- .../TransactionRequest/IdealPayRequest.cs | 44 +- .../TransactionRequest/IdealRefundRequest.cs | 10 +- .../TransactionRequest/IdealTransaction.cs | 28 +- .../OnlineGiro/OnlineGiroRequestObject.cs | 26 +- .../PayPal/PayPalExtraInfoResponse.cs | 2 +- .../PayPal/PayPalPayRecurrentResponse.cs | 2 +- .../PayPal/PayPalPayRemainderResponse.cs | 2 +- .../Services/PayPal/PayPalPayResponse.cs | 2 +- .../Services/PayPal/PayPalRefundResponse.cs | 2 +- .../Services/PayPal/PayPalTransaction.cs | 4 +- .../PayPerEmailPaymentInvitationRequest.cs | 16 +- .../PayPerEmailPaymentInvitationResponse.cs | 4 +- .../PayPerEmail/PayPerEmailTransaction.cs | 36 +- BuckarooSdk/Services/RequestParameter.cs | 6 +- .../SimpleSepaDirectDebitPayRequest.cs | 40 +- .../SimpleSepaDirectDebitPayResponse.cs | 42 +- .../SimpleSepaDirectDebitRefundRequest.cs | 18 +- .../SimpleSepaDirectDebitRefundResponse.cs | 24 +- .../SimpleSepaDirectDebitTransaction.cs | 12 +- .../Sofort/SofortPayRecurrentResponse.cs | 2 +- BuckarooSdk/Services/TransactionServices.cs | 28 +- .../TransactionRequest/TransferPayRequest.cs | 54 +- .../TransactionRequest/TransferPayResponse.cs | 44 +- .../TransferRefundRequest.cs | 40 +- .../TransferRefundResponse.cs | 2 +- .../TransactionRequest/TransferTransaction.cs | 16 +- .../Cancel/ConfiguredCancelTransaction.cs | 18 +- .../ConfiguredServiceTransaction.cs | 22 +- .../Transaction/ConfiguredTransaction.cs | 682 +++++++++--------- .../InvoiceInfo/TransactionInvoiceInfo.cs | 44 +- BuckarooSdk/Transaction/TransactionRequest.cs | 60 +- 81 files changed, 2021 insertions(+), 2020 deletions(-) diff --git a/.vs/VSWorkspaceState.json b/.vs/VSWorkspaceState.json index 6b61141..a1c4a7b 100644 --- a/.vs/VSWorkspaceState.json +++ b/.vs/VSWorkspaceState.json @@ -2,5 +2,6 @@ "ExpandedNodes": [ "" ], + "SelectedNode": "\\BuckarooSdk.sln", "PreviewInSolutionExplorer": false } \ No newline at end of file diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite index ae0676c09a70f822e5194a2363b32115e44cab4d..82b32f6d1363bf7e3b48c687603cd91c063d4a57 100644 GIT binary patch literal 1601536 zcmeEv349b)ws+O7>gw*Q?k)&RSOmgOfDYLg6*MFP0!awjPzi)iFCmb0hja%Bs}LmM zf*ZjF*%5c#abHJqXLLpxbzEmb9Y=J=(Q(D^+;gkCtD8i^y!XA|`+i@7*1zlAbI-l^ z+;i8uOZl9l`j9ul7ieyDg%Z-ZUL4PJ=O-j^96tg6Z-@U!a~wAu{_h3#i>8qmMI@8qvhe&pm~S%Z_y(h6%qw1zvr(<1ONLpAUPzA)cO&2 zbNpNJt7ai#Q#Pxk_=J-5_WM1cyEO9k@JCB>zc3yKOL{gC>+-24JP zAf}v>s@$@?8M$TSQZq6V!;y*6neJs;OG88JoEBF@y|3Qu=}bVhu62L2Apaw}&{Lzk z=DOY9V6eWnzJaDAtg=|P80$KPFG@Mo?#o+)A#Yxawc_;M&Hv$3FHOx-TO-`kw$axe1MoEr65 z7A3mC#5#8(AzW}`dBKuS4R3y8Tcs6?&8GQSY+`-IzRS_YCe|53*NaW8lhN?IQEap< z>@3dzEhZ9W24`#`dLcC?N;m8%gVhS|*G@tOshy>-(6DJ%U&kj5F&I#5ze@%(c!+th2%A8OJ!WtyRRT zt$lQ)YBMM_HY`)LVZ}NdOe@yuKQyt<8d|-CchORJnFWz5!qDd^4APj+PncSGYJa52 z6%5U;4SJiGd7%xD)E-*51v(egax04}65K7#Xm%mJs?qA6X|u};3a6J~&j(6>m!=V^ zXN{elSPgd3IQ@t1I25LUV2)22%&#BDx~SezsNP>^u%>cG5u?pdqZ;_aR;M|2RXh?) zi4;F!0)HWzT5u`!dAv12@6r~pA9_L2uR@fe#W;@hL;0QvJ`>l^;LY)a2lE^1P^K0E z4M>!Xd3x+3&96rJpEJ!WS3?WfTBNeWj%OtdYkDbmTP7#Tn>qDU^(plh`)l%MTc7`Z zgRq_$^=P0+13en((ZK&d8ZfQm^0q96F8gAyJCqmj`|9gjnsM-74qc;qw|5ooz>Lrs zrnb~Kc%rz1BhF5k$ND(PNvCE;G%<1DG-7Itdx@(#5GeO7NeVXjM`*pL2vdctxy~B` zRzFO_L|kbvfcnq(*0$8G&h@t@e839v}&7qbi&1z_87wtrI z&0}5aXeP}9?D86pBgeUOZpfoO^uovlZ#kPe3MOlRPKq&)h?^_Llarm5?yOBu&vvH3 zi?h~~f$W}~wAxH>dYaprl9iK_?saE7Giy^kjLGFrb5WVVl#!j|@?|Gd=E9gQOf!Mr{mJW@<)CZAw&dK2IzYL^#I-;YQ*_;}|U| z&Fgh1XQo1Q(lgVX=~>yyPFI@SgxiutCxQk-cXDAu(;SE?u7r>=_$SpV9H5zW@M+Q`MjBFUKfbXN%JPBWVOu|P24%{!ha=OQva_O^HcQn-=_k1 zW@>h3mfP*j%yMNr({tRJP#t=bovF26Us`64C%e{{<@DsFrlh(vJkFe~3>PqYfhj8^ z&6(=U$j+?w)%udNfXV01%E(E{ab|m5kS(?8Zm6QuGn^@z8J^Tyw=dI|nd0>NaTpIW;9AHTmrHth3Wo`|~0Ccp;w4@BX zdI@J%r*o=HeNp{Tovz-b-mm)q|LJA+q_jr^JsRlIK#vA`G|;1g9u4$pphp8e8tBnL zj|O@)&@BxN5QQ`{jXlFlAj`ZyFRaaQd!>gIUKq@4lV?&tv*0AL>s`<4tA5SJ6I^&< zScAwH_cH-^ELnK9k0c~AGA^0PcZFPo()$se*RYO8Ns1GML>^`gaDgjZv!z0^?0Squ z8Qvsy5vRVZE>fRUZ&f#|Uv?|qJxo0s=+Qur26{Bmqk$d`^k|?*13en((Lj#|dNk0Z zfgTNwzycBogXThuo7mY9EkP=D>;NEQDncPd*Hzfz%`r;JwY z^7ryP@{{sjd9Cb~3+3T5v3_EG&U(mty>)|iv2~_(yj8Xww>)dvXW3w>wM?-LGJj!y z-MrVl#oTBvH)ok0(g)HJX}7doxn?5595ubOT%tv1z|&NdA)nZ#q_BjO%0AWj!Y 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

_)=ry~`9V@15ohU@=(se6FJ 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

Td4$vuGMA8QLgo-M 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 z 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 E|J}(3E&u=k literal 1601536 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

qnq?0vy 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 diff --git a/BuckarooSdk.Tests/Mocks/Afterpay.cs b/BuckarooSdk.Tests/Mocks/Afterpay.cs index cf445c6..fcd5509 100644 --- a/BuckarooSdk.Tests/Mocks/Afterpay.cs +++ b/BuckarooSdk.Tests/Mocks/Afterpay.cs @@ -4,169 +4,169 @@ namespace BuckarooSdk.Tests.Mocks { - internal class Afterpay - { - internal static AfterpayAuthorizeRequest AfterpayAuthorizeMock => new AfterpayAuthorizeRequest() - { - MerchantImageUrl = "https://www.buckaroo.nl/img/logo_menu.png", - SummaryImageUrl = "https://www.buckaroo.nl/img/logo_menu.png", - BankAccount = "NL13TEST0123456789", - BankCode = "TESTNL2A", + internal class Afterpay + { + internal static AfterpayAuthorizeRequest AfterpayAuthorizeMock => new AfterpayAuthorizeRequest() + { + MerchantImageUrl = "https://www.buckaroo.nl/img/logo_menu.png", + SummaryImageUrl = "https://www.buckaroo.nl/img/logo_menu.png", + BankAccount = "NL13TEST0123456789", + BankCode = "TESTNL2A", - BillingCustomer = new BillingCustomer() - { - Category = "Person", - Salutation = "Mr", - FirstName = "J.", - LastName = "de Tester", - BirthDate = new DateTime(1992, 6, 3), - Street = "Zonnebaan", - StreetNumber = "9", - StreetNumberAdditional = "", - PostalCode = "3542 EA", - City = "UTRECHT", - Country = "NL", - MobilePhone = "0612345678", - Phone = "0713613412", - Email = "s.roos@buckaroo.nl", - CareOf = "", - ConversationLanguage = "", - IdentificationNumber = "", - CustomerNumber = "John Smith", - }, - //ShippingCustomer = new ShippingCustomer() - //{ - // Category = "", - // Salutation = "", - // FirstName = "", - // LastName = "", - // BirthDate = new DateTime(1992, 6, 3), - // Street = "", - // StreetNumber = "", - // StreetNumberAdditional = "", - // PostalCode = "", - // City = "", - // Country = "", - // MobilePhone = "", - // Phone = "", - // Email = "", - // CareOf = "", - // ConversationLanguage = "", - // IdentificationNumber = "", - // CustomerNumber = "", - //}, - Articles = new BuckarooSdk.Services.ParameterGroupCollection

("Article") - { - new Article() - { - Description = "Blue Toy Car", - GrossUnitPrice = "2.00", - VatPercentage = "21", - Quantity = 1, - Identifier = "Articlenumber12345", - ImageUrl = "https://www.buckaroo.nl/img/logo_menu.png", - Url = "https://www.buckaroo.nl/", - Type = "PhysicalArticle", - } - } + BillingCustomer = new BillingCustomer() + { + Category = "Person", + Salutation = "Mr", + FirstName = "J.", + LastName = "de Tester", + BirthDate = new DateTime(1992, 6, 3), + Street = "Zonnebaan", + StreetNumber = "9", + StreetNumberAdditional = "", + PostalCode = "3542 EA", + City = "UTRECHT", + Country = "NL", + MobilePhone = "0612345678", + Phone = "0713613412", + Email = "s.roos@buckaroo.nl", + CareOf = "", + ConversationLanguage = "", + IdentificationNumber = "", + CustomerNumber = "John Smith", + }, + //ShippingCustomer = new ShippingCustomer() + //{ + // Category = "", + // Salutation = "", + // FirstName = "", + // LastName = "", + // BirthDate = new DateTime(1992, 6, 3), + // Street = "", + // StreetNumber = "", + // StreetNumberAdditional = "", + // PostalCode = "", + // City = "", + // Country = "", + // MobilePhone = "", + // Phone = "", + // Email = "", + // CareOf = "", + // ConversationLanguage = "", + // IdentificationNumber = "", + // CustomerNumber = "", + //}, + Articles = new BuckarooSdk.Services.ParameterGroupCollection
("Article") + { + new Article() + { + Description = "Blue Toy Car", + GrossUnitPrice = "2.00", + VatPercentage = "21", + Quantity = 1, + Identifier = "Articlenumber12345", + ImageUrl = "https://www.buckaroo.nl/img/logo_menu.png", + Url = "https://www.buckaroo.nl/", + Type = "PhysicalArticle", + } + } - }; + }; - internal static AfterpayCancelAuthorizeRequest AfterpayCancelAuthorizeMock => new AfterpayCancelAuthorizeRequest() - { - //no actionparameters - }; + internal static AfterpayCancelAuthorizeRequest AfterpayCancelAuthorizeMock => new AfterpayCancelAuthorizeRequest() + { + //no actionparameters + }; - internal static AfterpayCaptureRequest AfterpayCaptureMock => new AfterpayCaptureRequest() - { - + internal static AfterpayCaptureRequest AfterpayCaptureMock => new AfterpayCaptureRequest() + { + - }; + }; - internal static AfterpayPayRequest AfterpayPayMock => new AfterpayPayRequest() - { - MerchantImageUrl = "https://www.buckaroo.nl/img/logo_menu.png", - SummaryImageUrl = "https://www.buckaroo.nl/img/logo_menu.png", - BankAccount = "NL13TEST0123456789", - BankCode = "TESTNL2A", + internal static AfterpayPayRequest AfterpayPayMock => new AfterpayPayRequest() + { + MerchantImageUrl = "https://www.buckaroo.nl/img/logo_menu.png", + SummaryImageUrl = "https://www.buckaroo.nl/img/logo_menu.png", + BankAccount = "NL13TEST0123456789", + BankCode = "TESTNL2A", - BillingCustomer = new BillingCustomer() - { - Category = "Person", - Salutation = "Mr", - FirstName = "J.", - LastName = "de Tester", - BirthDate = new DateTime(1992, 6, 3), - Street = "Zonnebaan", - StreetNumber = "9", - StreetNumberAdditional = "", - PostalCode = "3542 EA", - City = "UTRECHT", - Country = "NL", - MobilePhone = "0612345678", - Phone = "0713613412", - Email = "s.roos@buckaroo.nl", - CareOf = "", - ConversationLanguage = "", - IdentificationNumber = "", - CustomerNumber = "John Smith", - }, - //ShippingCustomer = new ShippingCustomer() - //{ - // Category = "", - // Salutation = "", - // FirstName = "", - // LastName = "", - // BirthDate = new DateTime(1992, 6, 3), - // Street = "", - // StreetNumber = "", - // StreetNumberAdditional = "", - // PostalCode = "", - // City = "", - // Country = "", - // MobilePhone = "", - // Phone = "", - // Email = "", - // CareOf = "", - // ConversationLanguage = "", - // IdentificationNumber = "", - // CustomerNumber = "", - //}, - Articles = new BuckarooSdk.Services.ParameterGroupCollection
("Article") - { - new Article() - { - Description = "Blue Toy Car", - GrossUnitPrice = "2.00", - VatPercentage = "21", - Quantity = 1, - Identifier = "Articlenumber12345", - ImageUrl = "https://www.buckaroo.nl/img/logo_menu.png", - Url = "https://www.buckaroo.nl/", - Type = "PhysicalArticle", - } - } + BillingCustomer = new BillingCustomer() + { + Category = "Person", + Salutation = "Mr", + FirstName = "J.", + LastName = "de Tester", + BirthDate = new DateTime(1992, 6, 3), + Street = "Zonnebaan", + StreetNumber = "9", + StreetNumberAdditional = "", + PostalCode = "3542 EA", + City = "UTRECHT", + Country = "NL", + MobilePhone = "0612345678", + Phone = "0713613412", + Email = "s.roos@buckaroo.nl", + CareOf = "", + ConversationLanguage = "", + IdentificationNumber = "", + CustomerNumber = "John Smith", + }, + //ShippingCustomer = new ShippingCustomer() + //{ + // Category = "", + // Salutation = "", + // FirstName = "", + // LastName = "", + // BirthDate = new DateTime(1992, 6, 3), + // Street = "", + // StreetNumber = "", + // StreetNumberAdditional = "", + // PostalCode = "", + // City = "", + // Country = "", + // MobilePhone = "", + // Phone = "", + // Email = "", + // CareOf = "", + // ConversationLanguage = "", + // IdentificationNumber = "", + // CustomerNumber = "", + //}, + Articles = new BuckarooSdk.Services.ParameterGroupCollection
("Article") + { + new Article() + { + Description = "Blue Toy Car", + GrossUnitPrice = "2.00", + VatPercentage = "21", + Quantity = 1, + Identifier = "Articlenumber12345", + ImageUrl = "https://www.buckaroo.nl/img/logo_menu.png", + Url = "https://www.buckaroo.nl/", + Type = "PhysicalArticle", + } + } - }; + }; - internal static AfterpayRefundRequest AfterpayRefundMock(string refundType) => new AfterpayRefundRequest() - { + internal static AfterpayRefundRequest AfterpayRefundMock(string refundType) => new AfterpayRefundRequest() + { Articles = new BuckarooSdk.Services.ParameterGroupCollection
("Article") - { - new Article() - { - RefundType = refundType, - Description = "Blue Toy Car", - GrossUnitPrice = "10.00", - VatPercentage = "21", - Quantity = 1, - Identifier = "Articlenumber12345", - ImageUrl = "https://www.buckaroo.nl/img/logo_menu.png", - Url = "https://www.buckaroo.nl/", - Type = "Physical", - } - } - }; - } + { + new Article() + { + RefundType = refundType, + Description = "Blue Toy Car", + GrossUnitPrice = "10.00", + VatPercentage = "21", + Quantity = 1, + Identifier = "Articlenumber12345", + ImageUrl = "https://www.buckaroo.nl/img/logo_menu.png", + Url = "https://www.buckaroo.nl/", + Type = "Physical", + } + } + }; + } } diff --git a/BuckarooSdk.Tests/Services/Afterpay/AfterpayTests.cs b/BuckarooSdk.Tests/Services/Afterpay/AfterpayTests.cs index acbea6a..767c329 100644 --- a/BuckarooSdk.Tests/Services/Afterpay/AfterpayTests.cs +++ b/BuckarooSdk.Tests/Services/Afterpay/AfterpayTests.cs @@ -1,4 +1,4 @@ -using BuckarooSdk.DataTypes.RequestBases; +using BuckarooSdk.DataTypes.RequestBases; using BuckarooSdk.Logging; using BuckarooSdk.Services.Afterpay; using Microsoft.VisualStudio.TestTools.UnitTesting; @@ -8,107 +8,107 @@ namespace BuckarooSdk.Tests.Services.Afterpay { - [TestClass] - public class AfterpayTests - { - private SdkClient _buckarooClient; - private string TestName => "Afterpay";//nameof(AfterpayTests).ToUpper(); - - [TestInitialize] - public void Setup() - { - this._buckarooClient = new SdkClient(TestSettings.Logger); - } - - [TestMethod] - public void CancelAuthorizeTest() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - OriginalTransactionKey = "", - AmountCredit = 2, - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .Afterpay() // Choose the paymentmethod you want to use - .CancelAuthorize(new AfterpayCancelAuthorizeRequest // choose the action you want to use and provide the payment method specific info. - { - - }); - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - - [TestMethod] - public void PayTest() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - AmountDebit = 2, - Invoice = $"TEST_17", - Order = $"SDK_{ TestName }_16", - ClientIp = TestSettings.IpAddress, - }) - .Afterpay() // Choose the paymentmethod you want to use - .Pay(Mocks.Afterpay.AfterpayPayMock); // choose the action you want to use and provide the payment method specific info. - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - - [TestMethod] - public void RefundUndefinedTest() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - OriginalTransactionKey = "", - AmountCredit = 2, - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .Afterpay() // Choose the paymentmethod you want to use - .Refund(Mocks.Afterpay.AfterpayRefundMock("Undefined")); // choose the action you want to use and provide the payment method specific info. - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } + [TestClass] + public class AfterpayTests + { + private SdkClient _buckarooClient; + private string TestName => "Afterpay";//nameof(AfterpayTests).ToUpper(); + + [TestInitialize] + public void Setup() + { + this._buckarooClient = new SdkClient(TestSettings.Logger); + } + + [TestMethod] + public void CancelAuthorizeTest() + { + var request = + this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + OriginalTransactionKey = "", + AmountCredit = 2, + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .Afterpay() // Choose the paymentmethod you want to use + .CancelAuthorize(new AfterpayCancelAuthorizeRequest // choose the action you want to use and provide the payment method specific info. + { + + }); + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + + [TestMethod] + public void PayTest() + { + var request = + this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + AmountDebit = 2, + Invoice = $"TEST_17", + Order = $"SDK_{ TestName }_16", + ClientIp = TestSettings.IpAddress, + }) + .Afterpay() // Choose the paymentmethod you want to use + .Pay(Mocks.Afterpay.AfterpayPayMock); // choose the action you want to use and provide the payment method specific info. + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + + [TestMethod] + public void RefundUndefinedTest() + { + var request = + this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + OriginalTransactionKey = "", + AmountCredit = 2, + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .Afterpay() // Choose the paymentmethod you want to use + .Refund(Mocks.Afterpay.AfterpayRefundMock("Undefined")); // choose the action you want to use and provide the payment method specific info. + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } [TestMethod] public void RefundReturnTest() @@ -168,69 +168,69 @@ public void RefundTest() // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); } - [TestMethod] - public void AuthorizeTest() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - AmountDebit = 2, - Invoice = $"TEST_12", - Order = $"SDK_{ TestName }_12", - ClientIp = TestSettings.IpAddress, - }) - .Afterpay() // Choose the paymentmethod you want to use - .Authorize(Mocks.Afterpay.AfterpayAuthorizeMock); // choose the action you want to use and provide the payment method specific info. - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - [TestMethod] - public void CaptureTest() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - AmountDebit = 2, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - OriginalTransactionKey = "", - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .Afterpay() // Choose the paymentmethod you want to use - .Capture(Mocks.Afterpay.AfterpayCaptureMock); // choose the action you want to use and provide the payment method specific info. - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - - [TestCleanup] - public void TearDown() - { - this._buckarooClient = null; - } - } + [TestMethod] + public void AuthorizeTest() + { + var request = + this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + AmountDebit = 2, + Invoice = $"TEST_12", + Order = $"SDK_{ TestName }_12", + ClientIp = TestSettings.IpAddress, + }) + .Afterpay() // Choose the paymentmethod you want to use + .Authorize(Mocks.Afterpay.AfterpayAuthorizeMock); // choose the action you want to use and provide the payment method specific info. + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + [TestMethod] + public void CaptureTest() + { + var request = + this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + AmountDebit = 2, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + OriginalTransactionKey = "", + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .Afterpay() // Choose the paymentmethod you want to use + .Capture(Mocks.Afterpay.AfterpayCaptureMock); // choose the action you want to use and provide the payment method specific info. + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + + [TestCleanup] + public void TearDown() + { + this._buckarooClient = null; + } + } } diff --git a/BuckarooSdk.Tests/Services/Giftcard/VVVGiftcardTests.cs b/BuckarooSdk.Tests/Services/Giftcard/VVVGiftcardTests.cs index 7415d15..e3632be 100644 --- a/BuckarooSdk.Tests/Services/Giftcard/VVVGiftcardTests.cs +++ b/BuckarooSdk.Tests/Services/Giftcard/VVVGiftcardTests.cs @@ -9,74 +9,74 @@ namespace BuckarooSdk.Tests.Services.Giftcard { - [TestClass] - public class VVVGiftcardTests - { - public SdkClient BuckarooClient { get; private set; } + [TestClass] + public class VVVGiftcardTests + { + public SdkClient BuckarooClient { get; private set; } - [TestInitialize] - public void Setup() - { - this.BuckarooClient = new SdkClient(TestSettings.Logger); - } + [TestInitialize] + public void Setup() + { + this.BuckarooClient = new SdkClient(TestSettings.Logger); + } - [TestMethod] - public void PayTest() - { - var request = - this.BuckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - AmountDebit = 3.50m, - Invoice = $"SDK_TEST_{DateTime.Now.Ticks}", - Description = "VVV_PAY_SDK_UNITTEST", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - }) - .VVVGiftcard() // Choose the paymentmethod you want to use - .Pay(new VVVGiftcardPayRequest // choose the action you want to use and provide the payment method specific info. - { + [TestMethod] + public void PayTest() + { + var request = + this.BuckarooClient.CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + AmountDebit = 3.50m, + Invoice = $"SDK_TEST_{DateTime.Now.Ticks}", + Description = "VVV_PAY_SDK_UNITTEST", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + }) + .VVVGiftcard() // Choose the paymentmethod you want to use + .Pay(new VVVGiftcardPayRequest // choose the action you want to use and provide the payment method specific info. + { IntersolveCardnumber = "0000000000000000001", IntersolvePin = "350" - }); + }); - var response = request.Execute(); + var response = request.Execute(); - if (response.RequiredAction != null) - { - //optie 1 - Process.Start(response.RequiredAction.RedirectURL); + if (response.RequiredAction != null) + { + //optie 1 + Process.Start(response.RequiredAction.RedirectURL); } - Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } + Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } - [TestMethod] - public void RefundTest() - { - var request = this.BuckarooClient.CreateRequest() - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() - .SetBasicFields(new TransactionBase - { - AmountCredit = 0.02m, - Currency = "EUR", - Invoice = "SDK_TEST_636196508460881929", //set before each refund test - OriginalTransactionKey = "DDE3795437444D2AB1B803EA829C89E5", //set before each refund test - Description = "VVVGiftcard_REFUND_SDK_UNITTEST", - }) - .VVVGiftcard() - .Refund(new VVVGiftcardRefundRequest()); + [TestMethod] + public void RefundTest() + { + var request = this.BuckarooClient.CreateRequest() + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() + .SetBasicFields(new TransactionBase + { + AmountCredit = 0.02m, + Currency = "EUR", + Invoice = "SDK_TEST_636196508460881929", //set before each refund test + OriginalTransactionKey = "DDE3795437444D2AB1B803EA829C89E5", //set before each refund test + Description = "VVVGiftcard_REFUND_SDK_UNITTEST", + }) + .VVVGiftcard() + .Refund(new VVVGiftcardRefundRequest()); - var response = request.Execute(); + var response = request.Execute(); - var logging = response.BuckarooSdkLogger.GetFullLog(); - Console.WriteLine(logging); - } - } + var logging = response.BuckarooSdkLogger.GetFullLog(); + Console.WriteLine(logging); + } + } } diff --git a/BuckarooSdk.Tests/Services/PayPerEmail/PayPerEmailTests.cs b/BuckarooSdk.Tests/Services/PayPerEmail/PayPerEmailTests.cs index 5ffd96f..7caebf0 100644 --- a/BuckarooSdk.Tests/Services/PayPerEmail/PayPerEmailTests.cs +++ b/BuckarooSdk.Tests/Services/PayPerEmail/PayPerEmailTests.cs @@ -9,17 +9,17 @@ namespace BuckarooSdk.Tests.Services.PayPerEmail [TestClass] public class PayPerEmailTests { - private SdkClient _sdkClient; + private SdkClient _sdkClient; - [TestInitialize] - public void Setup() - { - this._sdkClient = new SdkClient(Constants.TestSettings.Logger); - } + [TestInitialize] + public void Setup() + { + this._sdkClient = new SdkClient(Constants.TestSettings.Logger); + } - [TestMethod] + [TestMethod] public void PaymentInvitationTest() - { + { var request = this._sdkClient.CreateRequest() .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("en-US")) .TransactionRequest() @@ -45,7 +45,7 @@ public void PaymentInvitationTest() }); var paypermailResponse = request.Execute(); - var actionResponse = paypermailResponse.GetActionResponse(); - } + var actionResponse = paypermailResponse.GetActionResponse(); + } } } diff --git a/BuckarooSdk/Base/AuthenticatedRequest.cs b/BuckarooSdk/Base/AuthenticatedRequest.cs index ebaabb6..204d64b 100644 --- a/BuckarooSdk/Base/AuthenticatedRequest.cs +++ b/BuckarooSdk/Base/AuthenticatedRequest.cs @@ -7,10 +7,10 @@ namespace BuckarooSdk.Base { - /// - /// An authenticatedRequest is a request where authentication properties are - /// defined and validated upon type. - /// + /// + /// An authenticatedRequest is a request where authentication properties are + /// defined and validated upon type. + /// public class AuthenticatedRequest { internal Request Request { get; set; } @@ -20,44 +20,44 @@ internal AuthenticatedRequest(Request request) this.Request = request; } - /// - /// States that the request that will be performed is a transaction request. - /// - /// A CancelTransaction + /// + /// States that the request that will be performed is a transaction request. + /// + /// A CancelTransaction public TransactionRequest TransactionRequest() { return new TransactionRequest(this); } - public CancelTransaction CancelTransactionRequest() - { - return new CancelTransaction(this); - } + public CancelTransaction CancelTransactionRequest() + { + return new CancelTransaction(this); + } - public TransactionStatus TransactionStatusRequest() - { - return new TransactionStatus(this); - } + public TransactionStatus TransactionStatusRequest() + { + return new TransactionStatus(this); + } - public TransactionSpecification TransactionSpecificationRequest() - { - return new TransactionSpecification(this); - } + public TransactionSpecification TransactionSpecificationRequest() + { + return new TransactionSpecification(this); + } - public TransactionInvoiceInfo TransactionInvoiceInfoRequest() - { - return new TransactionInvoiceInfo(this); - } + public TransactionInvoiceInfo TransactionInvoiceInfoRequest() + { + return new TransactionInvoiceInfo(this); + } - public TransactionRefundInfo TransactionRefundInfoRequest() - { - return new TransactionRefundInfo(this); - } + public TransactionRefundInfo TransactionRefundInfoRequest() + { + return new TransactionRefundInfo(this); + } - /// - /// States that the request that will be performed is a data request. - /// - /// A Data object + /// + /// States that the request that will be performed is a data request. + /// + /// A Data object public Data.Data DataRequest() { return new Data.Data(this); diff --git a/BuckarooSdk/Base/PushHandler.cs b/BuckarooSdk/Base/PushHandler.cs index ecd3c87..dd81ce4 100644 --- a/BuckarooSdk/Base/PushHandler.cs +++ b/BuckarooSdk/Base/PushHandler.cs @@ -10,72 +10,72 @@ namespace BuckarooSdk.Base { - public class PushHandler - { - private SignatureCalculationService SignatureCalculationService { get; } - private readonly string _apiKey; + public class PushHandler + { + private SignatureCalculationService SignatureCalculationService { get; } + private readonly string _apiKey; - public PushHandler(string apiKey) - { - this._apiKey = apiKey; - this.SignatureCalculationService = new SignatureCalculationService(); - } + public PushHandler(string apiKey) + { + this._apiKey = apiKey; + this.SignatureCalculationService = new SignatureCalculationService(); + } - public Push DeserializePush(byte[] body, string requestUri, string authorizationHeader) - { - var requestUriEncoded = WebUtility.UrlEncode(requestUri)?.ToLower(); + public Push DeserializePush(byte[] body, string requestUri, string authorizationHeader) + { + var requestUriEncoded = WebUtility.UrlEncode(requestUri)?.ToLower(); - var requestMethod = HttpMethod.Post.ToString(); + var requestMethod = HttpMethod.Post.ToString(); - //calculate signature - if (!this.SignatureCalculationService.VerifySignature(body, requestMethod, requestUriEncoded, this._apiKey, authorizationHeader)) - { - throw new AuthenticationException(); - } + //calculate signature + if (!this.SignatureCalculationService.VerifySignature(body, requestMethod, requestUriEncoded, this._apiKey, authorizationHeader)) + { + throw new AuthenticationException(); + } // get content from request. var bodyAsString = Encoding.UTF8.GetString(body); return this.DeserializePush(bodyAsString); - } + } - private Push DeserializePush(string jsonString) - { - Push deserializeObject; + private Push DeserializePush(string jsonString) + { + Push deserializeObject; - var secondLeftBraceIndex = jsonString.IndexOf("{", 1 + jsonString.IndexOf("{", StringComparison.Ordinal), StringComparison.Ordinal); - var lastRightBraceIndex = jsonString.LastIndexOf("}", StringComparison.Ordinal); - var pushtype = jsonString.Substring(0, secondLeftBraceIndex); + var secondLeftBraceIndex = jsonString.IndexOf("{", 1 + jsonString.IndexOf("{", StringComparison.Ordinal), StringComparison.Ordinal); + var lastRightBraceIndex = jsonString.LastIndexOf("}", StringComparison.Ordinal); + var pushtype = jsonString.Substring(0, secondLeftBraceIndex); - // Take everything that is between the second opening brace and the last closing brace (excluding the latter) - var content = jsonString.Substring(secondLeftBraceIndex, lastRightBraceIndex - secondLeftBraceIndex); + // Take everything that is between the second opening brace and the last closing brace (excluding the latter) + var content = jsonString.Substring(secondLeftBraceIndex, lastRightBraceIndex - secondLeftBraceIndex); - if (pushtype.Contains(PushType.TransactionPush)) - { - return DeserializeTransaction(content); - } + if (pushtype.Contains(PushType.TransactionPush)) + { + return DeserializeTransaction(content); + } - if (pushtype.Contains(PushType.DataRequestPush)) - { - deserializeObject = DeserializeDataRequest(content); - } - else - { - throw new SerializationException(); - } + if (pushtype.Contains(PushType.DataRequestPush)) + { + deserializeObject = DeserializeDataRequest(content); + } + else + { + throw new SerializationException(); + } - return deserializeObject; - } + return deserializeObject; + } - private static TransactionPush DeserializeTransaction(string jsonString) - { - return JsonConvert.DeserializeObject(jsonString); - } + private static TransactionPush DeserializeTransaction(string jsonString) + { + return JsonConvert.DeserializeObject(jsonString); + } - private static DataRequest DeserializeDataRequest(string jsonString) - { - return JsonConvert.DeserializeObject(jsonString); - } - } + private static DataRequest DeserializeDataRequest(string jsonString) + { + return JsonConvert.DeserializeObject(jsonString); + } + } } diff --git a/BuckarooSdk/Base/ResponseHandler.cs b/BuckarooSdk/Base/ResponseHandler.cs index 92eadbb..359c7fc 100644 --- a/BuckarooSdk/Base/ResponseHandler.cs +++ b/BuckarooSdk/Base/ResponseHandler.cs @@ -6,7 +6,7 @@ namespace BuckarooSdk.Base { - [Obsolete] + [Obsolete] public class ResponseHandler { public void HandleResponse(RequestResponse transaction) diff --git a/BuckarooSdk/Constants/Services.cs b/BuckarooSdk/Constants/Services.cs index 9b06dc2..b26182b 100644 --- a/BuckarooSdk/Constants/Services.cs +++ b/BuckarooSdk/Constants/Services.cs @@ -1,54 +1,54 @@ namespace BuckarooSdk.Constants { - public static class Services - { - public enum ServiceNames - { - CreditCard, - Bancontact, - MasterCard, - Maestro, - CarteBleueVisa, - Visa, - VisaElectron, - VPay, - Nexi, - CarteBancaire, - //// Payment services - Ideal, - IdealProcessing, - PayPal, - AmericanExpress, - Transfer, - SimpleSepaDirectDebit, - Payconiq, - Sofort, - //// additional services - CreditManagement, - //Subscriptions, - PayPerEmail, - IdealQr, - Giropay, - EPS, - KbcPaymentButton, - EMandate, - PaysafeCard, - Dankort, - Afterpay, - OnlineGiro, - OnlineGiroLite, - Capayable, - Klarna, - KlarnaKP, - CustomGiftcard, - CustomGiftcard2, - CustomGiftcard3, - BuckarooWallet, - BuckarooVoucher, - Notification, - Ippies, - HuisTuinGiftcard, + public static class Services + { + public enum ServiceNames + { + CreditCard, + Bancontact, + MasterCard, + Maestro, + CarteBleueVisa, + Visa, + VisaElectron, + VPay, + Nexi, + CarteBancaire, + //// Payment services + Ideal, + IdealProcessing, + PayPal, + AmericanExpress, + Transfer, + SimpleSepaDirectDebit, + Payconiq, + Sofort, + //// additional services + CreditManagement, + //Subscriptions, + PayPerEmail, + IdealQr, + Giropay, + EPS, + KbcPaymentButton, + EMandate, + PaysafeCard, + Dankort, + Afterpay, + OnlineGiro, + OnlineGiroLite, + Capayable, + Klarna, + KlarnaKP, + CustomGiftcard, + CustomGiftcard2, + CustomGiftcard3, + BuckarooWallet, + BuckarooVoucher, + Notification, + Ippies, + HuisTuinGiftcard, VVVGiftcard, - } - } -} \ No newline at end of file + } + } +} diff --git a/BuckarooSdk/Data/ConfiguredDataRequest.cs b/BuckarooSdk/Data/ConfiguredDataRequest.cs index 4bf34e7..2e2a9d1 100644 --- a/BuckarooSdk/Data/ConfiguredDataRequest.cs +++ b/BuckarooSdk/Data/ConfiguredDataRequest.cs @@ -1,4 +1,4 @@ - + using BuckarooSdk.Services.CreditManagement.DataRequest; using BuckarooSdk.Services.CustomGiftcard; using BuckarooSdk.Services.BuckarooWallet; @@ -10,86 +10,86 @@ namespace BuckarooSdk.Data { - public class ConfiguredDataRequest - { - internal Data BaseDataRequest { get; private set; } + public class ConfiguredDataRequest + { + internal Data BaseDataRequest { get; private set; } - /// - /// ConfiguredDataRequest primary constructor. - /// - /// - public ConfiguredDataRequest(Data data) - { - this.BaseDataRequest = data; - } + /// + /// ConfiguredDataRequest primary constructor. + /// + /// + public ConfiguredDataRequest(Data data) + { + this.BaseDataRequest = data; + } - #region "Services" + #region "Services" - /// The instantiation of the specific CustomGiftcard service transaction. - /// - public CustomGiftcardRequestObject CustomGiftcard() - { - return new CustomGiftcardRequestObject(this, Constants.Services.ServiceNames.CustomGiftcard); - } + /// The instantiation of the specific CustomGiftcard service transaction. + /// + public CustomGiftcardRequestObject CustomGiftcard() + { + return new CustomGiftcardRequestObject(this, Constants.Services.ServiceNames.CustomGiftcard); + } - /// The instantiation of the specific CustomGiftcard3 service transaction. - /// - public CustomGiftcardRequestObject CustomGiftcard2() - { - return new CustomGiftcardRequestObject(this, Constants.Services.ServiceNames.CustomGiftcard2); - } + /// The instantiation of the specific CustomGiftcard3 service transaction. + /// + public CustomGiftcardRequestObject CustomGiftcard2() + { + return new CustomGiftcardRequestObject(this, Constants.Services.ServiceNames.CustomGiftcard2); + } - /// The instantiation of the specific CustomGiftcard3 service transaction. - /// - public CustomGiftcardRequestObject CustomGiftcard3() - { - return new CustomGiftcardRequestObject(this, Constants.Services.ServiceNames.CustomGiftcard3); + /// The instantiation of the specific CustomGiftcard3 service transaction. + /// + public CustomGiftcardRequestObject CustomGiftcard3() + { + return new CustomGiftcardRequestObject(this, Constants.Services.ServiceNames.CustomGiftcard3); } - public BuckarooWalletRequestObject BuckarooWallet() - { - return new BuckarooWalletRequestObject(this); + public BuckarooWalletRequestObject BuckarooWallet() + { + return new BuckarooWalletRequestObject(this); } - public BuckarooVoucherRequestObject BuckarooVoucher() - { - return new BuckarooVoucherRequestObject(this); - } + public BuckarooVoucherRequestObject BuckarooVoucher() + { + return new BuckarooVoucherRequestObject(this); + } - public Services.Klarna.KlarnaRequestObject Klarna() - { - return new Services.Klarna.KlarnaRequestObject(this); - } - public Services.KlarnaKP.KlarnaRequestObject KlarnaKP() - { - return new Services.KlarnaKP.KlarnaRequestObject(this); - } + public Services.Klarna.KlarnaRequestObject Klarna() + { + return new Services.Klarna.KlarnaRequestObject(this); + } + public Services.KlarnaKP.KlarnaRequestObject KlarnaKP() + { + return new Services.KlarnaKP.KlarnaRequestObject(this); + } - /// - /// The instanciation of the specific Ideal Service transaction. - /// - /// An ideal - public IdealDataRequest Ideal() - { - return new IdealDataRequest(this); - } + /// + /// The instanciation of the specific Ideal Service transaction. + /// + /// An ideal + public IdealDataRequest Ideal() + { + return new IdealDataRequest(this); + } - public IdealQrDataRequest IdealQr() - { - return new IdealQrDataRequest(this); - } + public IdealQrDataRequest IdealQr() + { + return new IdealQrDataRequest(this); + } - public CreditManagementDataRequest CreditManagement() - { - return new CreditManagementDataRequest(this); - } + public CreditManagementDataRequest CreditManagement() + { + return new CreditManagementDataRequest(this); + } - public EMandateRequestObject EMandate() - { - return new EMandateRequestObject(this); - } + public EMandateRequestObject EMandate() + { + return new EMandateRequestObject(this); + } - #endregion - } + #endregion + } } diff --git a/BuckarooSdk/Data/Data.cs b/BuckarooSdk/Data/Data.cs index 491fa15..8fc05ca 100644 --- a/BuckarooSdk/Data/Data.cs +++ b/BuckarooSdk/Data/Data.cs @@ -5,69 +5,69 @@ namespace BuckarooSdk.Data { - /// - /// General data class, to hold a Request object and a list of services - /// + /// + /// General data class, to hold a Request object and a list of services + /// public class Data { internal AuthenticatedRequest AuthenticatedRequest { get; set; } - + internal List Services { get; set; } - internal DataBase DataRequestBase { get; private set; } + internal DataBase DataRequestBase { get; private set; } - internal Data(AuthenticatedRequest authenticatedRequest) + internal Data(AuthenticatedRequest authenticatedRequest) { - authenticatedRequest.Request.Endpoint = Constants.Settings.GatewaySettings.DataRequestEndPoint; - this.AuthenticatedRequest = authenticatedRequest; + authenticatedRequest.Request.Endpoint = Constants.Settings.GatewaySettings.DataRequestEndPoint; + this.AuthenticatedRequest = authenticatedRequest; } - + - public ConfiguredDataRequest SetBasicFields(DataBase basicFields) - { - this.DataRequestBase = basicFields; - return new ConfiguredDataRequest(this); - } + public ConfiguredDataRequest SetBasicFields(DataBase basicFields) + { + this.DataRequestBase = basicFields; + return new ConfiguredDataRequest(this); + } - #region "Internal methods" - /// - /// Adding a service to the datarequest. - /// - /// The name of the service - /// The list of service parameters - internal void AddService(string serviceName, List parameters, string action, string version = "1") + #region "Internal methods" + /// + /// Adding a service to the datarequest. + /// + /// The name of the service + /// The list of service parameters + internal void AddService(string serviceName, List parameters, string action, string version = "1") { var service = new Service() { Name = serviceName, - Action = action, - Version = version, - Parameters = parameters, + Action = action, + Version = version, + Parameters = parameters, }; - if(this.DataRequestBase.Services.ServiceList == null) - { - this.DataRequestBase.Services.ServiceList = new List(); - } + if(this.DataRequestBase.Services.ServiceList == null) + { + this.DataRequestBase.Services.ServiceList = new List(); + } this.DataRequestBase.Services.ServiceList.Add(service); } - internal void AddGlobal(string serviceName, List parameters, string action, string version = "1") - { - var global = new Global() - { - Name = serviceName, - Action = action, - Version = version, - Parameters = parameters, - }; + internal void AddGlobal(string serviceName, List parameters, string action, string version = "1") + { + var global = new Global() + { + Name = serviceName, + Action = action, + Version = version, + Parameters = parameters, + }; - if (this.DataRequestBase.Services.ServiceList == null) - { - this.DataRequestBase.Services.ServiceList = new List(); - } - this.DataRequestBase.Services.ServiceList.Add(global); - } - #endregion - } + if (this.DataRequestBase.Services.ServiceList == null) + { + this.DataRequestBase.Services.ServiceList = new List(); + } + this.DataRequestBase.Services.ServiceList.Add(global); + } + #endregion + } } diff --git a/BuckarooSdk/DataTypes/AdditionalParameter.cs b/BuckarooSdk/DataTypes/AdditionalParameter.cs index d1d1061..c478fb3 100644 --- a/BuckarooSdk/DataTypes/AdditionalParameter.cs +++ b/BuckarooSdk/DataTypes/AdditionalParameter.cs @@ -1,19 +1,19 @@ namespace BuckarooSdk.DataTypes { - /// - /// An additional parameter is a name value pair that can be used to add custom data - /// to a request. - /// - public class AdditionalParameter + /// + /// An additional parameter is a name value pair that can be used to add custom data + /// to a request. + /// + public class AdditionalParameter { - /// - /// The name of the parameter. - /// - public string Name { get; set; } + /// + /// The name of the parameter. + /// + public string Name { get; set; } - /// - /// The value of the parameter. - /// - public string Value { get; set; } + /// + /// The value of the parameter. + /// + public string Value { get; set; } } } diff --git a/BuckarooSdk/DataTypes/AdditionalParameters.cs b/BuckarooSdk/DataTypes/AdditionalParameters.cs index 466e6d7..86b5938 100644 --- a/BuckarooSdk/DataTypes/AdditionalParameters.cs +++ b/BuckarooSdk/DataTypes/AdditionalParameters.cs @@ -2,25 +2,25 @@ namespace BuckarooSdk.DataTypes { - // INTERNAL NOTE: This class purely exists because of the legacy json message that has to be created. within - // this message, the list of custom parameters is a value belonging to the tag: additionalparameters + // INTERNAL NOTE: This class purely exists because of the legacy json message that has to be created. within + // this message, the list of custom parameters is a value belonging to the tag: additionalparameters - /// - /// A class that holds a list of additional parameters. - /// - public class AdditionalParameters + /// + /// A class that holds a list of additional parameters. + /// + public class AdditionalParameters { - /// - /// A list of additional parameters. - /// - public List AdditionalParameter { get; set; } + /// + /// A list of additional parameters. + /// + public List AdditionalParameter { get; set; } - /// - /// primary constructor. A new list of additional parameters is instantiated. - /// - public AdditionalParameters() + /// + /// primary constructor. A new list of additional parameters is instantiated. + /// + public AdditionalParameters() { - this.AdditionalParameter = new List(); + this.AdditionalParameter = new List(); } } } diff --git a/BuckarooSdk/DataTypes/ChannelEnum.cs b/BuckarooSdk/DataTypes/ChannelEnum.cs index 849971f..6eae663 100644 --- a/BuckarooSdk/DataTypes/ChannelEnum.cs +++ b/BuckarooSdk/DataTypes/ChannelEnum.cs @@ -1,45 +1,45 @@ namespace BuckarooSdk.DataTypes { - /// - /// Enum with all channels from which transactions can be initiated. - /// + /// + /// Enum with all channels from which transactions can be initiated. + /// public enum ChannelEnum { - #region channels + #region channels - /// - /// The web channel. - /// - Web = 1, - /// - /// The POS channel. - /// + /// + /// The web channel. + /// + Web = 1, + /// + /// The POS channel. + /// PointOfSale = 2, - /// - /// The batch file channel. - /// + /// + /// The batch file channel. + /// BatchFile = 3, - /// - /// the Employee channel. - /// + /// + /// the Employee channel. + /// Employee = 4, - /// - /// The callcenter channel. - /// + /// + /// The callcenter channel. + /// CallCenter = 5, - /// - /// The BSS channel. - /// + /// + /// The BSS channel. + /// Bss = 6, - /// - /// The Buckaroo backoffice channel. - /// + /// + /// The Buckaroo backoffice channel. + /// BackOffice = 7, - /// - /// The internal checkout channel. - /// + /// + /// The internal checkout channel. + /// InternalCheckout = 8 - #endregion - } + #endregion + } } diff --git a/BuckarooSdk/DataTypes/ContinueOnIncomplete.cs b/BuckarooSdk/DataTypes/ContinueOnIncomplete.cs index adc8b4f..5a91366 100644 --- a/BuckarooSdk/DataTypes/ContinueOnIncomplete.cs +++ b/BuckarooSdk/DataTypes/ContinueOnIncomplete.cs @@ -1,17 +1,17 @@ namespace BuckarooSdk.DataTypes { - /// - /// Enum with options for the continue on incomplete. - /// + /// + /// Enum with options for the continue on incomplete. + /// public enum ContinueOnIncomplete { - /// - /// do not continue on incomplete. - /// + /// + /// do not continue on incomplete. + /// No, - /// - /// Redirect to HTML page on incpmplete. - /// + /// + /// Redirect to HTML page on incpmplete. + /// RedirectToHTML } } diff --git a/BuckarooSdk/DataTypes/CustomParameter.cs b/BuckarooSdk/DataTypes/CustomParameter.cs index c6c309f..84ef4d3 100644 --- a/BuckarooSdk/DataTypes/CustomParameter.cs +++ b/BuckarooSdk/DataTypes/CustomParameter.cs @@ -1,19 +1,19 @@ namespace BuckarooSdk.DataTypes { - /// - /// A custom parameter is a name value pair that can be used to add custom data - /// to a request. - /// + /// + /// A custom parameter is a name value pair that can be used to add custom data + /// to a request. + /// public class CustomParameter { - /// - /// The name of the parameter. - /// + /// + /// The name of the parameter. + /// public string Name { get; set; } - /// - /// The value of the parameter. - /// + /// + /// The value of the parameter. + /// public string Value { get; set; } } } diff --git a/BuckarooSdk/DataTypes/CustomParameters.cs b/BuckarooSdk/DataTypes/CustomParameters.cs index 55b9937..44321c0 100644 --- a/BuckarooSdk/DataTypes/CustomParameters.cs +++ b/BuckarooSdk/DataTypes/CustomParameters.cs @@ -2,25 +2,25 @@ namespace BuckarooSdk.DataTypes { - // INTERNAL NOTE: This class purely exists because of the legacy json message that has to be created. within - // this message, the list of custom parameters is a value belonging to the tag: customparameters + // INTERNAL NOTE: This class purely exists because of the legacy json message that has to be created. within + // this message, the list of custom parameters is a value belonging to the tag: customparameters - /// - /// A class that holds a list of custom parameters. - /// - public class CustomParameters + /// + /// A class that holds a list of custom parameters. + /// + public class CustomParameters { - /// - /// A list of custom parameters. - /// + /// + /// A list of custom parameters. + /// public List List { get; set; } - /// - /// primary constructor. A new list of custom parameters is instantiated. - /// + /// + /// primary constructor. A new list of custom parameters is instantiated. + /// public CustomParameters() { - this.List = new List(); + this.List = new List(); } } } diff --git a/BuckarooSdk/DataTypes/IpAddress.cs b/BuckarooSdk/DataTypes/IpAddress.cs index c1b06f6..9b38f64 100644 --- a/BuckarooSdk/DataTypes/IpAddress.cs +++ b/BuckarooSdk/DataTypes/IpAddress.cs @@ -1,18 +1,18 @@ namespace BuckarooSdk.DataTypes { - /// - /// The IpAddress class contains all properties regarding the host IP address - /// + /// + /// The IpAddress class contains all properties regarding the host IP address + /// public class IpAddress { - /// - /// The type of Ip address, also known as the protocol type. - /// + /// + /// The type of Ip address, also known as the protocol type. + /// public InternetProtocolVersion Type { get; set; } - /// - /// The actual Ip address - /// + /// + /// The actual Ip address + /// public string Address { get; set; } } } diff --git a/BuckarooSdk/DataTypes/IpProtocolVersion.cs b/BuckarooSdk/DataTypes/IpProtocolVersion.cs index d2cd086..6e58593 100644 --- a/BuckarooSdk/DataTypes/IpProtocolVersion.cs +++ b/BuckarooSdk/DataTypes/IpProtocolVersion.cs @@ -1,17 +1,17 @@ namespace BuckarooSdk.DataTypes { - /// - /// enum for possible internet protocols - /// + /// + /// enum for possible internet protocols + /// public enum InternetProtocolVersion { - /// - /// Internet protocol version V4 - /// + /// + /// Internet protocol version V4 + /// IPv4, - /// - /// Internet protocol version V6 - /// + /// + /// Internet protocol version V6 + /// IPv6, } } diff --git a/BuckarooSdk/DataTypes/ParameterGroups/Afterpay/Article.cs b/BuckarooSdk/DataTypes/ParameterGroups/Afterpay/Article.cs index d09fc72..de85198 100644 --- a/BuckarooSdk/DataTypes/ParameterGroups/Afterpay/Article.cs +++ b/BuckarooSdk/DataTypes/ParameterGroups/Afterpay/Article.cs @@ -1,21 +1,21 @@ -using BuckarooSdk.Services; +using BuckarooSdk.Services; namespace BuckarooSdk.DataTypes.ParameterGroups.Afterpay { - public class Article : ParameterGroup - { - public string Description { get; set; } - public string GrossUnitPrice { get; set; } - public string VatPercentage { get; set; } - public int Quantity { get; set; } - public string Identifier { get; set; } - public string ImageUrl { get; set; } - public string Url { get; set; } - /// - /// Possible values: PhysicalArticle, DigitalArticle, Giftcard, Discount, ShippingFee, Surcharge, Info, ShippingFees. - /// - public string Type { get; set; } - public string UnitCode { get; set; } + public class Article : ParameterGroup + { + public string Description { get; set; } + public string GrossUnitPrice { get; set; } + public string VatPercentage { get; set; } + public int Quantity { get; set; } + public string Identifier { get; set; } + public string ImageUrl { get; set; } + public string Url { get; set; } + /// + /// Possible values: PhysicalArticle, DigitalArticle, Giftcard, Discount, ShippingFee, Surcharge, Info, ShippingFees. + /// + public string Type { get; set; } + public string UnitCode { get; set; } public string RefundType { get; set; } - } + } } diff --git a/BuckarooSdk/DataTypes/RequestBases/TransactionBase.cs b/BuckarooSdk/DataTypes/RequestBases/TransactionBase.cs index 20fdb65..d434f78 100644 --- a/BuckarooSdk/DataTypes/RequestBases/TransactionBase.cs +++ b/BuckarooSdk/DataTypes/RequestBases/TransactionBase.cs @@ -3,133 +3,133 @@ namespace BuckarooSdk.DataTypes.RequestBases { - /// - /// The base properties for a transaction request - /// + /// + /// The base properties for a transaction request + /// public class TransactionBase : IRequestBase { - /// - /// The currency of the transaction. - /// + /// + /// The currency of the transaction. + /// public string Currency { get; set; } - /// - /// The debit amount of the transaction. - /// + /// + /// The debit amount of the transaction. + /// public decimal? AmountDebit { get; set; } - /// - /// the credit amount of the transaction. - /// + /// + /// the credit amount of the transaction. + /// public decimal? AmountCredit { get; set; } - /// - /// The invoicenumber of the invoice the transaction belongs to. - /// + /// + /// The invoicenumber of the invoice the transaction belongs to. + /// public string Invoice { get; set; } - /// - /// The ordernumber of the order the transaction belongs to. - /// + /// + /// The ordernumber of the order the transaction belongs to. + /// public string Order { get; set; } - /// - /// The description that belongs to the transaction. - /// + /// + /// The description that belongs to the transaction. + /// public string Description { get; set; } - /// - /// The Ip Address of the client, that is sending the request. Needs to be instantiated. - /// + /// + /// The Ip Address of the client, that is sending the request. Needs to be instantiated. + /// public IpAddress ClientIp { get; set; } - /// - /// The return url, is the url that the user needs to be redirected to. - /// + /// + /// The return url, is the url that the user needs to be redirected to. + /// public string ReturnUrl { get; set; } - /// - /// The return url cancel, is a specific url that the user needs to be redirected to in - /// case the user cancels the transaction. - /// + /// + /// The return url cancel, is a specific url that the user needs to be redirected to in + /// case the user cancels the transaction. + /// public string ReturnUrlCancel { get; set; } - /// - /// The return url error, is a specific url that the user needs to be redirected to in - /// case the an error occurs during the processing of the request. - /// - public string ReturnUrlError { get; set; } - /// - /// The return url reject, is a specific url that the user needs to be redirected to in - /// case the transaction is rejected by Buckaroo. - /// - public string ReturnUrlReject { get; set; } - /// - /// Contains the original transaction key in case there was a previous payment, that is - /// linked to this payment. e.g. in case of a refund. - /// + /// + /// The return url error, is a specific url that the user needs to be redirected to in + /// case the an error occurs during the processing of the request. + /// + public string ReturnUrlError { get; set; } + /// + /// The return url reject, is a specific url that the user needs to be redirected to in + /// case the transaction is rejected by Buckaroo. + /// + public string ReturnUrlReject { get; set; } + /// + /// Contains the original transaction key in case there was a previous payment, that is + /// linked to this payment. e.g. in case of a refund. + /// public string OriginalTransactionKey { get; set; } - /// - /// Defines if a transaction should initiate a recurrent transaction. Some services support - /// recurring payments (You can identify these by determining if they support the action - /// PayRecurrent). Before being able to do a recurrent payment, a normal payment needs to be - /// made with this field set to true (the default value for this field is false). - /// - public bool StartRecurrent { get; set; } - /// - /// Defines a value that states wheter the request should be aborted, or that the user should - /// be redirected in case the request is incomplete. - /// + /// + /// Defines if a transaction should initiate a recurrent transaction. Some services support + /// recurring payments (You can identify these by determining if they support the action + /// PayRecurrent). Before being able to do a recurrent payment, a normal payment needs to be + /// made with this field set to true (the default value for this field is false). + /// + public bool StartRecurrent { get; set; } + /// + /// Defines a value that states wheter the request should be aborted, or that the user should + /// be redirected in case the request is incomplete. + /// public ContinueOnIncomplete ContinueOnIncomplete { get; set; } - /// - /// If no primary service is provided and ContinueOnIncomplete is set, this list of comma - /// separated servicescodes can be used to limit the number of services from which the customer - /// may choose once he is redirected to the payment form. Only services which are entered in - /// this field are selectable. This field is optional and when empty or missing, the customer - /// may choose any of the available services - /// - public string ServicesSelectableByClient { get; set; } - /// - /// If no primary service is provided and ContinueOnIncomplete is set, this list of comma - /// separated servicescodes can be used to limit the number of services from which the customer - /// may choose once he is redirected to the payment form. Services which are entered in this field - /// are not selectable. This field is optional. - /// - public string ServicesExcludedForClient { get; set; } - /// - /// When provided, this push URL overrides all the push URLs as configured in the payment plaza - /// under websites for the associated website key. - /// - public string PushUrl { get; set; } - /// - /// When provided, this push URL overrides the push URL for failed transactions as configured - /// in the payment plaza under websites for the associated website key. - /// - public string PushUrlFailure { get; set; } - /// - /// This tag can be used to tell the Payment Engine what the user agent of the client’s - /// webbrowser is. This can be used for statistical purposes but also to perform anti-fraud checks - /// on transactions. - /// - public string ClientUserAgent { get; set; } - /// - /// Contains the reference to a previously performed transaction. It has a type, as well as the - /// actual reference - /// - public TransactionReference OriginalTransactionReference { get; set; } + /// + /// If no primary service is provided and ContinueOnIncomplete is set, this list of comma + /// separated servicescodes can be used to limit the number of services from which the customer + /// may choose once he is redirected to the payment form. Only services which are entered in + /// this field are selectable. This field is optional and when empty or missing, the customer + /// may choose any of the available services + /// + public string ServicesSelectableByClient { get; set; } + /// + /// If no primary service is provided and ContinueOnIncomplete is set, this list of comma + /// separated servicescodes can be used to limit the number of services from which the customer + /// may choose once he is redirected to the payment form. Services which are entered in this field + /// are not selectable. This field is optional. + /// + public string ServicesExcludedForClient { get; set; } + /// + /// When provided, this push URL overrides all the push URLs as configured in the payment plaza + /// under websites for the associated website key. + /// + public string PushUrl { get; set; } + /// + /// When provided, this push URL overrides the push URL for failed transactions as configured + /// in the payment plaza under websites for the associated website key. + /// + public string PushUrlFailure { get; set; } + /// + /// This tag can be used to tell the Payment Engine what the user agent of the client’s + /// webbrowser is. This can be used for statistical purposes but also to perform anti-fraud checks + /// on transactions. + /// + public string ClientUserAgent { get; set; } + /// + /// Contains the reference to a previously performed transaction. It has a type, as well as the + /// actual reference + /// + public TransactionReference OriginalTransactionReference { get; set; } - /// - /// The parameters that are custom, which means that they can vary in case different services - /// are used. Where the base transaction paremeters are service independent, these - /// + /// + /// The parameters that are custom, which means that they can vary in case different services + /// are used. Where the base transaction paremeters are service independent, these + /// [JsonProperty()] internal CustomParameters CustomParameters { get; set; } - /// - /// The parameters that are additional to the service, which means that they can vary in case - /// different service are used. Where the base transaction paremeters are service independent, these - /// - [JsonProperty()] + /// + /// The parameters that are additional to the service, which means that they can vary in case + /// different service are used. Where the base transaction paremeters are service independent, these + /// + [JsonProperty()] internal AdditionalParameters AdditionalParameters { get; set; } - /// - /// A services property, which then contains a list of Services - /// + /// + /// A services property, which then contains a list of Services + /// [JsonProperty()] internal TransactionServices Services { get; set; } - /// - /// Primary constructor. Al lists are instantiate within this constructor - /// + /// + /// Primary constructor. Al lists are instantiate within this constructor + /// public TransactionBase() { this.CustomParameters = new CustomParameters(); @@ -150,7 +150,7 @@ public TransactionBase AddCustomParameter(string key, string value) this.CustomParameters.List.Add(new CustomParameter() { Name = key, - Value = value + Value = value }); return this; diff --git a/BuckarooSdk/DataTypes/RequestBases/TransactionStatusBase.cs b/BuckarooSdk/DataTypes/RequestBases/TransactionStatusBase.cs index 129786e..10d3800 100644 --- a/BuckarooSdk/DataTypes/RequestBases/TransactionStatusBase.cs +++ b/BuckarooSdk/DataTypes/RequestBases/TransactionStatusBase.cs @@ -3,46 +3,46 @@ namespace BuckarooSdk.DataTypes.RequestBases { - public class TransactionStatusBase : IRequestBase - { - public List Transactions { get; set; } + public class TransactionStatusBase : IRequestBase + { + public List Transactions { get; set; } - public TransactionStatusBase(List transactions) - { - this.Transactions = transactions; - } + public TransactionStatusBase(List transactions) + { + this.Transactions = transactions; + } - public TransactionStatusBase AddTransactionStatus(TransactionStatus transaction) - { - this.Transactions.Add(transaction); - return this; - } - } + public TransactionStatusBase AddTransactionStatus(TransactionStatus transaction) + { + this.Transactions.Add(transaction); + return this; + } + } - public class TransactionStatus - { - public string Key { get; set; } - public string Invoice {get; set; } + public class TransactionStatus + { + public string Key { get; set; } + public string Invoice {get; set; } - /// - /// The parameters that are custom, which means that they can vary in case different services - /// are used. Where the base transaction paremeters are service independent, these - /// + /// + /// The parameters that are custom, which means that they can vary in case different services + /// are used. Where the base transaction paremeters are service independent, these + /// [JsonProperty()] internal CustomParameters CustomParameters { get; set; } - /// - /// The parameters that are additional to the service, which means that they can vary in case - /// different service are used. Where the base transaction paremeters are service independent, these - /// - [JsonProperty()] + /// + /// The parameters that are additional to the service, which means that they can vary in case + /// different service are used. Where the base transaction paremeters are service independent, these + /// + [JsonProperty()] internal AdditionalParameters AdditionalParameters { get; set; } - public TransactionStatus() - { - - } + public TransactionStatus() + { + + } - /// + /// /// Adds a custom parameter to the transactionbase. requires a parameter key and a parameter value. /// /// @@ -53,7 +53,7 @@ public void AddCustomParameter(string key, string value) this.CustomParameters.List.Add(new CustomParameter() { Name = key, - Value = value + Value = value }); } @@ -71,5 +71,5 @@ public void AddAdditionalParameter(string key, string value) Value = value }); } - } + } } diff --git a/BuckarooSdk/DataTypes/Response/ConsumerMessage.cs b/BuckarooSdk/DataTypes/Response/ConsumerMessage.cs index cf48b83..3b5ad28 100644 --- a/BuckarooSdk/DataTypes/Response/ConsumerMessage.cs +++ b/BuckarooSdk/DataTypes/Response/ConsumerMessage.cs @@ -1,29 +1,29 @@ -namespace BuckarooSdk.DataTypes.Response +namespace BuckarooSdk.DataTypes.Response { - /// - /// The date corresponding with the consumer message within the response - /// + /// + /// The date corresponding with the consumer message within the response + /// public class ConsumerMessage { - /// - /// boolean that specifies if the message is must read - /// + /// + /// boolean that specifies if the message is must read + /// public bool MustRead { get; set; } - /// - /// The name of the culture that needs to be used for the message - /// + /// + /// The name of the culture that needs to be used for the message + /// public string CultureName { get; set; } - /// - /// The title of the message - /// + /// + /// The title of the message + /// public string Title { get; set; } - /// - /// the text that is used for the message - /// + /// + /// the text that is used for the message + /// public string PlainText { get; set; } - /// - /// the html text that is used for the message. - /// + /// + /// the html text that is used for the message. + /// public string HtmlText { get; set; } } -} \ No newline at end of file +} diff --git a/BuckarooSdk/DataTypes/Response/DataType.cs b/BuckarooSdk/DataTypes/Response/DataType.cs index 0175877..cd9fe67 100644 --- a/BuckarooSdk/DataTypes/Response/DataType.cs +++ b/BuckarooSdk/DataTypes/Response/DataType.cs @@ -1,47 +1,47 @@ -namespace BuckarooSdk.DataTypes.Response +namespace BuckarooSdk.DataTypes.Response { - /// - /// Enum that is used for the typing of response parameters. - /// + /// + /// Enum that is used for the typing of response parameters. + /// public enum DataType { - #region Datatypes - /// - /// String data type - /// - String, - /// - /// Integer data type - /// - Integer, - /// - /// Decimal data type - /// - Decimal, - /// - /// Date data type - /// - Date, - /// - /// Date time data type - /// - Datetime, - /// - /// Boolean data type - /// - Boolean, - /// - /// Cardnumber data type - /// - CardNumber, - /// - /// ExiryDate data type - /// + #region Datatypes + /// + /// String data type + /// + String, + /// + /// Integer data type + /// + Integer, + /// + /// Decimal data type + /// + Decimal, + /// + /// Date data type + /// + Date, + /// + /// Date time data type + /// + Datetime, + /// + /// Boolean data type + /// + Boolean, + /// + /// Cardnumber data type + /// + CardNumber, + /// + /// ExiryDate data type + /// ExpiryDate, - /// - /// CardStart data type - /// + /// + /// CardStart data type + /// CardStartDate - #endregion - } -} \ No newline at end of file + #endregion + } +} diff --git a/BuckarooSdk/DataTypes/Response/Error/ActionError.cs b/BuckarooSdk/DataTypes/Response/Error/ActionError.cs index ef64de3..418488f 100644 --- a/BuckarooSdk/DataTypes/Response/Error/ActionError.cs +++ b/BuckarooSdk/DataTypes/Response/Error/ActionError.cs @@ -1,25 +1,25 @@ -namespace BuckarooSdk.DataTypes.Response.Error +namespace BuckarooSdk.DataTypes.Response.Error { - /// - /// An error regarding an action related problem. - /// - public class ActionError : RequestError - { - /// - /// Service used when the error occured. - /// - public string Service { get; set; } - /// - /// The name of the error. - /// - public string Name { get; set; } - /// - /// The actual error. - /// - public string Error { get; set; } - /// - /// The message containing details of the error. - /// - public string ErrorMessage { get; set; } + /// + /// An error regarding an action related problem. + /// + public class ActionError : RequestError + { + /// + /// Service used when the error occured. + /// + public string Service { get; set; } + /// + /// The name of the error. + /// + public string Name { get; set; } + /// + /// The actual error. + /// + public string Error { get; set; } + /// + /// The message containing details of the error. + /// + public string ErrorMessage { get; set; } } -} \ No newline at end of file +} diff --git a/BuckarooSdk/DataTypes/Response/Error/ChannelError.cs b/BuckarooSdk/DataTypes/Response/Error/ChannelError.cs index db65e18..2696546 100644 --- a/BuckarooSdk/DataTypes/Response/Error/ChannelError.cs +++ b/BuckarooSdk/DataTypes/Response/Error/ChannelError.cs @@ -1,31 +1,31 @@ -namespace BuckarooSdk.DataTypes.Response.Error +namespace BuckarooSdk.DataTypes.Response.Error { - /// - /// An error regarding a channel related problem. - /// + /// + /// An error regarding a channel related problem. + /// public class ChannelError : RequestError - { - /// - /// Service used when the error occured. - /// - public string Service { get; set; } - /// - /// The action that was performed when the error occured. - /// + { + /// + /// Service used when the error occured. + /// + public string Service { get; set; } + /// + /// The action that was performed when the error occured. + /// public string Action { get; set; } - /// - /// The name of the error. - /// + /// + /// The name of the error. + /// public string Name { get; set; } - /// - /// The actual error. - /// + /// + /// The actual error. + /// public string Error { get; set; } - /// - /// The message containing details of the error. - /// + /// + /// The message containing details of the error. + /// public string ErrorMessage { get; set; } - //public string Type => this.GetType().Name; - } -} \ No newline at end of file + //public string Type => this.GetType().Name; + } +} diff --git a/BuckarooSdk/DataTypes/Response/Error/CustomParameterError.cs b/BuckarooSdk/DataTypes/Response/Error/CustomParameterError.cs index 8033246..fdd536c 100644 --- a/BuckarooSdk/DataTypes/Response/Error/CustomParameterError.cs +++ b/BuckarooSdk/DataTypes/Response/Error/CustomParameterError.cs @@ -1,21 +1,21 @@ -namespace BuckarooSdk.DataTypes.Response.Error +namespace BuckarooSdk.DataTypes.Response.Error { - /// - /// An error regarding a custom parameter related problem. - /// - public class CustomParameterError + /// + /// An error regarding a custom parameter related problem. + /// + public class CustomParameterError { - /// - /// The name of the error. - /// - public string Name { get; set; } - /// - /// The actual error. - /// - public string Error { get; set; } - /// - /// The message containing details of the error. - /// - public string ErrorMessage { get; set; } - } -} \ No newline at end of file + /// + /// The name of the error. + /// + public string Name { get; set; } + /// + /// The actual error. + /// + public string Error { get; set; } + /// + /// The message containing details of the error. + /// + public string ErrorMessage { get; set; } + } +} diff --git a/BuckarooSdk/DataTypes/Response/Error/ParameterError.cs b/BuckarooSdk/DataTypes/Response/Error/ParameterError.cs index bdcd2e6..48d5b87 100644 --- a/BuckarooSdk/DataTypes/Response/Error/ParameterError.cs +++ b/BuckarooSdk/DataTypes/Response/Error/ParameterError.cs @@ -1,30 +1,30 @@ -namespace BuckarooSdk.DataTypes.Response.Error +namespace BuckarooSdk.DataTypes.Response.Error { - /// - /// An error regarding a parameter related problem. - /// - public class ParameterError + /// + /// An error regarding a parameter related problem. + /// + public class ParameterError { - /// - /// Service used when the error occured. - /// - public string Service { get; set; } - /// - /// The action that was performed when the error occured. - /// - public string Action { get; set; } - /// - /// The name of the error. - /// - public string Name { get; set; } - /// - /// The actual error. - /// - public string Error { get; set; } - /// - /// The message containing details of the error. - /// - public string ErrorMessage { get; set; } - } -} \ No newline at end of file + /// + /// Service used when the error occured. + /// + public string Service { get; set; } + /// + /// The action that was performed when the error occured. + /// + public string Action { get; set; } + /// + /// The name of the error. + /// + public string Name { get; set; } + /// + /// The actual error. + /// + public string Error { get; set; } + /// + /// The message containing details of the error. + /// + public string ErrorMessage { get; set; } + } +} diff --git a/BuckarooSdk/DataTypes/Response/Error/RequestErrors.cs b/BuckarooSdk/DataTypes/Response/Error/RequestErrors.cs index 186b85e..7b80c9f 100644 --- a/BuckarooSdk/DataTypes/Response/Error/RequestErrors.cs +++ b/BuckarooSdk/DataTypes/Response/Error/RequestErrors.cs @@ -1,31 +1,31 @@ -using System.Collections.Generic; +using System.Collections.Generic; namespace BuckarooSdk.DataTypes.Response.Error { - /// - /// All errors regarding the request. All errors are ordered by category. - /// + /// + /// All errors regarding the request. All errors are ordered by category. + /// public class RequestErrors { - /// - /// A list of channel related errors - /// + /// + /// A list of channel related errors + /// public List ChannelErrors = new List(); - /// - /// A list of service related errors - /// + /// + /// A list of service related errors + /// public List ServiceErrors = new List(); - /// - /// A list of action related errors - /// + /// + /// A list of action related errors + /// public List ActionErrors = new List(); - /// - /// A list of parameter related errors - /// + /// + /// A list of parameter related errors + /// public List ParameterErrors = new List(); - /// - /// A list of custom parameter related errors - /// + /// + /// A list of custom parameter related errors + /// public List CustomParameterErrors = new List(); } -} \ No newline at end of file +} diff --git a/BuckarooSdk/DataTypes/Response/Error/ServiceError.cs b/BuckarooSdk/DataTypes/Response/Error/ServiceError.cs index 5cf8332..8181d83 100644 --- a/BuckarooSdk/DataTypes/Response/Error/ServiceError.cs +++ b/BuckarooSdk/DataTypes/Response/Error/ServiceError.cs @@ -1,21 +1,21 @@ -namespace BuckarooSdk.DataTypes.Response.Error +namespace BuckarooSdk.DataTypes.Response.Error { - /// - /// An error regarding a service related problem. - /// - public class ServiceError + /// + /// An error regarding a service related problem. + /// + public class ServiceError { - /// - /// The name of the error. - /// - public string Name { get; set; } - /// - /// The actual error. - /// - public string Error { get; set; } - /// - /// The message containing details of the error. - /// - public string ErrorMessage { get; set; } + /// + /// The name of the error. + /// + public string Name { get; set; } + /// + /// The actual error. + /// + public string Error { get; set; } + /// + /// The message containing details of the error. + /// + public string ErrorMessage { get; set; } } -} \ No newline at end of file +} diff --git a/BuckarooSdk/DataTypes/Response/MutationType.cs b/BuckarooSdk/DataTypes/Response/MutationType.cs index 8109471..defa18b 100644 --- a/BuckarooSdk/DataTypes/Response/MutationType.cs +++ b/BuckarooSdk/DataTypes/Response/MutationType.cs @@ -1,29 +1,29 @@ -namespace BuckarooSdk.DataTypes.Response +namespace BuckarooSdk.DataTypes.Response { - /// - /// Enum within options for the mutationtype. The mutationtype specifies the financial impact. - /// + /// + /// Enum within options for the mutationtype. The mutationtype specifies the financial impact. + /// public enum MutationType { - /// - /// CancelTransaction mutation type not specified - /// + /// + /// CancelTransaction mutation type not specified + /// NotSet, - /// - /// CancelTransaction mutation type is collecting, which means that Buckaroo - /// collects the funds of the transaction - /// + /// + /// CancelTransaction mutation type is collecting, which means that Buckaroo + /// collects the funds of the transaction + /// Collecting, - /// - /// CancelTransaction mutation type is processing, which means that Buckaroo - /// does not collect the funds. The funds will be collected and paid out - /// by a third party - /// + /// + /// CancelTransaction mutation type is processing, which means that Buckaroo + /// does not collect the funds. The funds will be collected and paid out + /// by a third party + /// Processing, - /// - /// CancelTransaction mutation type is informational, which means that this - /// transactions has no financial consequenses directly. - /// + /// + /// CancelTransaction mutation type is informational, which means that this + /// transactions has no financial consequenses directly. + /// Informational } -} \ No newline at end of file +} diff --git a/BuckarooSdk/DataTypes/Response/PayRemainderDetails.cs b/BuckarooSdk/DataTypes/Response/PayRemainderDetails.cs index 410abfe..0d0a278 100644 --- a/BuckarooSdk/DataTypes/Response/PayRemainderDetails.cs +++ b/BuckarooSdk/DataTypes/Response/PayRemainderDetails.cs @@ -1,21 +1,21 @@ -namespace BuckarooSdk.DataTypes.Response +namespace BuckarooSdk.DataTypes.Response { - /// - /// Data corresponding to the payremainder details. - /// + /// + /// Data corresponding to the payremainder details. + /// public class PayRemainderDetails { - /// - /// the remaining amount set for the remainder - /// + /// + /// the remaining amount set for the remainder + /// public decimal RemainderAmount { get; set; } - /// - /// The currency of the payment remainder - /// + /// + /// The currency of the payment remainder + /// public string Currency { get; set; } /// /// The grouptransaction of the payremainder /// public string GroupTransaction { get; set; } } -} \ No newline at end of file +} diff --git a/BuckarooSdk/DataTypes/Response/RelatedTransaction.cs b/BuckarooSdk/DataTypes/Response/RelatedTransaction.cs index 0f7b924..728fe64 100644 --- a/BuckarooSdk/DataTypes/Response/RelatedTransaction.cs +++ b/BuckarooSdk/DataTypes/Response/RelatedTransaction.cs @@ -1,17 +1,17 @@ -namespace BuckarooSdk.DataTypes.Response +namespace BuckarooSdk.DataTypes.Response { - /// - /// A previously performed transaction that is related to the transaction that has to be performed now. - /// + /// + /// A previously performed transaction that is related to the transaction that has to be performed now. + /// public class RelatedTransaction { - /// - /// The type of relation that the - /// + /// + /// The type of relation that the + /// public string RelationType { get; set; } /// /// The transaction key of the related transaction /// public string RelatedTransactionKey { get; set; } } -} \ No newline at end of file +} diff --git a/BuckarooSdk/DataTypes/Response/RequestInformationParameter.cs b/BuckarooSdk/DataTypes/Response/RequestInformationParameter.cs index 58b25b2..fe93fba 100644 --- a/BuckarooSdk/DataTypes/Response/RequestInformationParameter.cs +++ b/BuckarooSdk/DataTypes/Response/RequestInformationParameter.cs @@ -1,29 +1,29 @@ -namespace BuckarooSdk.DataTypes.Response +namespace BuckarooSdk.DataTypes.Response { - /// - /// All data corresponding for a request information parameter - /// + /// + /// All data corresponding for a request information parameter + /// public class RequestInformationParameter { - /// - /// The name of the request information parameter - /// + /// + /// The name of the request information parameter + /// public string Name { get; set; } - /// - /// The data type of the parameter - /// + /// + /// The data type of the parameter + /// public DataType DataType { get; set; } - /// - /// the maximum length of the parameter - /// + /// + /// the maximum length of the parameter + /// public int MaxLength { get; set; } - /// - /// Specifies whether the parameter is required for the request. - /// + /// + /// Specifies whether the parameter is required for the request. + /// public bool Required { get; set; } - /// - /// The description of the parameter. - /// + /// + /// The description of the parameter. + /// public string Description { get; set; } } -} \ No newline at end of file +} diff --git a/BuckarooSdk/DataTypes/Response/RequiredAction.cs b/BuckarooSdk/DataTypes/Response/RequiredAction.cs index 868d0fc..5e9ca3e 100644 --- a/BuckarooSdk/DataTypes/Response/RequiredAction.cs +++ b/BuckarooSdk/DataTypes/Response/RequiredAction.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; namespace BuckarooSdk.DataTypes.Response @@ -26,7 +26,7 @@ public string Name { RequiredActionType type; Enum.TryParse(value, out type); - this.Type = type; + this.Type = type; } } /// @@ -42,4 +42,4 @@ public string Name /// public PayRemainderDetails PayRemainderDetails { get; set; } } -} \ No newline at end of file +} diff --git a/BuckarooSdk/DataTypes/Response/ResponseParameter.cs b/BuckarooSdk/DataTypes/Response/ResponseParameter.cs index 2e9a1ec..ceca5c1 100644 --- a/BuckarooSdk/DataTypes/Response/ResponseParameter.cs +++ b/BuckarooSdk/DataTypes/Response/ResponseParameter.cs @@ -1,18 +1,18 @@ -namespace BuckarooSdk.DataTypes.Response +namespace BuckarooSdk.DataTypes.Response { - /// - /// The reponse parameter specifies the name and value of each response. - /// + /// + /// The reponse parameter specifies the name and value of each response. + /// public class ResponseParameter { - /// - /// The name of the response parameter. - /// + /// + /// The name of the response parameter. + /// public string Name { get; set; } - /// - /// The value of the response parameter. - /// + /// + /// The value of the response parameter. + /// public string Value { get; set; } } -} \ No newline at end of file +} diff --git a/BuckarooSdk/DataTypes/Response/Service.cs b/BuckarooSdk/DataTypes/Response/Service.cs index 9b29a13..a857689 100644 --- a/BuckarooSdk/DataTypes/Response/Service.cs +++ b/BuckarooSdk/DataTypes/Response/Service.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; namespace BuckarooSdk.DataTypes.Response { @@ -7,23 +7,23 @@ namespace BuckarooSdk.DataTypes.Response /// public class Service { - /// - /// The version of the service - /// - public uint VersionAsProperty { get; set; } - /// - /// The name of the service that the response belongs to. - /// + /// + /// The version of the service + /// + public uint VersionAsProperty { get; set; } + /// + /// The name of the service that the response belongs to. + /// public string Name { get; set; } - /// - /// The name of the action that the response belongs to. - /// + /// + /// The name of the action that the response belongs to. + /// public string Action { get; set; } - /// - /// The list of response parameters. - /// + /// + /// The list of response parameters. + /// public List Parameters { get; set; } } -} \ No newline at end of file +} diff --git a/BuckarooSdk/DataTypes/Response/Status/Status.cs b/BuckarooSdk/DataTypes/Response/Status/Status.cs index b189a44..5c95ca8 100644 --- a/BuckarooSdk/DataTypes/Response/Status/Status.cs +++ b/BuckarooSdk/DataTypes/Response/Status/Status.cs @@ -1,4 +1,4 @@ -using System; +using System; namespace BuckarooSdk.DataTypes.Response.Status { @@ -25,8 +25,8 @@ public class Status /// public Status() { - this.Code = new StatusCode(); - this.SubCode = new StatusSubCode(); + this.Code = new StatusCode(); + this.SubCode = new StatusSubCode(); } } -} \ No newline at end of file +} diff --git a/BuckarooSdk/DataTypes/TransactionReference.cs b/BuckarooSdk/DataTypes/TransactionReference.cs index cf6391a..7544e0c 100644 --- a/BuckarooSdk/DataTypes/TransactionReference.cs +++ b/BuckarooSdk/DataTypes/TransactionReference.cs @@ -1,18 +1,18 @@ namespace BuckarooSdk.DataTypes { - /// - /// A transaction reference is used to give within a transaction to give a reference towards - /// previously performed transaction. - /// + /// + /// A transaction reference is used to give within a transaction to give a reference towards + /// previously performed transaction. + /// public class TransactionReference { - /// - /// The type of the original transaction - /// + /// + /// The type of the original transaction + /// public string Type { get; set; } - /// - /// The actual reference of the original transaction - /// + /// + /// The actual reference of the original transaction + /// public string Reference { get; set; } } } diff --git a/BuckarooSdk/Services/Afterpay/AfterpayRefundRequest.cs b/BuckarooSdk/Services/Afterpay/AfterpayRefundRequest.cs index e17d2e3..8329098 100644 --- a/BuckarooSdk/Services/Afterpay/AfterpayRefundRequest.cs +++ b/BuckarooSdk/Services/Afterpay/AfterpayRefundRequest.cs @@ -1,9 +1,9 @@ -using BuckarooSdk.DataTypes.ParameterGroups.Afterpay; +using BuckarooSdk.DataTypes.ParameterGroups.Afterpay; namespace BuckarooSdk.Services.Afterpay { - public class AfterpayRefundRequest - { - public ParameterGroupCollection
Articles { get; set; } + public class AfterpayRefundRequest + { + public ParameterGroupCollection
Articles { get; set; } } } diff --git a/BuckarooSdk/Services/CreditCards/AmericanExpress/TransactionRequest/AmericanExpressTransaction.cs b/BuckarooSdk/Services/CreditCards/AmericanExpress/TransactionRequest/AmericanExpressTransaction.cs index 54391bc..84a495c 100644 --- a/BuckarooSdk/Services/CreditCards/AmericanExpress/TransactionRequest/AmericanExpressTransaction.cs +++ b/BuckarooSdk/Services/CreditCards/AmericanExpress/TransactionRequest/AmericanExpressTransaction.cs @@ -2,19 +2,19 @@ namespace BuckarooSdk.Services.CreditCards.AmericanExpress.TransactionRequest { - public class AmericanExpressTransaction - { - /// - /// The configured transaction - /// - private ConfiguredTransaction ConfiguredTransaction { get; set; } + public class AmericanExpressTransaction + { + /// + /// The configured transaction + /// + private ConfiguredTransaction ConfiguredTransaction { get; set; } - internal AmericanExpressTransaction(ConfiguredTransaction configuredTransaction) - { - this.ConfiguredTransaction = configuredTransaction; - } + internal AmericanExpressTransaction(ConfiguredTransaction configuredTransaction) + { + this.ConfiguredTransaction = configuredTransaction; + } - /// + /// /// The pay function creates a configured transaction with an IdealPayRequest, /// that is ready to be executed. /// @@ -29,11 +29,11 @@ public ConfiguredServiceTransaction Pay(AmericanExpressPayRequest request) return configuredServiceTransaction; } /// - /// The refund function creates a configured transaction with an IdealRefundRequest, + /// The refund function creates a configured transaction with an IdealRefundRequest, /// that is ready to be executed. - /// - /// An IdealRefundRequest - /// + /// + /// An IdealRefundRequest + /// public ConfiguredServiceTransaction Refund(AmericanExpressRefundRequest request) { var parameters = ServiceHelper.CreateServiceParameters(request); @@ -43,12 +43,12 @@ public ConfiguredServiceTransaction Refund(AmericanExpressRefundRequest request) return configuredServiceTransaction; } - /// - /// The pay remainder function creates a configured transaction with an IdealPayRemainderRequest, + /// + /// The pay remainder function creates a configured transaction with an IdealPayRemainderRequest, /// that is ready to be executed. - /// - /// An IdealPayRemainderRequest - /// + /// + /// An IdealPayRemainderRequest + /// public ConfiguredServiceTransaction Authorize(AmericanExpressAuthorizeRequest request) { var parameters = ServiceHelper.CreateServiceParameters(request); @@ -58,12 +58,12 @@ public ConfiguredServiceTransaction Authorize(AmericanExpressAuthorizeRequest re return configuredServiceTransaction; } - /// - /// The pay remainder function creates a configured transaction with an IdealPayRemainderRequest, + /// + /// The pay remainder function creates a configured transaction with an IdealPayRemainderRequest, /// that is ready to be executed. - /// - /// An IdealPayRemainderRequest - /// + /// + /// An IdealPayRemainderRequest + /// public ConfiguredServiceTransaction PayRecurrent(AmericanExpressPayRecurrentRequest request) { var parameters = ServiceHelper.CreateServiceParameters(request); @@ -74,11 +74,11 @@ public ConfiguredServiceTransaction PayRecurrent(AmericanExpressPayRecurrentRequ } /// - /// The pay remainder function creates a configured transaction with an IdealPayRemainderRequest, + /// The pay remainder function creates a configured transaction with an IdealPayRemainderRequest, /// that is ready to be executed. - /// - /// An IdealPayRemainderRequest - /// + /// + /// An IdealPayRemainderRequest + /// public ConfiguredServiceTransaction PayRemainder(AmericanExpressPayRemainderRequest request) { var parameters = ServiceHelper.CreateServiceParameters(request); @@ -88,5 +88,5 @@ public ConfiguredServiceTransaction PayRemainder(AmericanExpressPayRemainderRequ return configuredServiceTransaction; } - } + } } diff --git a/BuckarooSdk/Services/CreditCards/BanContact/BanContactTransaction.cs b/BuckarooSdk/Services/CreditCards/BanContact/BanContactTransaction.cs index 4bce572..18f1715 100644 --- a/BuckarooSdk/Services/CreditCards/BanContact/BanContactTransaction.cs +++ b/BuckarooSdk/Services/CreditCards/BanContact/BanContactTransaction.cs @@ -1,4 +1,4 @@ -using BuckarooSdk.Services.CreditCards.BanContact.Request; +using BuckarooSdk.Services.CreditCards.BanContact.Request; using BuckarooSdk.Transaction; namespace BuckarooSdk.Services.CreditCards.BanContact @@ -6,8 +6,8 @@ namespace BuckarooSdk.Services.CreditCards.BanContact public class BancontactTransaction { /// - /// The configured transaction - /// + /// The configured transaction + /// private ConfiguredTransaction ConfiguredTransaction { get; set; } internal BancontactTransaction(ConfiguredTransaction configuredTransaction) @@ -15,66 +15,66 @@ internal BancontactTransaction(ConfiguredTransaction configuredTransaction) this.ConfiguredTransaction = configuredTransaction; } - /// + /// /// The Pay function creates a configured transaction with an BancontactPayRequest request, /// that is ready to be executed. /// /// A BancontactPayRequest - /// - public ConfiguredServiceTransaction Pay(BancontactPayRequest request) - { - var parameters = ServiceHelper.CreateServiceParameters(request); - var configuredServiceTransaction = new ConfiguredServiceTransaction(this.ConfiguredTransaction.BaseTransaction); - configuredServiceTransaction.BaseTransaction.AddService("bancontactmrcash", parameters, "Pay", "1"); + /// + public ConfiguredServiceTransaction Pay(BancontactPayRequest request) + { + var parameters = ServiceHelper.CreateServiceParameters(request); + var configuredServiceTransaction = new ConfiguredServiceTransaction(this.ConfiguredTransaction.BaseTransaction); + configuredServiceTransaction.BaseTransaction.AddService("bancontactmrcash", parameters, "Pay", "1"); - return configuredServiceTransaction; - } + return configuredServiceTransaction; + } /// /// The Refund function creates a configured transaction with an BancontactRefundRequest request, /// that is ready to be executed. /// /// A BancontactRefundRequest - /// - public ConfiguredServiceTransaction Refund(BancontactRefundRequest request) - { - var parameters = ServiceHelper.CreateServiceParameters(request); - var configuredServiceTransaction = new ConfiguredServiceTransaction(this.ConfiguredTransaction.BaseTransaction); - configuredServiceTransaction.BaseTransaction.AddService("bancontactmrcash", parameters, "Refund", "1"); + /// + public ConfiguredServiceTransaction Refund(BancontactRefundRequest request) + { + var parameters = ServiceHelper.CreateServiceParameters(request); + var configuredServiceTransaction = new ConfiguredServiceTransaction(this.ConfiguredTransaction.BaseTransaction); + configuredServiceTransaction.BaseTransaction.AddService("bancontactmrcash", parameters, "Refund", "1"); - return configuredServiceTransaction; - } + return configuredServiceTransaction; + } /// /// The PayRemainder function creates a configured transaction with an BancontactPayRemainderRequest request, /// that is ready to be executed. /// /// A BancontactPayRemainderRequest - /// - public ConfiguredServiceTransaction PayRemainder(BancontactPayRemainderRequest request) - { - var parameters = ServiceHelper.CreateServiceParameters(request); - var configuredServiceTransaction = new ConfiguredServiceTransaction(this.ConfiguredTransaction.BaseTransaction); - configuredServiceTransaction.BaseTransaction.AddService("bancontactmrcash", parameters, "PayRemainder", "1"); + /// + public ConfiguredServiceTransaction PayRemainder(BancontactPayRemainderRequest request) + { + var parameters = ServiceHelper.CreateServiceParameters(request); + var configuredServiceTransaction = new ConfiguredServiceTransaction(this.ConfiguredTransaction.BaseTransaction); + configuredServiceTransaction.BaseTransaction.AddService("bancontactmrcash", parameters, "PayRemainder", "1"); - return configuredServiceTransaction; - } + return configuredServiceTransaction; + } /// /// The PayEncrypted function creates a configured transaction with an BancontactPayEncryptedRequest request, /// that is ready to be executed. /// /// A BancontactPayEncryptedRequest - /// - public ConfiguredServiceTransaction PayEncrypted(BancontactPayEncryptedRequest request) - { - var parameters = ServiceHelper.CreateServiceParameters(request); - var configuredServiceTransaction = new ConfiguredServiceTransaction(this.ConfiguredTransaction.BaseTransaction); - configuredServiceTransaction.BaseTransaction.AddService("bancontactmrcash", parameters, "PayEncrypted", "1"); + /// + public ConfiguredServiceTransaction PayEncrypted(BancontactPayEncryptedRequest request) + { + var parameters = ServiceHelper.CreateServiceParameters(request); + var configuredServiceTransaction = new ConfiguredServiceTransaction(this.ConfiguredTransaction.BaseTransaction); + configuredServiceTransaction.BaseTransaction.AddService("bancontactmrcash", parameters, "PayEncrypted", "1"); - return configuredServiceTransaction; - } + return configuredServiceTransaction; + } - } + } } diff --git a/BuckarooSdk/Services/CreditCards/MasterCard/Response/MasterCardCaptureResponse.cs b/BuckarooSdk/Services/CreditCards/MasterCard/Response/MasterCardCaptureResponse.cs index d60530e..bf60107 100644 --- a/BuckarooSdk/Services/CreditCards/MasterCard/Response/MasterCardCaptureResponse.cs +++ b/BuckarooSdk/Services/CreditCards/MasterCard/Response/MasterCardCaptureResponse.cs @@ -4,16 +4,16 @@ namespace BuckarooSdk.Services.CreditCards.MasterCard.Response { public class MasterCardCaptureResponse : ActionResponse { - public override ServiceNames ServiceNames => ServiceNames.MasterCard; + public override ServiceNames ServiceNames => ServiceNames.MasterCard; - /// - /// Last 4 digits of the creditcard number. - /// - public string CardNumberEnding { get; set; } + /// + /// Last 4 digits of the creditcard number. + /// + public string CardNumberEnding { get; set; } - /// - /// Last 4 digits of the creditcard number. - /// - public string CardExpirationDate { get; set; } + /// + /// Last 4 digits of the creditcard number. + /// + public string CardExpirationDate { get; set; } } } diff --git a/BuckarooSdk/Services/CreditCards/Visa/Response/VisaAuthorizeResponse.cs b/BuckarooSdk/Services/CreditCards/Visa/Response/VisaAuthorizeResponse.cs index 2aea1a5..ec2b46d 100644 --- a/BuckarooSdk/Services/CreditCards/Visa/Response/VisaAuthorizeResponse.cs +++ b/BuckarooSdk/Services/CreditCards/Visa/Response/VisaAuthorizeResponse.cs @@ -4,26 +4,26 @@ namespace BuckarooSdk.Services.CreditCards.Visa.Response { public class VisaAuthorizeResponse : ActionResponse { - public override ServiceNames ServiceNames => ServiceNames.Visa; + public override ServiceNames ServiceNames => ServiceNames.Visa; - /// - /// The expiration date of the card used by the customer. - /// + /// + /// The expiration date of the card used by the customer. + /// public string CardExpirationDate { get; set; } - /// - /// States wether the card is enrolled. - /// + /// + /// States wether the card is enrolled. + /// public string CardEnrolled { get; set; } - /// - /// The card authentication reference. - /// + /// + /// The card authentication reference. + /// public string CardAuthentication { get; set; } - /// - /// The last few digits of the card used by the customer. - /// + /// + /// The last few digits of the card used by the customer. + /// public string CardNumberEnding { get; set; } } } diff --git a/BuckarooSdk/Services/CreditCards/Visa/Response/VisaCaptureResponse.cs b/BuckarooSdk/Services/CreditCards/Visa/Response/VisaCaptureResponse.cs index 2713133..f15d1c5 100644 --- a/BuckarooSdk/Services/CreditCards/Visa/Response/VisaCaptureResponse.cs +++ b/BuckarooSdk/Services/CreditCards/Visa/Response/VisaCaptureResponse.cs @@ -4,16 +4,16 @@ namespace BuckarooSdk.Services.CreditCards.Visa.Response { public class VisaCaptureResponse: ActionResponse { - public override ServiceNames ServiceNames => ServiceNames.Visa; + public override ServiceNames ServiceNames => ServiceNames.Visa; - /// - /// Last 4 digits of the creditcard number. - /// - public string CardNumberEnding { get; set; } + /// + /// Last 4 digits of the creditcard number. + /// + public string CardNumberEnding { get; set; } - /// - /// Last 4 digits of the creditcard number. - /// - public string CardExpirationDate { get; set; } + /// + /// Last 4 digits of the creditcard number. + /// + public string CardExpirationDate { get; set; } } } diff --git a/BuckarooSdk/Services/CreditCards/Visa/Response/VisaPayRemainderResponse.cs b/BuckarooSdk/Services/CreditCards/Visa/Response/VisaPayRemainderResponse.cs index 42639e8..bcf0459 100644 --- a/BuckarooSdk/Services/CreditCards/Visa/Response/VisaPayRemainderResponse.cs +++ b/BuckarooSdk/Services/CreditCards/Visa/Response/VisaPayRemainderResponse.cs @@ -4,26 +4,26 @@ namespace BuckarooSdk.Services.CreditCards.Visa.Response { public class VisaPayRemainderResponse: ActionResponse { - public override ServiceNames ServiceNames => ServiceNames.Visa; + public override ServiceNames ServiceNames => ServiceNames.Visa; - /// - /// Credit card expiration date. - /// - public string CardExpirationDate { get; set; } + /// + /// Credit card expiration date. + /// + public string CardExpirationDate { get; set; } - /// - /// The enrolled status. - /// - public string CardEnrolled { get; set; } + /// + /// The enrolled status. + /// + public string CardEnrolled { get; set; } - /// - /// The authentication status. - /// - public string CardAuthentication { get; set; } + /// + /// The authentication status. + /// + public string CardAuthentication { get; set; } - /// - /// Last 4 digits of the creditcard number. - /// - public string CardNumberEnding { get; set; } + /// + /// Last 4 digits of the creditcard number. + /// + public string CardNumberEnding { get; set; } } } diff --git a/BuckarooSdk/Services/CreditCards/Visa/Response/VisaPayResponse.cs b/BuckarooSdk/Services/CreditCards/Visa/Response/VisaPayResponse.cs index 0394d3b..71a28ee 100644 --- a/BuckarooSdk/Services/CreditCards/Visa/Response/VisaPayResponse.cs +++ b/BuckarooSdk/Services/CreditCards/Visa/Response/VisaPayResponse.cs @@ -4,26 +4,26 @@ namespace BuckarooSdk.Services.CreditCards.Visa.Response { public class VisaPayResponse: ActionResponse { - public override ServiceNames ServiceNames => ServiceNames.Visa; + public override ServiceNames ServiceNames => ServiceNames.Visa; - /// - /// Credit card expiration date. - /// - public string CardExpirationDate { get; set; } + /// + /// Credit card expiration date. + /// + public string CardExpirationDate { get; set; } - /// - /// The enrolled status. - /// - public string CardEnrolled { get; set; } + /// + /// The enrolled status. + /// + public string CardEnrolled { get; set; } - /// - /// The authentication status. - /// - public string CardAuthentication { get; set; } + /// + /// The authentication status. + /// + public string CardAuthentication { get; set; } - /// - /// Last 4 digits of the creditcard number. - /// - public string CardNumberEnding { get; set; } + /// + /// Last 4 digits of the creditcard number. + /// + public string CardNumberEnding { get; set; } } } diff --git a/BuckarooSdk/Services/Ideal/TransactionRequest/IdealPayRemainderRequest.cs b/BuckarooSdk/Services/Ideal/TransactionRequest/IdealPayRemainderRequest.cs index 727c3f8..1659fd4 100644 --- a/BuckarooSdk/Services/Ideal/TransactionRequest/IdealPayRemainderRequest.cs +++ b/BuckarooSdk/Services/Ideal/TransactionRequest/IdealPayRemainderRequest.cs @@ -5,15 +5,15 @@ /// public class IdealPayRemainderRequest { - /// - /// Required - /// - /// BIC code of the issuing bank of the consumer. Please refer to the list of banks in the general section for the list of BIC codes. - /// This information is required, but it is possible to let the customer fill it in on the Buckaroo checkout page. In that case, leave - /// the Issuer parameter out and add the basic parameter "ContinueOnIncomplete" with a value of 1. - /// - /// Use constants in BuckarooSdk.Services.Ideal.IdealIssuer - /// - public string Issuer { get; set; } - } + /// + /// Required + /// + /// BIC code of the issuing bank of the consumer. Please refer to the list of banks in the general section for the list of BIC codes. + /// This information is required, but it is possible to let the customer fill it in on the Buckaroo checkout page. In that case, leave + /// the Issuer parameter out and add the basic parameter "ContinueOnIncomplete" with a value of 1. + /// + /// Use constants in BuckarooSdk.Services.Ideal.IdealIssuer + /// + public string Issuer { get; set; } + } } diff --git a/BuckarooSdk/Services/Ideal/TransactionRequest/IdealPayRemainderResponse.cs b/BuckarooSdk/Services/Ideal/TransactionRequest/IdealPayRemainderResponse.cs index cb055a8..22b55f5 100644 --- a/BuckarooSdk/Services/Ideal/TransactionRequest/IdealPayRemainderResponse.cs +++ b/BuckarooSdk/Services/Ideal/TransactionRequest/IdealPayRemainderResponse.cs @@ -3,18 +3,18 @@ namespace BuckarooSdk.Services.Ideal.TransactionRequest { public class IdealPayRemainderResponse : ActionResponse - { - public override ServiceNames ServiceNames => ServiceNames.Ideal; + { + public override ServiceNames ServiceNames => ServiceNames.Ideal; - /// - /// This is the iDEAL transaction ID. - /// - public string TransactionId { get; set; } + /// + /// This is the iDEAL transaction ID. + /// + public string TransactionId { get; set; } - /// - /// The name of the issuer (bank) of the consumer. - /// - public string ConsumerIssuer { get; set; } - } + /// + /// The name of the issuer (bank) of the consumer. + /// + public string ConsumerIssuer { get; set; } + } } diff --git a/BuckarooSdk/Services/Ideal/TransactionRequest/IdealPayRequest.cs b/BuckarooSdk/Services/Ideal/TransactionRequest/IdealPayRequest.cs index 9d2d87e..4b2a266 100644 --- a/BuckarooSdk/Services/Ideal/TransactionRequest/IdealPayRequest.cs +++ b/BuckarooSdk/Services/Ideal/TransactionRequest/IdealPayRequest.cs @@ -1,26 +1,26 @@ namespace BuckarooSdk.Services.Ideal.TransactionRequest { - /// - /// The default action for iDEAL is Pay. This action requires as input the issuing bank of the consumer. - /// Upon receiving this input, the consumer will be redirected to the issuing bank for verification and confirmation of the payment. - /// An iDEAL payment has a lifetime of 15 minutes; this means that as soon as the consumer is redirected to the issuer, the payment - /// must be completed within 15 minutes or it will expire. In the event that the consumer irregularly ends the payment process (for example - /// by closing the browser window before returning to the webshop), the payment status will be retrieved from the acquirer as soon as - /// the 15 minute lifespan is expired and the merchant webshop is updated via a push response. It is therefore recommended to enable the - /// push response in the Payment Plaza when implementing iDEAL. A successful payment will include the BIC, the IBAN, the beneficiary of - /// the bank account from which the payment was made and the name of the selected issuer. - /// - public class IdealPayRequest + /// + /// The default action for iDEAL is Pay. This action requires as input the issuing bank of the consumer. + /// Upon receiving this input, the consumer will be redirected to the issuing bank for verification and confirmation of the payment. + /// An iDEAL payment has a lifetime of 15 minutes; this means that as soon as the consumer is redirected to the issuer, the payment + /// must be completed within 15 minutes or it will expire. In the event that the consumer irregularly ends the payment process (for example + /// by closing the browser window before returning to the webshop), the payment status will be retrieved from the acquirer as soon as + /// the 15 minute lifespan is expired and the merchant webshop is updated via a push response. It is therefore recommended to enable the + /// push response in the Payment Plaza when implementing iDEAL. A successful payment will include the BIC, the IBAN, the beneficiary of + /// the bank account from which the payment was made and the name of the selected issuer. + /// + public class IdealPayRequest { - /// - /// Required - /// - /// BIC code of the issuing bank of the consumer. Please refer to the list of banks in the general section for the list of BIC codes. - /// This information is required, but it is possible to let the customer fill it in on the Buckaroo checkout page. In that case, leave - /// the Issuer parameter out and add the basic parameter "ContinueOnIncomplete" with a value of 1. - /// - /// Use constants in BuckarooSdk.Services.Ideal.IdealIssuer - /// - public string Issuer { get; set; } - } + /// + /// Required + /// + /// BIC code of the issuing bank of the consumer. Please refer to the list of banks in the general section for the list of BIC codes. + /// This information is required, but it is possible to let the customer fill it in on the Buckaroo checkout page. In that case, leave + /// the Issuer parameter out and add the basic parameter "ContinueOnIncomplete" with a value of 1. + /// + /// Use constants in BuckarooSdk.Services.Ideal.IdealIssuer + /// + public string Issuer { get; set; } + } } diff --git a/BuckarooSdk/Services/Ideal/TransactionRequest/IdealRefundRequest.cs b/BuckarooSdk/Services/Ideal/TransactionRequest/IdealRefundRequest.cs index 83969c5..b90d5e9 100644 --- a/BuckarooSdk/Services/Ideal/TransactionRequest/IdealRefundRequest.cs +++ b/BuckarooSdk/Services/Ideal/TransactionRequest/IdealRefundRequest.cs @@ -1,11 +1,11 @@  namespace BuckarooSdk.Services.Ideal.TransactionRequest { - /// - /// To refund a successfully performed iDEAL transaction, use the action Refund. This is only available for ideal collecting. - /// A bank transfer is then initiated which transfers the amount of the original transaction to the consumer. - /// - public class IdealRefundRequest + /// + /// To refund a successfully performed iDEAL transaction, use the action Refund. This is only available for ideal collecting. + /// A bank transfer is then initiated which transfers the amount of the original transaction to the consumer. + /// + public class IdealRefundRequest { } diff --git a/BuckarooSdk/Services/Ideal/TransactionRequest/IdealTransaction.cs b/BuckarooSdk/Services/Ideal/TransactionRequest/IdealTransaction.cs index 384b23f..a43cce4 100644 --- a/BuckarooSdk/Services/Ideal/TransactionRequest/IdealTransaction.cs +++ b/BuckarooSdk/Services/Ideal/TransactionRequest/IdealTransaction.cs @@ -2,14 +2,14 @@ namespace BuckarooSdk.Services.Ideal.TransactionRequest { - /// - /// The Transaction class of payment method type: iDEAL. - /// + /// + /// The Transaction class of payment method type: iDEAL. + /// public class IdealTransaction { - /// - /// The configured transaction - /// + /// + /// The configured transaction + /// private ConfiguredTransaction ConfiguredTransaction { get;} internal IdealTransaction(ConfiguredTransaction configuredTransaction) { @@ -32,11 +32,11 @@ public ConfiguredServiceTransaction Pay(IdealPayRequest request) return configuredServiceTransaction; } /// - /// The refund function creates a configured transaction with an IdealRefundRequest, + /// The refund function creates a configured transaction with an IdealRefundRequest, /// that is ready to be executed. - /// - /// An IdealRefundRequest - /// + /// + /// An IdealRefundRequest + /// public ConfiguredServiceTransaction Refund(IdealRefundRequest request) { var parameters = ServiceHelper.CreateServiceParameters(request); @@ -46,11 +46,11 @@ public ConfiguredServiceTransaction Refund(IdealRefundRequest request) return configuredServiceTransaction; } /// - /// The pay remainder function creates a configured transaction with an IdealPayRemainderRequest, + /// The pay remainder function creates a configured transaction with an IdealPayRemainderRequest, /// that is ready to be executed. - /// - /// An IdealPayRemainderRequest - /// + /// + /// An IdealPayRemainderRequest + /// public ConfiguredServiceTransaction PayRemainder(IdealPayRemainderRequest request) { var parameters = ServiceHelper.CreateServiceParameters(request); diff --git a/BuckarooSdk/Services/OnlineGiro/OnlineGiroRequestObject.cs b/BuckarooSdk/Services/OnlineGiro/OnlineGiroRequestObject.cs index a9f97f9..729d7f9 100644 --- a/BuckarooSdk/Services/OnlineGiro/OnlineGiroRequestObject.cs +++ b/BuckarooSdk/Services/OnlineGiro/OnlineGiroRequestObject.cs @@ -1,12 +1,12 @@ -using BuckarooSdk.Transaction; +using BuckarooSdk.Transaction; namespace BuckarooSdk.Services.OnlineGiro { public class OnlineGiroRequestObject { /// - /// The configured transaction - /// + /// The configured transaction + /// private ConfiguredTransaction ConfiguredTransaction { get; } internal OnlineGiroRequestObject(ConfiguredTransaction configuredTransaction) @@ -14,21 +14,21 @@ internal OnlineGiroRequestObject(ConfiguredTransaction configuredTransaction) this.ConfiguredTransaction = configuredTransaction; } - /// + /// /// The PaymentInvitation function creates a configured transaction with an OnlineGiroPaymentInvitationRequest request, /// that is ready to be executed. /// /// A OnlineGiroPaymentInvitationRequest - /// - public ConfiguredServiceTransaction PaymentInvitation(OnlineGiroPaymentInvitationRequest request) - { - var parameters = ServiceHelper.CreateServiceParameters(request); - var configuredServiceTransaction = new ConfiguredServiceTransaction(this.ConfiguredTransaction.BaseTransaction); - configuredServiceTransaction.BaseTransaction.AddService("onlinegiro", parameters, "PaymentInvitation"); + /// + public ConfiguredServiceTransaction PaymentInvitation(OnlineGiroPaymentInvitationRequest request) + { + var parameters = ServiceHelper.CreateServiceParameters(request); + var configuredServiceTransaction = new ConfiguredServiceTransaction(this.ConfiguredTransaction.BaseTransaction); + configuredServiceTransaction.BaseTransaction.AddService("onlinegiro", parameters, "PaymentInvitation"); - return configuredServiceTransaction; - } + return configuredServiceTransaction; + } - } + } } diff --git a/BuckarooSdk/Services/PayPal/PayPalExtraInfoResponse.cs b/BuckarooSdk/Services/PayPal/PayPalExtraInfoResponse.cs index c89e089..1c55802 100644 --- a/BuckarooSdk/Services/PayPal/PayPalExtraInfoResponse.cs +++ b/BuckarooSdk/Services/PayPal/PayPalExtraInfoResponse.cs @@ -4,7 +4,7 @@ namespace BuckarooSdk.Services.PayPal { public class PayPalExtraInfoResponse : ActionResponse { - public override ServiceNames ServiceNames => ServiceNames.PayPal; + public override ServiceNames ServiceNames => ServiceNames.PayPal; public string SelectedName { get; set; } public string SelectedStreet1 { get; set; } public string SelectedStreet2 { get; set; } diff --git a/BuckarooSdk/Services/PayPal/PayPalPayRecurrentResponse.cs b/BuckarooSdk/Services/PayPal/PayPalPayRecurrentResponse.cs index 0face13..ee1900e 100644 --- a/BuckarooSdk/Services/PayPal/PayPalPayRecurrentResponse.cs +++ b/BuckarooSdk/Services/PayPal/PayPalPayRecurrentResponse.cs @@ -4,7 +4,7 @@ namespace BuckarooSdk.Services.PayPal { public class PayPalPayRecurrentResponse : ActionResponse { - public override ServiceNames ServiceNames => ServiceNames.PayPal; + public override ServiceNames ServiceNames => ServiceNames.PayPal; public string PayerStatus { get; set; } public string PayerCountry { get; set; } public string PayerEmail { get; set; } diff --git a/BuckarooSdk/Services/PayPal/PayPalPayRemainderResponse.cs b/BuckarooSdk/Services/PayPal/PayPalPayRemainderResponse.cs index 2bd4b42..e691558 100644 --- a/BuckarooSdk/Services/PayPal/PayPalPayRemainderResponse.cs +++ b/BuckarooSdk/Services/PayPal/PayPalPayRemainderResponse.cs @@ -4,7 +4,7 @@ namespace BuckarooSdk.Services.PayPal { public class PayPalPayRemainderResponse : ActionResponse { - public override ServiceNames ServiceNames => ServiceNames.PayPal; + public override ServiceNames ServiceNames => ServiceNames.PayPal; public string NoteText { get; set; } public string PayerStatus { get; set; } public string PayerCountry { get; set; } diff --git a/BuckarooSdk/Services/PayPal/PayPalPayResponse.cs b/BuckarooSdk/Services/PayPal/PayPalPayResponse.cs index bf92838..c60da43 100644 --- a/BuckarooSdk/Services/PayPal/PayPalPayResponse.cs +++ b/BuckarooSdk/Services/PayPal/PayPalPayResponse.cs @@ -4,7 +4,7 @@ namespace BuckarooSdk.Services.PayPal { public class PayPalPayResponse : ActionResponse { - public override ServiceNames ServiceNames => ServiceNames.PayPal; + public override ServiceNames ServiceNames => ServiceNames.PayPal; public string PayerEmail { get; set;} public string NoteText { get; set; } public string PayerStatus { get; set; } diff --git a/BuckarooSdk/Services/PayPal/PayPalRefundResponse.cs b/BuckarooSdk/Services/PayPal/PayPalRefundResponse.cs index 0fd4231..9d05395 100644 --- a/BuckarooSdk/Services/PayPal/PayPalRefundResponse.cs +++ b/BuckarooSdk/Services/PayPal/PayPalRefundResponse.cs @@ -7,6 +7,6 @@ namespace BuckarooSdk.Services.PayPal /// public class PayPalRefundResponse : ActionResponse { - public override ServiceNames ServiceNames => ServiceNames.PayPal; + public override ServiceNames ServiceNames => ServiceNames.PayPal; } } diff --git a/BuckarooSdk/Services/PayPal/PayPalTransaction.cs b/BuckarooSdk/Services/PayPal/PayPalTransaction.cs index 8e0de0e..2cf5ecc 100644 --- a/BuckarooSdk/Services/PayPal/PayPalTransaction.cs +++ b/BuckarooSdk/Services/PayPal/PayPalTransaction.cs @@ -5,8 +5,8 @@ namespace BuckarooSdk.Services.PayPal public class PayPalTransaction { /// - /// The configured transaction - /// + /// The configured transaction + /// private ConfiguredTransaction ConfiguredTransaction { get; set; } internal PayPalTransaction(ConfiguredTransaction configuredTransaction) diff --git a/BuckarooSdk/Services/PayPerEmail/PayPerEmailPaymentInvitationRequest.cs b/BuckarooSdk/Services/PayPerEmail/PayPerEmailPaymentInvitationRequest.cs index f21dd88..894a340 100644 --- a/BuckarooSdk/Services/PayPerEmail/PayPerEmailPaymentInvitationRequest.cs +++ b/BuckarooSdk/Services/PayPerEmail/PayPerEmailPaymentInvitationRequest.cs @@ -1,14 +1,14 @@ using System; namespace BuckarooSdk.Services.PayPerEmail { - /// - /// The PayperEmail Payment invitation is a request that has the purpos of sending a payment invitation - /// to a customer. This can be performed by Buckaroo, or a payment link can be returned, in case the - /// mail should be sent by your own system. The payment link is the key element of the PayperEmail and - /// is the link to the Buckaroo Payment Engine. - /// - public class PayPerEmailPaymentInvitationRequest - { + /// + /// The PayperEmail Payment invitation is a request that has the purpos of sending a payment invitation + /// to a customer. This can be performed by Buckaroo, or a payment link can be returned, in case the + /// mail should be sent by your own system. The payment link is the key element of the PayperEmail and + /// is the link to the Buckaroo Payment Engine. + /// + public class PayPerEmailPaymentInvitationRequest + { /// /// The gender of the customer, used to properly address the customer in the mail. Possible values are: /// diff --git a/BuckarooSdk/Services/PayPerEmail/PayPerEmailPaymentInvitationResponse.cs b/BuckarooSdk/Services/PayPerEmail/PayPerEmailPaymentInvitationResponse.cs index 25864c6..85e93c6 100644 --- a/BuckarooSdk/Services/PayPerEmail/PayPerEmailPaymentInvitationResponse.cs +++ b/BuckarooSdk/Services/PayPerEmail/PayPerEmailPaymentInvitationResponse.cs @@ -3,9 +3,9 @@ namespace BuckarooSdk.Services.PayPerEmail { - public class PayPerEmailPaymentInvitationResponse : ActionResponse + public class PayPerEmailPaymentInvitationResponse : ActionResponse { - public override ServiceNames ServiceNames => ServiceNames.PayPerEmail; + public override ServiceNames ServiceNames => ServiceNames.PayPerEmail; public DateTime ExpirationDate { get; set; } public string PayLink { get; set; } } diff --git a/BuckarooSdk/Services/PayPerEmail/PayPerEmailTransaction.cs b/BuckarooSdk/Services/PayPerEmail/PayPerEmailTransaction.cs index 45c6667..9fafbd0 100644 --- a/BuckarooSdk/Services/PayPerEmail/PayPerEmailTransaction.cs +++ b/BuckarooSdk/Services/PayPerEmail/PayPerEmailTransaction.cs @@ -6,30 +6,30 @@ namespace BuckarooSdk.Services.PayPerEmail /// The CancelTransaction class of payment method type: PayPerMail. /// public class PayPerEmailTransaction - { + { /// - /// The configured transaction - /// - private ConfiguredTransaction ConfiguredTransaction { get; set; } + /// The configured transaction + /// + private ConfiguredTransaction ConfiguredTransaction { get; set; } - internal PayPerEmailTransaction(ConfiguredTransaction baseTransaction) - { - this.ConfiguredTransaction = baseTransaction; - } + internal PayPerEmailTransaction(ConfiguredTransaction baseTransaction) + { + this.ConfiguredTransaction = baseTransaction; + } /// - /// The pay function creates a configured transaction with a PayPerEmailPaymentInvitationRequest, + /// The pay function creates a configured transaction with a PayPerEmailPaymentInvitationRequest, /// that is ready to be executed. - /// - /// A PayPerEmailPaymentInvitationRequest - /// - public ConfiguredServiceTransaction PaymentInvitation(PayPerEmailPaymentInvitationRequest request) - { + /// + /// A PayPerEmailPaymentInvitationRequest + /// + public ConfiguredServiceTransaction PaymentInvitation(PayPerEmailPaymentInvitationRequest request) + { var parameters = ServiceHelper.CreateServiceParameters(request); var configuredServiceTransaction = new ConfiguredServiceTransaction(this.ConfiguredTransaction.BaseTransaction); - configuredServiceTransaction.BaseTransaction.AddService("PayPerEmail", parameters, "paymentinvitation"); + configuredServiceTransaction.BaseTransaction.AddService("PayPerEmail", parameters, "paymentinvitation"); - return configuredServiceTransaction; - } - } + return configuredServiceTransaction; + } + } } diff --git a/BuckarooSdk/Services/RequestParameter.cs b/BuckarooSdk/Services/RequestParameter.cs index e4cfac6..0a5ab66 100644 --- a/BuckarooSdk/Services/RequestParameter.cs +++ b/BuckarooSdk/Services/RequestParameter.cs @@ -6,7 +6,7 @@ internal class RequestParameter public string GroupType = string.Empty; public string GroupId = string.Empty; public string Value; - } - - internal class Global : Service { } + } + + internal class Global : Service { } } diff --git a/BuckarooSdk/Services/SimpleSepaDirectDebit/SimpleSepaDirectDebitPayRequest.cs b/BuckarooSdk/Services/SimpleSepaDirectDebit/SimpleSepaDirectDebitPayRequest.cs index 35a6da3..e0cea4f 100644 --- a/BuckarooSdk/Services/SimpleSepaDirectDebit/SimpleSepaDirectDebitPayRequest.cs +++ b/BuckarooSdk/Services/SimpleSepaDirectDebit/SimpleSepaDirectDebitPayRequest.cs @@ -2,29 +2,29 @@ { public class SimpleSepaDirectDebitPayRequest { - /// - /// The account name of the customer. - /// + /// + /// The account name of the customer. + /// public string CustomerAccountName { get; set; } - /// - /// The mandate reference number. - /// + /// + /// The mandate reference number. + /// public string MandateReference { get; set; } - /// - /// The IBAN of the customers account. - /// - public string CustomerIban { get; set; } - /// - /// The BIC of the customers account. - /// - public string CustomerBic { get; set; } - /// - /// The date on which the Sepa Direct Debit needs to be collected. - /// + /// + /// The IBAN of the customers account. + /// + public string CustomerIban { get; set; } + /// + /// The BIC of the customers account. + /// + public string CustomerBic { get; set; } + /// + /// The date on which the Sepa Direct Debit needs to be collected. + /// public string CollectDate { get; set; } - /// - /// The date the mandate has been registered. - /// + /// + /// The date the mandate has been registered. + /// public string MandateDate { get; set; } } } diff --git a/BuckarooSdk/Services/SimpleSepaDirectDebit/SimpleSepaDirectDebitPayResponse.cs b/BuckarooSdk/Services/SimpleSepaDirectDebit/SimpleSepaDirectDebitPayResponse.cs index ab58332..c244eb1 100644 --- a/BuckarooSdk/Services/SimpleSepaDirectDebit/SimpleSepaDirectDebitPayResponse.cs +++ b/BuckarooSdk/Services/SimpleSepaDirectDebit/SimpleSepaDirectDebitPayResponse.cs @@ -5,30 +5,30 @@ namespace BuckarooSdk.Services.SimpleSepaDirectDebit { public class SimpleSepaDirectDebitPayResponse : ActionResponse { - public override ServiceNames ServiceNames => ServiceNames.SimpleSepaDirectDebit; - /// - /// The date the mandate has been registered - /// + public override ServiceNames ServiceNames => ServiceNames.SimpleSepaDirectDebit; + /// + /// The date the mandate has been registered + /// public DateTime MandateDate { get; set; } - /// - /// The type of direct debit that will be processed. - /// + /// + /// The type of direct debit that will be processed. + /// public string DirectDebitType { get; set; } - /// - /// The date the mandate has been registered. - /// + /// + /// The date the mandate has been registered. + /// public DateTime CollectDate { get; set; } - /// - /// The mandate reference number. - /// + /// + /// The mandate reference number. + /// public string MandateReference { get; set; } - /// - /// The IBAN of the customers account. - /// - public string CustomerIban { get; set; } - /// - /// The BIC of the customers account. - /// - public string CustomerBic { get; set; } + /// + /// The IBAN of the customers account. + /// + public string CustomerIban { get; set; } + /// + /// The BIC of the customers account. + /// + public string CustomerBic { get; set; } } } diff --git a/BuckarooSdk/Services/SimpleSepaDirectDebit/SimpleSepaDirectDebitRefundRequest.cs b/BuckarooSdk/Services/SimpleSepaDirectDebit/SimpleSepaDirectDebitRefundRequest.cs index 96fb6e3..ab8e502 100644 --- a/BuckarooSdk/Services/SimpleSepaDirectDebit/SimpleSepaDirectDebitRefundRequest.cs +++ b/BuckarooSdk/Services/SimpleSepaDirectDebit/SimpleSepaDirectDebitRefundRequest.cs @@ -2,17 +2,17 @@ { public class SimpleSepaDirectDebitRefundRequest { - /// - /// The IBAN of the customers account - /// + /// + /// The IBAN of the customers account + /// public string CustomerIban { get; set; } - /// - /// The BIC of the customers account - /// + /// + /// The BIC of the customers account + /// public string CustomerBic { get; set; } - /// - /// The account name of the customer - /// + /// + /// The account name of the customer + /// public string CustomerAccountName { get; set; } } } diff --git a/BuckarooSdk/Services/SimpleSepaDirectDebit/SimpleSepaDirectDebitRefundResponse.cs b/BuckarooSdk/Services/SimpleSepaDirectDebit/SimpleSepaDirectDebitRefundResponse.cs index 92b2632..9c61b02 100644 --- a/BuckarooSdk/Services/SimpleSepaDirectDebit/SimpleSepaDirectDebitRefundResponse.cs +++ b/BuckarooSdk/Services/SimpleSepaDirectDebit/SimpleSepaDirectDebitRefundResponse.cs @@ -4,19 +4,19 @@ namespace BuckarooSdk.Services.SimpleSepaDirectDebit { public class SimpleSepaDirectDebitRefundResponse : ActionResponse { - public override ServiceNames ServiceNames => ServiceNames.SimpleSepaDirectDebit; + public override ServiceNames ServiceNames => ServiceNames.SimpleSepaDirectDebit; - /// - /// The account name of the customer - /// + /// + /// The account name of the customer + /// public string CustomerAccountName { get; set; } - /// - /// The IBAN of the customers account - /// - public string CustomerIban { get; set; } - /// - /// The BIC of the customers account - /// - public string CustomerBic { get; set; } + /// + /// The IBAN of the customers account + /// + public string CustomerIban { get; set; } + /// + /// The BIC of the customers account + /// + public string CustomerBic { get; set; } } } diff --git a/BuckarooSdk/Services/SimpleSepaDirectDebit/SimpleSepaDirectDebitTransaction.cs b/BuckarooSdk/Services/SimpleSepaDirectDebit/SimpleSepaDirectDebitTransaction.cs index 35582f2..7095f20 100644 --- a/BuckarooSdk/Services/SimpleSepaDirectDebit/SimpleSepaDirectDebitTransaction.cs +++ b/BuckarooSdk/Services/SimpleSepaDirectDebit/SimpleSepaDirectDebitTransaction.cs @@ -6,8 +6,8 @@ namespace BuckarooSdk.Services.SimpleSepaDirectDebit public class SimpleSepaDirectDebitTransaction { /// - /// The configured transaction - /// + /// The configured transaction + /// private ConfiguredTransaction ConfiguredTransaction { get; set; } internal SimpleSepaDirectDebitTransaction(ConfiguredTransaction configuredTransaction) @@ -30,11 +30,11 @@ public ConfiguredServiceTransaction Pay(SimpleSepaDirectDebitPayRequest request) return configuredServiceTransaction; } /// - /// The refund function creates a configured transaction with an SimpleSepaDirectDebitRefundRequest, + /// The refund function creates a configured transaction with an SimpleSepaDirectDebitRefundRequest, /// that is ready to be executed. - /// - /// An SimpleSepaDirectDebitRefundRequest - /// + /// + /// An SimpleSepaDirectDebitRefundRequest + /// public ConfiguredServiceTransaction Refund(SimpleSepaDirectDebitRefundRequest request) { var parameters = ServiceHelper.CreateServiceParameters(request); diff --git a/BuckarooSdk/Services/Sofort/SofortPayRecurrentResponse.cs b/BuckarooSdk/Services/Sofort/SofortPayRecurrentResponse.cs index 729fc26..3aaacd9 100644 --- a/BuckarooSdk/Services/Sofort/SofortPayRecurrentResponse.cs +++ b/BuckarooSdk/Services/Sofort/SofortPayRecurrentResponse.cs @@ -1,4 +1,4 @@ -namespace BuckarooSdk.Services.Sofort +namespace BuckarooSdk.Services.Sofort { public class SofortPayRecurrentResponse { diff --git a/BuckarooSdk/Services/TransactionServices.cs b/BuckarooSdk/Services/TransactionServices.cs index 602996a..a85cc51 100644 --- a/BuckarooSdk/Services/TransactionServices.cs +++ b/BuckarooSdk/Services/TransactionServices.cs @@ -3,24 +3,24 @@ namespace BuckarooSdk.Services { - // INTERNAL NOTE: This class purely exists because of the legacy json message that has to be created. within - // this message, the list of custom parameters is a value belonging to the tag: services + // INTERNAL NOTE: This class purely exists because of the legacy json message that has to be created. within + // this message, the list of custom parameters is a value belonging to the tag: services - /// - /// A class that holds a list of services. - /// - internal class TransactionServices + /// + /// A class that holds a list of services. + /// + internal class TransactionServices { - /// - /// A list of Services. - /// - [JsonProperty()] + /// + /// A list of Services. + /// + [JsonProperty()] internal List ServiceList { get; set; } - /// - /// primary constructor. A new list of services is instantiated. - /// - internal TransactionServices() + /// + /// primary constructor. A new list of services is instantiated. + /// + internal TransactionServices() { this.ServiceList = new List(); } diff --git a/BuckarooSdk/Services/Transfer/TransactionRequest/TransferPayRequest.cs b/BuckarooSdk/Services/Transfer/TransactionRequest/TransferPayRequest.cs index 16dc8a3..10477d2 100644 --- a/BuckarooSdk/Services/Transfer/TransactionRequest/TransferPayRequest.cs +++ b/BuckarooSdk/Services/Transfer/TransactionRequest/TransferPayRequest.cs @@ -4,37 +4,37 @@ namespace BuckarooSdk.Services.Transfer.TransactionRequest { public class TransferPayRequest { - /// - /// The first name of the customer. - /// + /// + /// The first name of the customer. + /// public string CustomerFirstName { get; set; } - /// - /// The last name of the customer. - /// + /// + /// The last name of the customer. + /// public string CustomerLastName { get; set; } - /// - /// The gender of the customer, used to properly address the customer in the mail. Possible values are: - /// - /// 0 : Unknown - /// 1 : Male - /// 2 : Female - /// 9 : Not applicable - /// - /// To be sure that always one of these values are used, the corresponding class with gender constants - /// can be used. - /// - public string CustomerGender { get; set; } - /// - /// The country of origin of the customer. - /// + /// + /// The gender of the customer, used to properly address the customer in the mail. Possible values are: + /// + /// 0 : Unknown + /// 1 : Male + /// 2 : Female + /// 9 : Not applicable + /// + /// To be sure that always one of these values are used, the corresponding class with gender constants + /// can be used. + /// + public string CustomerGender { get; set; } + /// + /// The country of origin of the customer. + /// public string CustomerCountry { get; set; } - /// - /// States wether an email will be sent to the customer. - /// + /// + /// States wether an email will be sent to the customer. + /// public bool SendMail { get; set; } - /// - /// The email address of the customer. Required if the boolean SendMail == true. - /// + /// + /// The email address of the customer. Required if the boolean SendMail == true. + /// public string CustomerEmail { get; set; } public DateTime DateDue { get; set; } } diff --git a/BuckarooSdk/Services/Transfer/TransactionRequest/TransferPayResponse.cs b/BuckarooSdk/Services/Transfer/TransactionRequest/TransferPayResponse.cs index 398c9fc..600f5bf 100644 --- a/BuckarooSdk/Services/Transfer/TransactionRequest/TransferPayResponse.cs +++ b/BuckarooSdk/Services/Transfer/TransactionRequest/TransferPayResponse.cs @@ -4,34 +4,34 @@ namespace BuckarooSdk.Services.Transfer.TransactionRequest { public class TransferPayResponse : ActionResponse { - public override ServiceNames ServiceNames => ServiceNames.Transfer; - /// - /// The name of the account where the transfer is originated from. - /// + public override ServiceNames ServiceNames => ServiceNames.Transfer; + /// + /// The name of the account where the transfer is originated from. + /// public string AccountHolderName { get; set; } - /// - /// The back account number of the account where the transfer is originated from. - /// + /// + /// The back account number of the account where the transfer is originated from. + /// public string BankAccount { get; set; } - /// - /// The IBAN of the customer that performed the transfer. - /// + /// + /// The IBAN of the customer that performed the transfer. + /// public string Iban { get; set; } - /// - /// The BIC code of the bank where the payment originated from. - /// + /// + /// The BIC code of the bank where the payment originated from. + /// public string Bic { get; set; } - /// - /// The country of origin of the customer. - /// + /// + /// The country of origin of the customer. + /// public string AccountHolderCountry { get; set; } - /// - /// The bankLeitszahl reference. - /// + /// + /// The bankLeitszahl reference. + /// public string Bankleitzahl { get; set; } - /// - /// The city where the accountholder lives in. - /// + /// + /// The city where the accountholder lives in. + /// public string AccountHolderCity { get; set; } } } diff --git a/BuckarooSdk/Services/Transfer/TransactionRequest/TransferRefundRequest.cs b/BuckarooSdk/Services/Transfer/TransactionRequest/TransferRefundRequest.cs index d8b7dd3..266b513 100644 --- a/BuckarooSdk/Services/Transfer/TransactionRequest/TransferRefundRequest.cs +++ b/BuckarooSdk/Services/Transfer/TransactionRequest/TransferRefundRequest.cs @@ -2,30 +2,30 @@ { public class TransferRefundRequest { - /// - /// The IBAN of the customer that performed the transfer. - /// + /// + /// The IBAN of the customer that performed the transfer. + /// public string CustomerIban { get; set; } - /// - /// The back account number of the account where the transfer is originated from. - /// + /// + /// The back account number of the account where the transfer is originated from. + /// public string CustomerAccountnumber { get; set; } - /// - /// The kontonummber of the customer. As the name suggests, it is only required when performing - /// a refund to a german bank. - /// + /// + /// The kontonummber of the customer. As the name suggests, it is only required when performing + /// a refund to a german bank. + /// public string CustomerKontoNummer { get; set; } - /// - /// The back account number of the account where the transfer is originated from. - /// - public string CustomerAccountname { get; set; } - /// - /// The bankLeitszahl reference. - /// + /// + /// The back account number of the account where the transfer is originated from. + /// + public string CustomerAccountname { get; set; } + /// + /// The bankLeitszahl reference. + /// public string CustomerBankleitzahl { get; set; } - /// - /// The BIC code of the bank where the payment originated from. - /// + /// + /// The BIC code of the bank where the payment originated from. + /// public string CustomerBic { get; set; } } } diff --git a/BuckarooSdk/Services/Transfer/TransactionRequest/TransferRefundResponse.cs b/BuckarooSdk/Services/Transfer/TransactionRequest/TransferRefundResponse.cs index db607ff..540bb8c 100644 --- a/BuckarooSdk/Services/Transfer/TransactionRequest/TransferRefundResponse.cs +++ b/BuckarooSdk/Services/Transfer/TransactionRequest/TransferRefundResponse.cs @@ -7,6 +7,6 @@ namespace BuckarooSdk.Services.Transfer.TransactionRequest /// public class TransferRefundResponse : ActionResponse { - public override ServiceNames ServiceNames => ServiceNames.Transfer; + public override ServiceNames ServiceNames => ServiceNames.Transfer; } } diff --git a/BuckarooSdk/Services/Transfer/TransactionRequest/TransferTransaction.cs b/BuckarooSdk/Services/Transfer/TransactionRequest/TransferTransaction.cs index 2dac128..bb6582e 100644 --- a/BuckarooSdk/Services/Transfer/TransactionRequest/TransferTransaction.cs +++ b/BuckarooSdk/Services/Transfer/TransactionRequest/TransferTransaction.cs @@ -5,9 +5,9 @@ namespace BuckarooSdk.Services.Transfer.TransactionRequest public class TransferTransaction { /// - /// The configured transaction - /// - private ConfiguredTransaction ConfiguredTransaction { get; set; } + /// The configured transaction + /// + private ConfiguredTransaction ConfiguredTransaction { get; set; } internal TransferTransaction(ConfiguredTransaction baseTransaction) { @@ -15,12 +15,12 @@ internal TransferTransaction(ConfiguredTransaction baseTransaction) } /// - /// The pay function creates a configured transaction with a TransferPayRequest, + /// The pay function creates a configured transaction with a TransferPayRequest, /// that is ready to be executed. - /// - /// A TransferPayRequest - /// - public ConfiguredServiceTransaction Pay(TransferPayRequest request) + /// + /// A TransferPayRequest + /// + public ConfiguredServiceTransaction Pay(TransferPayRequest request) { var parameters = ServiceHelper.CreateServiceParameters(request); var configuredServiceTransaction = new ConfiguredServiceTransaction(this.ConfiguredTransaction.BaseTransaction); diff --git a/BuckarooSdk/Transaction/Cancel/ConfiguredCancelTransaction.cs b/BuckarooSdk/Transaction/Cancel/ConfiguredCancelTransaction.cs index 82f2ddf..05861a8 100644 --- a/BuckarooSdk/Transaction/Cancel/ConfiguredCancelTransaction.cs +++ b/BuckarooSdk/Transaction/Cancel/ConfiguredCancelTransaction.cs @@ -4,16 +4,16 @@ namespace BuckarooSdk.Transaction.Cancel { - public class ConfiguredCancelTransaction - { - internal CancelTransaction CancelTransaction { get; set; } + public class ConfiguredCancelTransaction + { + internal CancelTransaction CancelTransaction { get; set; } - public ConfiguredCancelTransaction(CancelTransaction cancelTransaction) - { - this.CancelTransaction = cancelTransaction; - } + public ConfiguredCancelTransaction(CancelTransaction cancelTransaction) + { + this.CancelTransaction = cancelTransaction; + } - /// + /// /// Execute the request, a post to the Buckaroo Payment Engine is prepared and send. /// /// General TransactionResponse object is returned @@ -21,5 +21,5 @@ public RequestResponse Execute() { return Connection.Connector.SendRequest(this.CancelTransaction.Request.Request, this.CancelTransaction.CancelTransactionBase, HttpRequestType.Post).Result; } - } + } } diff --git a/BuckarooSdk/Transaction/ConfiguredServiceTransaction.cs b/BuckarooSdk/Transaction/ConfiguredServiceTransaction.cs index e1a4a48..02744fa 100644 --- a/BuckarooSdk/Transaction/ConfiguredServiceTransaction.cs +++ b/BuckarooSdk/Transaction/ConfiguredServiceTransaction.cs @@ -6,14 +6,14 @@ namespace BuckarooSdk.Transaction { - /// - /// The transaction that is configured for execution - /// + /// + /// The transaction that is configured for execution + /// public class ConfiguredServiceTransaction { internal TransactionRequest BaseTransaction { get;} - internal ConfiguredServiceTransaction(TransactionRequest transactionRequest) + internal ConfiguredServiceTransaction(TransactionRequest transactionRequest) { this.BaseTransaction = transactionRequest; } @@ -24,14 +24,14 @@ internal ConfiguredServiceTransaction(TransactionRequest transactionRequest) /// General TransactionResponse object is returned public RequestResponse Execute() { - return this.ExecuteAsync().GetAwaiter().GetResult(); + return this.ExecuteAsync().GetAwaiter().GetResult(); - //var response = Connection.Connector.SendRequest(this.BaseTransaction.AuthenticatedRequest.Request, this.BaseTransaction.TransactionBase, HttpRequestType.Post).GetAwaiter().GetResult(); + //var response = Connection.Connector.SendRequest(this.BaseTransaction.AuthenticatedRequest.Request, this.BaseTransaction.TransactionBase, HttpRequestType.Post).GetAwaiter().GetResult(); - // relocate logger from request to response - //response.BuckarooSdkLogger = this.BaseTransaction.AuthenticatedRequest.Request.BuckarooSdkLogger; + // relocate logger from request to response + //response.BuckarooSdkLogger = this.BaseTransaction.AuthenticatedRequest.Request.BuckarooSdkLogger; - //return response; + //return response; } /// @@ -41,7 +41,7 @@ public RequestResponse Execute() public async Task ExecuteAsync() { var response = await Connection.Connector.SendRequest(this.BaseTransaction.AuthenticatedRequest.Request, this.BaseTransaction.TransactionBase, HttpRequestType.Post) - .ConfigureAwait(false); + .ConfigureAwait(false); // relocate logger from request to response response.BuckarooSdkLogger = this.BaseTransaction.AuthenticatedRequest.Request.BuckarooSdkLogger; @@ -63,4 +63,4 @@ public ILogger GetLogger() return this.BaseTransaction.AuthenticatedRequest.Request.BuckarooSdkLogger; } } -} \ No newline at end of file +} diff --git a/BuckarooSdk/Transaction/ConfiguredTransaction.cs b/BuckarooSdk/Transaction/ConfiguredTransaction.cs index f5d283b..41fef8f 100644 --- a/BuckarooSdk/Transaction/ConfiguredTransaction.cs +++ b/BuckarooSdk/Transaction/ConfiguredTransaction.cs @@ -1,4 +1,4 @@ -using BuckarooSdk.Services.Afterpay; +using BuckarooSdk.Services.Afterpay; using BuckarooSdk.Services.BuckarooVoucher; using BuckarooSdk.Services.BuckarooWallet; using BuckarooSdk.Services.Capayable; @@ -32,353 +32,353 @@ namespace BuckarooSdk.Transaction { - /// - /// The configuredTransaction is a transaction where the basic fields are set. - /// - public class ConfiguredTransaction - { - internal TransactionRequest BaseTransaction { get; private set; } - - /// - /// ConfiguredTransaction primary constructor. - /// - /// - public ConfiguredTransaction(TransactionRequest transaction) - { - this.BaseTransaction = transaction; - } - - #region CreditCards - /// - /// The instanciation of the specific Dankort Service transaction. - /// - /// An Dankort - public CreditCardTransaction Dankort() - { - return new CreditCardTransaction(this, Constants.Services.ServiceNames.Dankort); - } - - /// - /// The instanciation of the specific Visa Service transaction. - /// - /// A Visa - public CreditCardTransaction Visa() - { - return new CreditCardTransaction(this, Constants.Services.ServiceNames.Visa); - } - - /// - /// The instanciation of the specific MasterCard Service transaction. - /// - /// A MasterCard - public CreditCardTransaction MasterCard() - { - return new CreditCardTransaction(this, Constants.Services.ServiceNames.MasterCard); - } - - /// - /// The instanciation of the specific CarteBleueVisa Service transaction. - /// - /// A CarteBleueVisa - public CreditCardTransaction CarteBleueVisa() - { - return new CreditCardTransaction(this, Constants.Services.ServiceNames.CarteBleueVisa); - } - - - /// - /// The instanciation of the specific VisaElectron Service transaction. - /// - /// A VisaElectron - public CreditCardTransaction VisaElectron() - { - return new CreditCardTransaction(this, Constants.Services.ServiceNames.VisaElectron); - } - - /// - /// The instanciation of the specific VPay Service transaction. - /// - /// A VPay - public CreditCardTransaction VPay() - { - return new CreditCardTransaction(this, Constants.Services.ServiceNames.VPay); - } - - /// - /// The instanciation of the specific Maestro Service transaction. - /// - /// A Maestro - public CreditCardTransaction Maestro() - { - return new CreditCardTransaction(this, Constants.Services.ServiceNames.Maestro); - } - - /// - /// The instanciation of the specific American Express Service transaction. - /// - /// An AmericanExpress - public AmericanExpressTransaction AmericanExpress() - { - return new AmericanExpressTransaction(this); - } - - /// - /// The instanciation of the specific Nexi Service transaction. - /// - /// A Nexi - public CreditCardTransaction Nexi() - { - return new CreditCardTransaction(this, Constants.Services.ServiceNames.Nexi); - } - - /// - /// The instanciation of the specific Carte Bancaire Service transaction. - /// - /// A CarteBancaire - public CreditCardTransaction CarteBancaire() - { - return new CreditCardTransaction(this, Constants.Services.ServiceNames.CarteBancaire); - } - - /// - /// The instanciation of the specific Bancontact Service transaction. - /// - /// A Bancontact - public BancontactTransaction Bancontact() - { - return new BancontactTransaction(this); - } - - #endregion - - #region iDeal - /// - /// The instanciation of the specific Ideal Service transaction. - /// - /// An ideal - public IdealTransaction Ideal() - { - return new IdealTransaction(this); - } - - /// - /// The instanciation of the specific Ideal Service transaction. - /// - /// An ideal - public IdealProcessingTransaction IdealProcessing() - { - return new IdealProcessingTransaction(this); - } - - #endregion - - /// An INGHomePay - public INGHomePayRequestObject INGHomePay() - { - return new INGHomePayRequestObject(this); - } - - /// - /// The instanciation of the specific Afterpay Service transaction. - /// - public AfterpayRequestObject Afterpay() - { - return new AfterpayRequestObject(this); - } - - #region customgiftcard - /// - /// The instantiation of the specific CustomGiftcard service transaction. - /// - public CustomGiftcardRequestObject CustomGiftcard() - { - return new CustomGiftcardRequestObject(this, Constants.Services.ServiceNames.CustomGiftcard); - } - - /// The instantiation of the specific CustomGiftcard2 service transaction. - /// - public CustomGiftcardRequestObject CustomGiftcard2() - { - return new CustomGiftcardRequestObject(this, Constants.Services.ServiceNames.CustomGiftcard2); - } - - /// The instantiation of the specific CustomGiftcard3 service transaction. - /// - public CustomGiftcardRequestObject CustomGiftcard3() - { - return new CustomGiftcardRequestObject(this, Constants.Services.ServiceNames.CustomGiftcard3); - } - - #endregion - /// The instantiation of the specific Ippies service transaction. - public IppiesRequestObject Ippies() - { - return new IppiesRequestObject(this); - } - - - /// - /// The instantiation of the specific BuckarooWallet service transaction. - /// - public BuckarooWalletRequestObject BuckarooWallet() - { - return new BuckarooWalletRequestObject(this); - } + /// + /// The configuredTransaction is a transaction where the basic fields are set. + /// + public class ConfiguredTransaction + { + internal TransactionRequest BaseTransaction { get; private set; } + + /// + /// ConfiguredTransaction primary constructor. + /// + /// + public ConfiguredTransaction(TransactionRequest transaction) + { + this.BaseTransaction = transaction; + } + + #region CreditCards + /// + /// The instanciation of the specific Dankort Service transaction. + /// + /// An Dankort + public CreditCardTransaction Dankort() + { + return new CreditCardTransaction(this, Constants.Services.ServiceNames.Dankort); + } + + /// + /// The instanciation of the specific Visa Service transaction. + /// + /// A Visa + public CreditCardTransaction Visa() + { + return new CreditCardTransaction(this, Constants.Services.ServiceNames.Visa); + } + + /// + /// The instanciation of the specific MasterCard Service transaction. + /// + /// A MasterCard + public CreditCardTransaction MasterCard() + { + return new CreditCardTransaction(this, Constants.Services.ServiceNames.MasterCard); + } + + /// + /// The instanciation of the specific CarteBleueVisa Service transaction. + /// + /// A CarteBleueVisa + public CreditCardTransaction CarteBleueVisa() + { + return new CreditCardTransaction(this, Constants.Services.ServiceNames.CarteBleueVisa); + } + + + /// + /// The instanciation of the specific VisaElectron Service transaction. + /// + /// A VisaElectron + public CreditCardTransaction VisaElectron() + { + return new CreditCardTransaction(this, Constants.Services.ServiceNames.VisaElectron); + } + + /// + /// The instanciation of the specific VPay Service transaction. + /// + /// A VPay + public CreditCardTransaction VPay() + { + return new CreditCardTransaction(this, Constants.Services.ServiceNames.VPay); + } + + /// + /// The instanciation of the specific Maestro Service transaction. + /// + /// A Maestro + public CreditCardTransaction Maestro() + { + return new CreditCardTransaction(this, Constants.Services.ServiceNames.Maestro); + } + + /// + /// The instanciation of the specific American Express Service transaction. + /// + /// An AmericanExpress + public AmericanExpressTransaction AmericanExpress() + { + return new AmericanExpressTransaction(this); + } + + /// + /// The instanciation of the specific Nexi Service transaction. + /// + /// A Nexi + public CreditCardTransaction Nexi() + { + return new CreditCardTransaction(this, Constants.Services.ServiceNames.Nexi); + } + + /// + /// The instanciation of the specific Carte Bancaire Service transaction. + /// + /// A CarteBancaire + public CreditCardTransaction CarteBancaire() + { + return new CreditCardTransaction(this, Constants.Services.ServiceNames.CarteBancaire); + } + + /// + /// The instanciation of the specific Bancontact Service transaction. + /// + /// A Bancontact + public BancontactTransaction Bancontact() + { + return new BancontactTransaction(this); + } + + #endregion + + #region iDeal + /// + /// The instanciation of the specific Ideal Service transaction. + /// + /// An ideal + public IdealTransaction Ideal() + { + return new IdealTransaction(this); + } + + /// + /// The instanciation of the specific Ideal Service transaction. + /// + /// An ideal + public IdealProcessingTransaction IdealProcessing() + { + return new IdealProcessingTransaction(this); + } + + #endregion + + /// An INGHomePay + public INGHomePayRequestObject INGHomePay() + { + return new INGHomePayRequestObject(this); + } + + /// + /// The instanciation of the specific Afterpay Service transaction. + /// + public AfterpayRequestObject Afterpay() + { + return new AfterpayRequestObject(this); + } + + #region customgiftcard + /// + /// The instantiation of the specific CustomGiftcard service transaction. + /// + public CustomGiftcardRequestObject CustomGiftcard() + { + return new CustomGiftcardRequestObject(this, Constants.Services.ServiceNames.CustomGiftcard); + } + + /// The instantiation of the specific CustomGiftcard2 service transaction. + /// + public CustomGiftcardRequestObject CustomGiftcard2() + { + return new CustomGiftcardRequestObject(this, Constants.Services.ServiceNames.CustomGiftcard2); + } + + /// The instantiation of the specific CustomGiftcard3 service transaction. + /// + public CustomGiftcardRequestObject CustomGiftcard3() + { + return new CustomGiftcardRequestObject(this, Constants.Services.ServiceNames.CustomGiftcard3); + } + + #endregion + /// The instantiation of the specific Ippies service transaction. + public IppiesRequestObject Ippies() + { + return new IppiesRequestObject(this); + } + + + /// + /// The instantiation of the specific BuckarooWallet service transaction. + /// + public BuckarooWalletRequestObject BuckarooWallet() + { + return new BuckarooWalletRequestObject(this); + } /// - /// The instantiation of the specific BuckarooVoucher service transaction. - /// - public BuckarooVoucherRequestObject BuckarooVoucher() - { - return new BuckarooVoucherRequestObject(this); - } + /// The instantiation of the specific BuckarooVoucher service transaction. + /// + public BuckarooVoucherRequestObject BuckarooVoucher() + { + return new BuckarooVoucherRequestObject(this); + } - /// - /// The instantiation of the specific Notification service transaction. - /// - public NotificationRequestObject Notification() - { - return new NotificationRequestObject(this); - } - - /// - /// The instantiation of the specific OnlineGiro service transaction. - /// - public CapayableRequestObject Capayable() - { - return new CapayableRequestObject(this); - } - - /// - /// The instantiation of the specific OnlineGiro service transaction. - /// - public OnlineGiroRequestObject OnlineGiro() - { - return new OnlineGiroRequestObject(this); - } - - /// - /// The instantiation of the specific OnlineGiroLite service transaction. - /// - public OnlineGiroLiteRequestObject OnlineGiroLite() - { - return new OnlineGiroLiteRequestObject(this); - } - - /// - /// The instantiation of the specific Paypermail service transaction. - /// - public PayPerEmailTransaction PayPerEmail() - { - return new PayPerEmailTransaction(this); - } - - /// - /// The instanciation of the specific Transfer Service transaction. - /// - public TransferTransaction Transfer() - { - return new TransferTransaction(this); - } - - /// - /// The instanciation of the specific PayPal Service transaction. - /// - public PayPalTransaction PayPal() - { - return new PayPalTransaction(this); - } - - /// - /// The instanciation of the specific EMandate Service transaction. - /// - public EMandateRequestObject EMandate() - { - return new EMandateRequestObject(this); - } - - /// - /// The instanciation of the specific Simple SEPA Direct debit Service transaction. - /// - public SimpleSepaDirectDebitTransaction SimpleSepaDirectDebit() - { - return new SimpleSepaDirectDebitTransaction(this); - } - - public PayconiqTransaction Payconiq() - { - return new PayconiqTransaction(this); - } - - public P24Transaction P24() - { - return new P24Transaction(this); - } - - public KlarnaRequestObject Klarna() - { - return new KlarnaRequestObject(this); - } - - public KbcPaymentButtonRequestObject KbcPaymentButton() - { - return new KbcPaymentButtonRequestObject(this); - } - - public EPSRequestObject EPS() - { - return new EPSRequestObject(this); - } - - /// - /// The instanciation of the specific PaysafeCard Service transaction. - /// - /// An PaysafeCard - public PaysafeCardRequestObject PaysafeCard() - { - return new PaysafeCardRequestObject(this); - } - - /// - /// The instanciation of the specific Sofort Service transaction. - /// - /// An Sofort - public SofortTransaction Sofort() - { - return new SofortTransaction(this); - } - - /// - /// The instanciation of the specific Sofort Service transaction. - /// - /// A Giropay transaction - public GiropayTransaction Giropay() - { - return new GiropayTransaction(this); - } - - public Services.KlarnaKP.KlarnaRequestObject KlarnaKP() - { - return new Services.KlarnaKP.KlarnaRequestObject(this); - } - - public HuisTuinTransaction HuisEnTuinGiftcard() - { - return new HuisTuinTransaction(this); - } + /// + /// The instantiation of the specific Notification service transaction. + /// + public NotificationRequestObject Notification() + { + return new NotificationRequestObject(this); + } + + /// + /// The instantiation of the specific OnlineGiro service transaction. + /// + public CapayableRequestObject Capayable() + { + return new CapayableRequestObject(this); + } + + /// + /// The instantiation of the specific OnlineGiro service transaction. + /// + public OnlineGiroRequestObject OnlineGiro() + { + return new OnlineGiroRequestObject(this); + } + + /// + /// The instantiation of the specific OnlineGiroLite service transaction. + /// + public OnlineGiroLiteRequestObject OnlineGiroLite() + { + return new OnlineGiroLiteRequestObject(this); + } + + /// + /// The instantiation of the specific Paypermail service transaction. + /// + public PayPerEmailTransaction PayPerEmail() + { + return new PayPerEmailTransaction(this); + } + + /// + /// The instanciation of the specific Transfer Service transaction. + /// + public TransferTransaction Transfer() + { + return new TransferTransaction(this); + } + + /// + /// The instanciation of the specific PayPal Service transaction. + /// + public PayPalTransaction PayPal() + { + return new PayPalTransaction(this); + } + + /// + /// The instanciation of the specific EMandate Service transaction. + /// + public EMandateRequestObject EMandate() + { + return new EMandateRequestObject(this); + } + + /// + /// The instanciation of the specific Simple SEPA Direct debit Service transaction. + /// + public SimpleSepaDirectDebitTransaction SimpleSepaDirectDebit() + { + return new SimpleSepaDirectDebitTransaction(this); + } + + public PayconiqTransaction Payconiq() + { + return new PayconiqTransaction(this); + } + + public P24Transaction P24() + { + return new P24Transaction(this); + } + + public KlarnaRequestObject Klarna() + { + return new KlarnaRequestObject(this); + } + + public KbcPaymentButtonRequestObject KbcPaymentButton() + { + return new KbcPaymentButtonRequestObject(this); + } + + public EPSRequestObject EPS() + { + return new EPSRequestObject(this); + } + + /// + /// The instanciation of the specific PaysafeCard Service transaction. + /// + /// An PaysafeCard + public PaysafeCardRequestObject PaysafeCard() + { + return new PaysafeCardRequestObject(this); + } + + /// + /// The instanciation of the specific Sofort Service transaction. + /// + /// An Sofort + public SofortTransaction Sofort() + { + return new SofortTransaction(this); + } + + /// + /// The instanciation of the specific Sofort Service transaction. + /// + /// A Giropay transaction + public GiropayTransaction Giropay() + { + return new GiropayTransaction(this); + } + + public Services.KlarnaKP.KlarnaRequestObject KlarnaKP() + { + return new Services.KlarnaKP.KlarnaRequestObject(this); + } + + public HuisTuinTransaction HuisEnTuinGiftcard() + { + return new HuisTuinTransaction(this); + } public VVVGiftcardTransaction VVVGiftcard() { return new VVVGiftcardTransaction(this); } - /// - /// The instantiation of a general transaction without a service. - /// - /// A general transaction without any service selected - public GeneralTransaction NoServiceSelected() - { - return new GeneralTransaction(this); - } - } + /// + /// The instantiation of a general transaction without a service. + /// + /// A general transaction without any service selected + public GeneralTransaction NoServiceSelected() + { + return new GeneralTransaction(this); + } + } } diff --git a/BuckarooSdk/Transaction/InvoiceInfo/TransactionInvoiceInfo.cs b/BuckarooSdk/Transaction/InvoiceInfo/TransactionInvoiceInfo.cs index 1c68966..3cca208 100644 --- a/BuckarooSdk/Transaction/InvoiceInfo/TransactionInvoiceInfo.cs +++ b/BuckarooSdk/Transaction/InvoiceInfo/TransactionInvoiceInfo.cs @@ -3,32 +3,32 @@ namespace BuckarooSdk.Transaction.InvoiceInfo { - public class TransactionInvoiceInfo - { - internal AuthenticatedRequest Request { get; set; } - internal TransactionInvoiceInfoBase TransactionInvoiceInfoBase { get; set; } - public TransactionInvoiceInfo(AuthenticatedRequest request) - { - this.Request = request; - } + public class TransactionInvoiceInfo + { + internal AuthenticatedRequest Request { get; set; } + internal TransactionInvoiceInfoBase TransactionInvoiceInfoBase { get; set; } + public TransactionInvoiceInfo(AuthenticatedRequest request) + { + this.Request = request; + } - public ConfiguredTransactionInvoiceInfo SpecificInvoiceInfo(string transactionKey) - { - this.Request.Request.Endpoint += $"{Constants.Settings.GatewaySettings.TransactionRequestEndPoint}" + - $"{Constants.Settings.GatewaySettings.InvoiceInfoEndPoint}" + - $"{transactionKey}"; + public ConfiguredTransactionInvoiceInfo SpecificInvoiceInfo(string transactionKey) + { + this.Request.Request.Endpoint += $"{Constants.Settings.GatewaySettings.TransactionRequestEndPoint}" + + $"{Constants.Settings.GatewaySettings.InvoiceInfoEndPoint}" + + $"{transactionKey}"; - return new ConfiguredTransactionInvoiceInfo(this); - } + return new ConfiguredTransactionInvoiceInfo(this); + } - public ConfiguredTransactionInvoiceInfo MultipleInvoicesInfo(TransactionInvoiceInfoBase transactionInvoiceInfoBase) - { - this.Request.Request.Endpoint += $"{Constants.Settings.GatewaySettings.TransactionRequestEndPoint}" + - $"{Constants.Settings.GatewaySettings.InvoiceInfosEndPoint}"; + public ConfiguredTransactionInvoiceInfo MultipleInvoicesInfo(TransactionInvoiceInfoBase transactionInvoiceInfoBase) + { + this.Request.Request.Endpoint += $"{Constants.Settings.GatewaySettings.TransactionRequestEndPoint}" + + $"{Constants.Settings.GatewaySettings.InvoiceInfosEndPoint}"; this.TransactionInvoiceInfoBase = transactionInvoiceInfoBase; - return new ConfiguredTransactionInvoiceInfo(this); - } + return new ConfiguredTransactionInvoiceInfo(this); + } - } + } } diff --git a/BuckarooSdk/Transaction/TransactionRequest.cs b/BuckarooSdk/Transaction/TransactionRequest.cs index 13cb9b9..9021081 100644 --- a/BuckarooSdk/Transaction/TransactionRequest.cs +++ b/BuckarooSdk/Transaction/TransactionRequest.cs @@ -5,34 +5,34 @@ namespace BuckarooSdk.Transaction { - /// - /// The actual transaction, that can only be obtained by defining a transaction request. - /// + /// + /// The actual transaction, that can only be obtained by defining a transaction request. + /// public class TransactionRequest - { + { internal AuthenticatedRequest AuthenticatedRequest { get; set; } - /// - /// The base transaction info - /// + /// + /// The base transaction info + /// internal TransactionBase TransactionBase { get; private set; } - /// - /// Setter for the basic fields of the transaction. - /// - /// - /// A configured transaction + /// + /// Setter for the basic fields of the transaction. + /// + /// + /// A configured transaction public ConfiguredTransaction SetBasicFields(TransactionBase basicFields) { this.TransactionBase = basicFields; return new ConfiguredTransaction(this); } - /// - /// Primary constructor - /// - /// - internal TransactionRequest(AuthenticatedRequest authenticatedRequest) + /// + /// Primary constructor + /// + /// + internal TransactionRequest(AuthenticatedRequest authenticatedRequest) { authenticatedRequest.Request.Endpoint = Constants.Settings.GatewaySettings.TransactionRequestEndPoint; this.AuthenticatedRequest = authenticatedRequest; @@ -52,18 +52,18 @@ internal void AddService(string serviceName, List parameters, this.TransactionBase.Services.ServiceList.Add(service); } - internal void AddAdditionalService(string serviceName, List parameters, string action, string version = "1") - { - var service = new Service() - { - Name = serviceName, - Action = action, - Version = version, - Parameters = parameters - }; + internal void AddAdditionalService(string serviceName, List parameters, string action, string version = "1") + { + var service = new Service() + { + Name = serviceName, + Action = action, + Version = version, + Parameters = parameters + }; - this.TransactionBase.Services.ServiceList.Add(service); - } - #endregion - } + this.TransactionBase.Services.ServiceList.Add(service); + } + #endregion + } } From 56a8df4d162b44d077dbfb45fd9d4d77d9551e2e Mon Sep 17 00:00:00 2001 From: Tim van den Hof Date: Thu, 22 Jul 2021 21:47:51 +0200 Subject: [PATCH 06/37] Update missing and invalid XMLDoc on iDEAL service. --- BuckarooSdk/Data/ConfiguredDataRequest.cs | 13 ++- BuckarooSdk/Services/ActionPush.cs | 88 ++++++++++--------- .../Services/Ideal/Constants/Issuers.cs | 9 ++ .../Ideal/Constants/OutputParameters.cs | 20 +++++ .../Ideal/DataRequest/IdealDataRequest.cs | 20 +++-- .../Services/Ideal/Push/IdealPayPush.cs | 70 ++++++++------- .../Ideal/Push/IdealPayRemainderPush.cs | 42 ++++++--- .../Services/Ideal/Push/IdealRefundPush.cs | 14 +-- .../IdealPayRemainderResponse.cs | 4 + .../TransactionRequest/IdealPayResponse.cs | 35 ++++---- .../TransactionRequest/IdealRefundResponse.cs | 41 +++++---- .../TransactionRequest/IdealTransaction.cs | 6 +- .../IdealProcessing/Constants/Issuers.cs | 9 ++ 13 files changed, 226 insertions(+), 145 deletions(-) diff --git a/BuckarooSdk/Data/ConfiguredDataRequest.cs b/BuckarooSdk/Data/ConfiguredDataRequest.cs index 2e2a9d1..6495efb 100644 --- a/BuckarooSdk/Data/ConfiguredDataRequest.cs +++ b/BuckarooSdk/Data/ConfiguredDataRequest.cs @@ -1,9 +1,7 @@ - -using BuckarooSdk.Services.CreditManagement.DataRequest; -using BuckarooSdk.Services.CustomGiftcard; +using BuckarooSdk.Services.BuckarooVoucher; using BuckarooSdk.Services.BuckarooWallet; -using BuckarooSdk.Services.BuckarooVoucher; using BuckarooSdk.Services.CreditManagement.DataRequest; +using BuckarooSdk.Services.CustomGiftcard; using BuckarooSdk.Services.EMandate; using BuckarooSdk.Services.Ideal.DataRequest; using BuckarooSdk.Services.IdealQr.DataRequest; @@ -25,21 +23,27 @@ public ConfiguredDataRequest(Data data) #region "Services" + /// /// The instantiation of the specific CustomGiftcard service transaction. + /// /// public CustomGiftcardRequestObject CustomGiftcard() { return new CustomGiftcardRequestObject(this, Constants.Services.ServiceNames.CustomGiftcard); } + /// /// The instantiation of the specific CustomGiftcard3 service transaction. + /// /// public CustomGiftcardRequestObject CustomGiftcard2() { return new CustomGiftcardRequestObject(this, Constants.Services.ServiceNames.CustomGiftcard2); } + /// /// The instantiation of the specific CustomGiftcard3 service transaction. + /// /// public CustomGiftcardRequestObject CustomGiftcard3() { @@ -60,6 +64,7 @@ public Services.Klarna.KlarnaRequestObject Klarna() { return new Services.Klarna.KlarnaRequestObject(this); } + public Services.KlarnaKP.KlarnaRequestObject KlarnaKP() { return new Services.KlarnaKP.KlarnaRequestObject(this); diff --git a/BuckarooSdk/Services/ActionPush.cs b/BuckarooSdk/Services/ActionPush.cs index d24c8ea..fba848a 100644 --- a/BuckarooSdk/Services/ActionPush.cs +++ b/BuckarooSdk/Services/ActionPush.cs @@ -5,45 +5,51 @@ namespace BuckarooSdk.Services { - public abstract class ActionPush - { - public abstract ServiceNames ServiceNames { get; } - - internal virtual void FillFromPush(DataTypes.Response.Service servicePush) - { - var ownType = this.GetType(); - var publicProperties = ownType.GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance); - - foreach (var property in publicProperties) - { - var propertyName = property.Name; - - // TODO: Make dictionary/lookup? - var parameter = this.GetParameter(servicePush, propertyName); - - if (parameter == null) - { - continue; - } - - var convertedValue = this.ConvertValue(parameter.Value, property.PropertyType); - property.SetValue(this, convertedValue); - } - } - - protected ResponseParameter GetParameter(DataTypes.Response.Service serviceResponse, string parameterName) - { - return serviceResponse.Parameters.FirstOrDefault(param => param.Name.Equals(parameterName, StringComparison.OrdinalIgnoreCase)); - } - - protected T ConvertValue(string value) - { - return (T)this.ConvertValue(value, typeof(T)); - } - - protected object ConvertValue(string value, Type toType) - { - return Convert.ChangeType(value, toType); - } - } + /// + /// Action push. + /// + public abstract class ActionPush + { + /// + /// Service names. + /// + public abstract ServiceNames ServiceNames { get; } + + internal virtual void FillFromPush(DataTypes.Response.Service servicePush) + { + var ownType = this.GetType(); + var publicProperties = ownType.GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance); + + foreach (var property in publicProperties) + { + var propertyName = property.Name; + + // TODO: Make dictionary/lookup? + var parameter = this.GetParameter(servicePush, propertyName); + + if (parameter == null) + { + continue; + } + + var convertedValue = this.ConvertValue(parameter.Value, property.PropertyType); + property.SetValue(this, convertedValue); + } + } + + protected ResponseParameter GetParameter(DataTypes.Response.Service serviceResponse, string parameterName) + { + return serviceResponse.Parameters.FirstOrDefault(param => param.Name.Equals(parameterName, StringComparison.OrdinalIgnoreCase)); + } + + protected T ConvertValue(string value) + { + return (T)this.ConvertValue(value, typeof(T)); + } + + protected object ConvertValue(string value, Type toType) + { + return Convert.ChangeType(value, toType); + } + } } diff --git a/BuckarooSdk/Services/Ideal/Constants/Issuers.cs b/BuckarooSdk/Services/Ideal/Constants/Issuers.cs index ba61f22..21ae28f 100644 --- a/BuckarooSdk/Services/Ideal/Constants/Issuers.cs +++ b/BuckarooSdk/Services/Ideal/Constants/Issuers.cs @@ -9,38 +9,47 @@ public static class Issuers /// ABN AMRO bank /// public const string AbnAmro = "ABNANL2A"; + /// /// ASN bank /// public const string AsnBank = "ASNBNL21"; + /// /// ING bank /// public const string IngBank = "INGBNL2A"; + /// /// Knab bank /// public const string Knab = "KNABNL2H"; + /// /// Rabobank /// public const string RaboBank = "RABONL2U"; + /// /// Regiobank /// public const string RegioBank = "RBRBNL21"; + /// /// SNS bank /// public const string SnsBank = "SNSBNL2A"; + /// /// Triodos bank /// public const string TriodosBank = "TRIONL2U"; + /// /// Van Lanschot bank /// public const string VanLanschot = "FVLBNL22"; + /// /// Bunq bank /// diff --git a/BuckarooSdk/Services/Ideal/Constants/OutputParameters.cs b/BuckarooSdk/Services/Ideal/Constants/OutputParameters.cs index 594fd25..91ad04c 100644 --- a/BuckarooSdk/Services/Ideal/Constants/OutputParameters.cs +++ b/BuckarooSdk/Services/Ideal/Constants/OutputParameters.cs @@ -1,10 +1,30 @@ namespace BuckarooSdk.Services.Ideal.Constants { + /// + /// iDEAL output parameters. + /// public enum OutputParameters { + /// + /// The bank identifier (bic code) of the bank of the consumer. Please note: This field is optional. In some countries, + /// banks are not allowed to provide this information to third parties. + /// ConsumerBic, + + /// + /// The beneficiary of the bank account from which the payment was made. + /// ConsumerName, + + /// + /// The name of the issuer (bank) of the consumer. + /// ConsumerIssuer, + + /// + /// The international bank account number (iban code) of the bank of the consumer. Please note: This field is optional. + /// In some countries, banks are not allowed to provide this information to third parties. + /// ConsumerIban, } } diff --git a/BuckarooSdk/Services/Ideal/DataRequest/IdealDataRequest.cs b/BuckarooSdk/Services/Ideal/DataRequest/IdealDataRequest.cs index ca3d844..58745df 100644 --- a/BuckarooSdk/Services/Ideal/DataRequest/IdealDataRequest.cs +++ b/BuckarooSdk/Services/Ideal/DataRequest/IdealDataRequest.cs @@ -2,14 +2,16 @@ namespace BuckarooSdk.Services.Ideal.DataRequest { - public class IdealDataRequest - { - private ConfiguredDataRequest ConfiguredDataRequest { get; set; } + /// + /// iDEAL data request. + /// + public class IdealDataRequest + { + private ConfiguredDataRequest ConfiguredDataRequest { get; set; } - internal IdealDataRequest(ConfiguredDataRequest configuredDateRequest) - { - this.ConfiguredDataRequest = configuredDateRequest; - } - - } + internal IdealDataRequest(ConfiguredDataRequest configuredDateRequest) + { + ConfiguredDataRequest = configuredDateRequest; + } + } } diff --git a/BuckarooSdk/Services/Ideal/Push/IdealPayPush.cs b/BuckarooSdk/Services/Ideal/Push/IdealPayPush.cs index 3c50097..4cd84a8 100644 --- a/BuckarooSdk/Services/Ideal/Push/IdealPayPush.cs +++ b/BuckarooSdk/Services/Ideal/Push/IdealPayPush.cs @@ -2,43 +2,45 @@ namespace BuckarooSdk.Services.Ideal.Push { - /// - /// - /// - public class IdealPayPush : ActionPush - { - public override ServiceNames ServiceNames => ServiceNames.Ideal; + /// + /// iDEAL push action. + /// + public class IdealPayPush : ActionPush + { + /// + public override ServiceNames ServiceNames => ServiceNames.Ideal; - /// - /// This is the iDEAL transaction ID. - /// - public string Transactionid { get; set; } + /// + /// This is the iDEAL transaction ID. + /// + public string Transactionid { get; set; } - /// - /// The international bank account number (iban code) of the bank of the consumer. Please note: This field is optional. - /// In some countries, banks are not allowed to provide this information to third parties. - /// - public string ConsumerIban { get; set; } + /// + /// The international bank account number (iban code) of the bank of the consumer. Please note: This field is optional. + /// In some countries, banks are not allowed to provide this information to third parties. + /// + public string ConsumerIban { get; set; } - /// - /// The bank identifier (bic code) of the bank of the consumer. Please note: This field is optional. In some countries, - /// banks are not allowed to provide this information to third parties. - /// - public string ConsumerBic { get; set; } + /// + /// The bank identifier (bic code) of the bank of the consumer. Please note: This field is optional. In some countries, + /// banks are not allowed to provide this information to third parties. + /// + public string ConsumerBic { get; set; } - /// - /// The beneficiary of the bank account from which the payment was made. - /// - public string ConsumerName { get; set; } + /// + /// The beneficiary of the bank account from which the payment was made. + /// + public string ConsumerName { get; set; } - /// - /// The name of the issuer (bank) of the consumer. - /// - public string ConsumerIssuer { get; set; } - - internal override void FillFromPush(DataTypes.Response.Service serviceResponse) - { - base.FillFromPush(serviceResponse); - } - } + /// + /// The name of the issuer (bank) of the consumer. + /// + public string ConsumerIssuer { get; set; } + + /// + internal override void FillFromPush(DataTypes.Response.Service serviceResponse) + { + base.FillFromPush(serviceResponse); + } + } } diff --git a/BuckarooSdk/Services/Ideal/Push/IdealPayRemainderPush.cs b/BuckarooSdk/Services/Ideal/Push/IdealPayRemainderPush.cs index be165b8..b77cd19 100644 --- a/BuckarooSdk/Services/Ideal/Push/IdealPayRemainderPush.cs +++ b/BuckarooSdk/Services/Ideal/Push/IdealPayRemainderPush.cs @@ -2,20 +2,34 @@ namespace BuckarooSdk.Services.Ideal.Push { - /// - /// - /// - public class IdealPayRemainderPush : ActionPush - { + /// + /// iDEAL Pay remainder push action. + /// + public class IdealPayRemainderPush : ActionPush + { + /// + public override ServiceNames ServiceNames => ServiceNames.Ideal; - public override ServiceNames ServiceNames => ServiceNames.Ideal; + /// + /// The international bank account number (iban code) of the bank of the consumer. Please note: This field is optional. + /// In some countries, banks are not allowed to provide this information to third parties. + /// + public string ConsumerIban { get; set; } - /// - /// - /// - public string ConsumerIban { get; set; } - public string ConsumerBic { get; set; } - public string ConsumerName { get; set; } - public string ConsumerIssuer { get; set; } - } + /// + /// The bank identifier (bic code) of the bank of the consumer. Please note: This field is optional. In some countries, + /// banks are not allowed to provide this information to third parties. + /// + public string ConsumerBic { get; set; } + + /// + /// The beneficiary of the bank account from which the payment was made. + /// + public string ConsumerName { get; set; } + + /// + /// The name of the issuer (bank) of the consumer. + /// + public string ConsumerIssuer { get; set; } + } } diff --git a/BuckarooSdk/Services/Ideal/Push/IdealRefundPush.cs b/BuckarooSdk/Services/Ideal/Push/IdealRefundPush.cs index 2463d5a..e941058 100644 --- a/BuckarooSdk/Services/Ideal/Push/IdealRefundPush.cs +++ b/BuckarooSdk/Services/Ideal/Push/IdealRefundPush.cs @@ -2,8 +2,12 @@ namespace BuckarooSdk.Services.Ideal.Push { - public class IdealRefundPush : ActionPush - { - public override ServiceNames ServiceNames => ServiceNames.Ideal; - } -} \ No newline at end of file + /// + /// iDEAL refund push action. + /// + public class IdealRefundPush : ActionPush + { + /// + public override ServiceNames ServiceNames => ServiceNames.Ideal; + } +} diff --git a/BuckarooSdk/Services/Ideal/TransactionRequest/IdealPayRemainderResponse.cs b/BuckarooSdk/Services/Ideal/TransactionRequest/IdealPayRemainderResponse.cs index 22b55f5..fcc2fa0 100644 --- a/BuckarooSdk/Services/Ideal/TransactionRequest/IdealPayRemainderResponse.cs +++ b/BuckarooSdk/Services/Ideal/TransactionRequest/IdealPayRemainderResponse.cs @@ -2,8 +2,12 @@ namespace BuckarooSdk.Services.Ideal.TransactionRequest { + /// + /// iDEAL Pay remainder response. + /// public class IdealPayRemainderResponse : ActionResponse { + /// public override ServiceNames ServiceNames => ServiceNames.Ideal; /// diff --git a/BuckarooSdk/Services/Ideal/TransactionRequest/IdealPayResponse.cs b/BuckarooSdk/Services/Ideal/TransactionRequest/IdealPayResponse.cs index 825926e..b95361b 100644 --- a/BuckarooSdk/Services/Ideal/TransactionRequest/IdealPayResponse.cs +++ b/BuckarooSdk/Services/Ideal/TransactionRequest/IdealPayResponse.cs @@ -2,23 +2,24 @@ namespace BuckarooSdk.Services.Ideal.TransactionRequest { - /// - /// If the request has a valid structure and a valid signature, a transaction will be created in the Payment Engine and a response - /// will be returned. In this case, an additional action is required before the transaction can be completed. The customer needs to - /// be redirected to the payment environment through the returned redirectURL. - /// - public class IdealPayResponse : ActionResponse - { - public override ServiceNames ServiceNames => ServiceNames.Ideal; + /// + /// If the request has a valid structure and a valid signature, a transaction will be created in the Payment Engine and a response + /// will be returned. In this case, an additional action is required before the transaction can be completed. The customer needs to + /// be redirected to the payment environment through the returned redirectURL. + /// + public class IdealPayResponse : ActionResponse + { + /// + public override ServiceNames ServiceNames => ServiceNames.Ideal; - /// - /// This is the iDEAL transaction ID. - /// - public string TransactionId { get; set; } + /// + /// This is the iDEAL transaction ID. + /// + public string TransactionId { get; set; } - /// - /// The name of the issuer (bank) of the consumer. - /// - public string ConsumerIssuer { get; set; } - } + /// + /// The name of the issuer (bank) of the consumer. + /// + public string ConsumerIssuer { get; set; } + } } diff --git a/BuckarooSdk/Services/Ideal/TransactionRequest/IdealRefundResponse.cs b/BuckarooSdk/Services/Ideal/TransactionRequest/IdealRefundResponse.cs index a9bb59e..26f4697 100644 --- a/BuckarooSdk/Services/Ideal/TransactionRequest/IdealRefundResponse.cs +++ b/BuckarooSdk/Services/Ideal/TransactionRequest/IdealRefundResponse.cs @@ -2,26 +2,29 @@ namespace BuckarooSdk.Services.Ideal.TransactionRequest { + /// + /// iDEAL Refund response action. + /// + public class IdealRefundResponse : ActionResponse + { + /// + public override ServiceNames ServiceNames => ServiceNames.Ideal; - public class IdealRefundResponse : ActionResponse - { - public override ServiceNames ServiceNames => ServiceNames.Ideal; + /// + /// The international bank account number (iban code) of the bank of the consumer. Please note: This field is optional. In some countries, + /// banks are not allowed to provide this information to third parties. + /// + public string CustomerIban { get; set; } - /// - /// The international bank account number (iban code) of the bank of the consumer. Please note: This field is optional. In some countries, - /// banks are not allowed to provide this information to third parties. - /// - public string CustomerIban { get; set; } + /// + /// The bank identifier (bic code) of the bank of the consumer. Please note: This field is optional. In some countries, banks are not + /// allowed to provide this information to third parties. + /// + public string CustomerBic { get; set; } - /// - /// The bank identifier (bic code) of the bank of the consumer. Please note: This field is optional. In some countries, banks are not - /// allowed to provide this information to third parties. - /// - public string CustomerBic { get; set; } - - /// - /// The beneficiary of the bank account from which the payment was made. - /// - public string CustomerAccountName { get; set; } - } + /// + /// The beneficiary of the bank account from which the payment was made. + /// + public string CustomerAccountName { get; set; } + } } diff --git a/BuckarooSdk/Services/Ideal/TransactionRequest/IdealTransaction.cs b/BuckarooSdk/Services/Ideal/TransactionRequest/IdealTransaction.cs index a43cce4..c02162f 100644 --- a/BuckarooSdk/Services/Ideal/TransactionRequest/IdealTransaction.cs +++ b/BuckarooSdk/Services/Ideal/TransactionRequest/IdealTransaction.cs @@ -11,12 +11,12 @@ public class IdealTransaction /// The configured transaction /// private ConfiguredTransaction ConfiguredTransaction { get;} + internal IdealTransaction(ConfiguredTransaction configuredTransaction) { - this.ConfiguredTransaction = configuredTransaction; + ConfiguredTransaction = configuredTransaction; } - /// /// The pay function creates a configured transaction with an IdealPayRequest, /// that is ready to be executed. @@ -31,6 +31,7 @@ public ConfiguredServiceTransaction Pay(IdealPayRequest request) return configuredServiceTransaction; } + /// /// The refund function creates a configured transaction with an IdealRefundRequest, /// that is ready to be executed. @@ -45,6 +46,7 @@ public ConfiguredServiceTransaction Refund(IdealRefundRequest request) return configuredServiceTransaction; } + /// /// The pay remainder function creates a configured transaction with an IdealPayRemainderRequest, /// that is ready to be executed. diff --git a/BuckarooSdk/Services/IdealProcessing/Constants/Issuers.cs b/BuckarooSdk/Services/IdealProcessing/Constants/Issuers.cs index 7b8da9c..0f038ad 100644 --- a/BuckarooSdk/Services/IdealProcessing/Constants/Issuers.cs +++ b/BuckarooSdk/Services/IdealProcessing/Constants/Issuers.cs @@ -9,38 +9,47 @@ public static class Issuers /// ABN AMRO bank /// public const string AbnAmro = "ABNANL2A"; + /// /// ASN bank /// public const string AsnBank = "ASNBNL21"; + /// /// ING bank /// public const string IngBank = "INGBNL2A"; + /// /// Knab bank /// public const string Knab = "KNABNL2H"; + /// /// Rabobank /// public const string RaboBank = "RABONL2U"; + /// /// Regiobank /// public const string RegioBank = "RBRBNL21"; + /// /// SNS bank /// public const string SnsBank = "SNSBNL2A"; + /// /// Triodos bank /// public const string TriodosBank = "TRIONL2U"; + /// /// Van Lanschot bank /// public const string VanLanschot = "FVLBNL22"; + /// /// Bunq bank /// From df21896d3a7cb6c8442cc24ce8664307491b6e83 Mon Sep 17 00:00:00 2001 From: Tim van den Hof Date: Thu, 22 Jul 2021 21:49:09 +0200 Subject: [PATCH 07/37] Fix: The referenced component 'XPath2' could not be found. --- BuckarooSdk.Tests/BuckarooSdk.Tests.csproj | 4 ---- 1 file changed, 4 deletions(-) diff --git a/BuckarooSdk.Tests/BuckarooSdk.Tests.csproj b/BuckarooSdk.Tests/BuckarooSdk.Tests.csproj index bedf702..4ecb3cd 100644 --- a/BuckarooSdk.Tests/BuckarooSdk.Tests.csproj +++ b/BuckarooSdk.Tests/BuckarooSdk.Tests.csproj @@ -329,10 +329,6 @@ True - - ..\packages\WireMock.Net.1.0.7\lib\net461\WireMock.Net.dll - True - ..\packages\XPath2.1.0.6.1\lib\net40\XPath2.dll True From 9de20219a51705625e8d0d8ae2a57f9692981866 Mon Sep 17 00:00:00 2001 From: Tim van den Hof Date: Thu, 22 Jul 2021 21:49:53 +0200 Subject: [PATCH 08/37] Fix: The referenced component 'XPath2' could not be found. --- BuckarooSdk.Tests/BuckarooSdk.Tests.csproj | 4 ---- 1 file changed, 4 deletions(-) diff --git a/BuckarooSdk.Tests/BuckarooSdk.Tests.csproj b/BuckarooSdk.Tests/BuckarooSdk.Tests.csproj index 4ecb3cd..360abff 100644 --- a/BuckarooSdk.Tests/BuckarooSdk.Tests.csproj +++ b/BuckarooSdk.Tests/BuckarooSdk.Tests.csproj @@ -329,10 +329,6 @@ True - - ..\packages\XPath2.1.0.6.1\lib\net40\XPath2.dll - True - ..\packages\XPath2.Extensions.1.0.6.1\lib\net40\XPath2.Extensions.dll True From 3bbbaeae4b58626578a1b922031f8aba4e4e9bb7 Mon Sep 17 00:00:00 2001 From: Tim van den Hof Date: Thu, 22 Jul 2021 21:50:22 +0200 Subject: [PATCH 09/37] Fix: The referenced component 'XPath2.Extensions' could not be found. --- BuckarooSdk.Tests/BuckarooSdk.Tests.csproj | 4 ---- 1 file changed, 4 deletions(-) diff --git a/BuckarooSdk.Tests/BuckarooSdk.Tests.csproj b/BuckarooSdk.Tests/BuckarooSdk.Tests.csproj index 360abff..0a09031 100644 --- a/BuckarooSdk.Tests/BuckarooSdk.Tests.csproj +++ b/BuckarooSdk.Tests/BuckarooSdk.Tests.csproj @@ -329,10 +329,6 @@ True - - ..\packages\XPath2.Extensions.1.0.6.1\lib\net40\XPath2.Extensions.dll - True - From d69d82d30384c1b2b6bfd63388f86c70e07ea552 Mon Sep 17 00:00:00 2001 From: Tim van den Hof Date: Thu, 22 Jul 2021 21:51:21 +0200 Subject: [PATCH 10/37] Fix: The referenced component 'RestEase' could not be found. --- BuckarooSdk.Tests/BuckarooSdk.Tests.csproj | 4 ---- 1 file changed, 4 deletions(-) diff --git a/BuckarooSdk.Tests/BuckarooSdk.Tests.csproj b/BuckarooSdk.Tests/BuckarooSdk.Tests.csproj index 0a09031..f9fc5d3 100644 --- a/BuckarooSdk.Tests/BuckarooSdk.Tests.csproj +++ b/BuckarooSdk.Tests/BuckarooSdk.Tests.csproj @@ -273,10 +273,6 @@ ..\packages\RandomDataGenerator.Net.1.0.7\lib\net45\RandomDataGenerator.dll True - - ..\packages\RestEase.1.4.7\lib\net45\RestEase.dll - True - ..\packages\System.Collections.Immutable.1.5.0\lib\netstandard2.0\System.Collections.Immutable.dll From efab131bc194c558359a5600157885e2cf5087b9 Mon Sep 17 00:00:00 2001 From: Tim van den Hof Date: Thu, 22 Jul 2021 21:51:50 +0200 Subject: [PATCH 11/37] Fix: The referenced component 'MimeKitLite' could not be found. --- BuckarooSdk.Tests/BuckarooSdk.Tests.csproj | 4 ---- 1 file changed, 4 deletions(-) diff --git a/BuckarooSdk.Tests/BuckarooSdk.Tests.csproj b/BuckarooSdk.Tests/BuckarooSdk.Tests.csproj index f9fc5d3..19da91c 100644 --- a/BuckarooSdk.Tests/BuckarooSdk.Tests.csproj +++ b/BuckarooSdk.Tests/BuckarooSdk.Tests.csproj @@ -258,10 +258,6 @@ ..\packages\Microsoft.Net.Http.Headers.2.1.1\lib\netstandard2.0\Microsoft.Net.Http.Headers.dll True - - ..\packages\MimeKitLite.2.0.7\lib\net45\MimeKitLite.dll - True - ..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll True From f11c49fd3593078873b25e447a94f6e37d28d0db Mon Sep 17 00:00:00 2001 From: Tim van den Hof Date: Thu, 22 Jul 2021 21:52:19 +0200 Subject: [PATCH 12/37] Fix: The referenced component 'Handlebars' could not be found. --- BuckarooSdk.Tests/BuckarooSdk.Tests.csproj | 4 ---- 1 file changed, 4 deletions(-) diff --git a/BuckarooSdk.Tests/BuckarooSdk.Tests.csproj b/BuckarooSdk.Tests/BuckarooSdk.Tests.csproj index 19da91c..c419eef 100644 --- a/BuckarooSdk.Tests/BuckarooSdk.Tests.csproj +++ b/BuckarooSdk.Tests/BuckarooSdk.Tests.csproj @@ -66,10 +66,6 @@ ..\packages\Fare.2.1.2\lib\net35\Fare.dll True - - ..\packages\Handlebars.Net.1.9.5\lib\net452\Handlebars.dll - True - ..\packages\Microsoft.AspNetCore.2.1.2\lib\netstandard2.0\Microsoft.AspNetCore.dll True From 805f9e3f0022aebaf6b05e7918316d8c6e98566c Mon Sep 17 00:00:00 2001 From: Tim van den Hof Date: Thu, 22 Jul 2021 21:52:44 +0200 Subject: [PATCH 13/37] Fix: The referenced component 'System.Linq.Dynamic.Core' could not be found. --- BuckarooSdk.Tests/BuckarooSdk.Tests.csproj | 4 ---- 1 file changed, 4 deletions(-) diff --git a/BuckarooSdk.Tests/BuckarooSdk.Tests.csproj b/BuckarooSdk.Tests/BuckarooSdk.Tests.csproj index c419eef..360535e 100644 --- a/BuckarooSdk.Tests/BuckarooSdk.Tests.csproj +++ b/BuckarooSdk.Tests/BuckarooSdk.Tests.csproj @@ -283,10 +283,6 @@ ..\packages\System.IO.Pipelines.4.5.0\lib\netstandard2.0\System.IO.Pipelines.dll True - - ..\packages\System.Linq.Dynamic.Core.1.0.9\lib\net46\System.Linq.Dynamic.Core.dll - True - ..\packages\System.Memory.4.5.1\lib\netstandard2.0\System.Memory.dll True From 02f759384b35d02cb9698f60c2c9d10951bf9445 Mon Sep 17 00:00:00 2001 From: Tim van den Hof Date: Thu, 22 Jul 2021 21:53:09 +0200 Subject: [PATCH 14/37] Fix: The referenced component 'System.ComponentModel.Annotations' could not be found. --- BuckarooSdk.Tests/BuckarooSdk.Tests.csproj | 4 ---- 1 file changed, 4 deletions(-) diff --git a/BuckarooSdk.Tests/BuckarooSdk.Tests.csproj b/BuckarooSdk.Tests/BuckarooSdk.Tests.csproj index 360535e..46184ec 100644 --- a/BuckarooSdk.Tests/BuckarooSdk.Tests.csproj +++ b/BuckarooSdk.Tests/BuckarooSdk.Tests.csproj @@ -270,10 +270,6 @@ ..\packages\System.Collections.Immutable.1.5.0\lib\netstandard2.0\System.Collections.Immutable.dll True - - ..\packages\System.ComponentModel.Annotations.4.7.0\lib\net461\System.ComponentModel.Annotations.dll - True - ..\packages\System.Diagnostics.DiagnosticSource.4.5.0\lib\net46\System.Diagnostics.DiagnosticSource.dll From 30d4afa3eaf3cc4d012bc5bb6664ac8c1af87e05 Mon Sep 17 00:00:00 2001 From: Tim van den Hof Date: Thu, 22 Jul 2021 21:54:33 +0200 Subject: [PATCH 15/37] Fix: CS0168 The variable 'exception' is declared but never used --- BuckarooSdk/Connection/Connector.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BuckarooSdk/Connection/Connector.cs b/BuckarooSdk/Connection/Connector.cs index d34fe08..75e3f8e 100644 --- a/BuckarooSdk/Connection/Connector.cs +++ b/BuckarooSdk/Connection/Connector.cs @@ -109,7 +109,7 @@ public static async Task SendRequest(Request req return default(TResponse); } - catch (Exception exception) + catch (Exception) { return default(TResponse); } From 9688ea7994d2bd927a0674cbacca0c28f2eb139f Mon Sep 17 00:00:00 2001 From: Tim van den Hof Date: Thu, 22 Jul 2021 21:54:58 +0200 Subject: [PATCH 16/37] Fix: CS0219 The variable 'qwe' is assigned but its value is never used --- BuckarooSdk/Transaction/Status/ConfiguredTransactionStatus.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/BuckarooSdk/Transaction/Status/ConfiguredTransactionStatus.cs b/BuckarooSdk/Transaction/Status/ConfiguredTransactionStatus.cs index 00c7185..fc9c26b 100644 --- a/BuckarooSdk/Transaction/Status/ConfiguredTransactionStatus.cs +++ b/BuckarooSdk/Transaction/Status/ConfiguredTransactionStatus.cs @@ -15,7 +15,6 @@ public class ConfiguredTransactionStatus internal ConfiguredTransactionStatus(TransactionStatus transactionStatus) { this.TransactionStatus = transactionStatus; - const string qwe = ""; var list = new List(); var list2 = list.ToList(); From 50d8a1c691076797b86401ca3b9e2a5933899d4e Mon Sep 17 00:00:00 2001 From: Tim van den Hof Date: Thu, 22 Jul 2021 21:55:36 +0200 Subject: [PATCH 17/37] Fix: Using apeared previous --- .../AmericanExpress/AmericanExpressTests.cs | 7 +- .../Services/MasterCard/MasterCardTests.cs | 1069 ++++++++--------- 2 files changed, 534 insertions(+), 542 deletions(-) diff --git a/BuckarooSdk.Tests/Services/AmericanExpress/AmericanExpressTests.cs b/BuckarooSdk.Tests/Services/AmericanExpress/AmericanExpressTests.cs index c6cbd6c..5e5a3dc 100644 --- a/BuckarooSdk.Tests/Services/AmericanExpress/AmericanExpressTests.cs +++ b/BuckarooSdk.Tests/Services/AmericanExpress/AmericanExpressTests.cs @@ -1,19 +1,14 @@ using System; -using System.Diagnostics; using System.Globalization; using BuckarooSdk.DataTypes.RequestBases; -using BuckarooSdk.Services.CreditCards.AmericanExpress.Constants; -using BuckarooSdk.DataTypes.RequestBases; using BuckarooSdk.Logging; using BuckarooSdk.Services.CreditCards.AmericanExpress.Request; using BuckarooSdk.Tests.Constants; using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Globalization; namespace BuckarooSdk.Tests.Services.AmericanExpress { - [TestClass] + [TestClass] public class AmericanExpressTests { diff --git a/BuckarooSdk.Tests/Services/MasterCard/MasterCardTests.cs b/BuckarooSdk.Tests/Services/MasterCard/MasterCardTests.cs index c90ec97..87542f5 100644 --- a/BuckarooSdk.Tests/Services/MasterCard/MasterCardTests.cs +++ b/BuckarooSdk.Tests/Services/MasterCard/MasterCardTests.cs @@ -1,546 +1,543 @@ using System; -using BuckarooSdk.DataTypes.RequestBases; -using BuckarooSdk.Services.CreditCards.Request; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; using System.Globalization; using BuckarooSdk.DataTypes.RequestBases; -using BuckarooSdk.Services.CreditCards.MasterCard; using BuckarooSdk.Logging; using BuckarooSdk.Services.CreditCards.MasterCard.Request; +using BuckarooSdk.Services.CreditCards.Request; using BuckarooSdk.Tests.Constants; +using Microsoft.VisualStudio.TestTools.UnitTesting; namespace BuckarooSdk.Tests.Services.MasterCard { - [TestClass] - public class MasterCardTests - { - private SdkClient _buckarooClient; - private string TestName => nameof(MasterCardTests).ToUpper(); - - [TestInitialize] - public void Setup() - { - this._buckarooClient = new SdkClient(Constants.TestSettings.Logger); - } - - #region MasterCard - [TestMethod] - [Obsolete] - public void PayTest() - { - var request = this._buckarooClient.CreateRequest() - .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() - .SetBasicFields(new TransactionBase - { - Currency = "EUR", - AmountDebit = 0.02m, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - Description = $"{ TestName }_SDK_UNITTEST", - }) - .MasterCard() - .Pay(new MasterCardPayRequest() - { - //set properties - }); - - var response = request.Execute(); - } - - [TestMethod] - [Obsolete] - public void RefundTest() - { - var request = this._buckarooClient.CreateRequest() - .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() - .SetBasicFields(new TransactionBase - { - Currency = "EUR", - AmountCredit = 0.02m, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - OriginalTransactionKey = "59915ADC227149F4A3ACE9E0C8589D3C", - Description = $"{ TestName }_SDK_UNITTEST", - }) - .MasterCard() - .Refund(new MasterCardRefundRequest() - { - //set properties - }); - var response = request.Execute(); - } - - [TestMethod] - [Obsolete] - public void AuthorizeTest() - { - var request = this._buckarooClient.CreateRequest() - .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() - .SetBasicFields(new TransactionBase - { - Currency = "EUR", - AmountDebit = 0.02m, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - Description = $"{ TestName }_SDK_UNITTEST", - - }) - .MasterCard() - .Authorize(new MasterCardAuthorizeRequest() - { - //set properties - }); - - var response = request.Execute(); - } - - [TestMethod] - [Obsolete] - public void CaptureTest() - { - var request = this._buckarooClient.CreateRequest() - .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() - .SetBasicFields(new TransactionBase - { - Currency = "EUR", - AmountDebit = 0.02m, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .MasterCard() - .Capture(new MasterCardCaptureRequest() - { - //set properties - }); - - var response = request.Execute(); - } - - [TestMethod] - [Obsolete] - public void PayRecurrentTest() - { - var request = this._buckarooClient.CreateRequest() - .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() - .SetBasicFields(new TransactionBase - { - Currency = "EUR", - AmountDebit = 0.02m, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .MasterCard() - .PayRecurrent(new MasterCardPayRecurrentRequest() - { - //define properties - }); - var response = request.Execute(); - } - - [TestMethod] - [Obsolete] - public void PayRemainderTest() - { - var request = this._buckarooClient.CreateRequest() - .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() - .SetBasicFields(new TransactionBase - { - Currency = "EUR", - AmountDebit = 0.02m, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .MasterCard() - .PayRemainder(new MasterCardPayRemainderRequest() - { - //define properties - }); - - var response = request.Execute(); - } - - [TestMethod] - public void CancelAuthorizeTest() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - OriginalTransactionKey = "", - AmountCredit = 2, - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .MasterCard() // Choose the paymentmethod you want to use - .CancelAuthorize(new MasterCardCancelAuthorizeRequest // choose the action you want to use and provide the payment method specific info. - { - - }); - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - - [TestMethod] - public void PayEncryptedTest() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - AmountDebit = 2, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .MasterCard() // Choose the paymentmethod you want to use - .PayEncrypted(new MasterCardPayEncryptedRequest // choose the action you want to use and provide the payment method specific info. - { - EncryptedCardData = string.Empty, - - }); - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - - [TestMethod] - public void AuthorizeEncryptedTest() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - AmountDebit = 2, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .MasterCard() // Choose the paymentmethod you want to use - .AuthorizeEncrypted(new MasterCardAuthorizeEncryptedRequest // choose the action you want to use and provide the payment method specific info. - { - EncryptedCardData = string.Empty, - - }); - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - #endregion - - #region CreditCard - [TestMethod] - public void PayTestCreditCard() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - AmountDebit = 2, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .MasterCard() // Choose the paymentmethod you want to use - .Pay(new CreditCardPayRequest // choose the action you want to use and provide the payment method specific info. - { - CustomerCode = string.Empty, - }); - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - - [TestMethod] - public void RefundTestCreditCard() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - OriginalTransactionKey = "", - AmountCredit = 2, - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .MasterCard() // Choose the paymentmethod you want to use - .Refund(new CreditCardRefundRequest // choose the action you want to use and provide the payment method specific info. - { - - }); - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - - [TestMethod] - public void AuthorizeTestCreditCard() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - AmountDebit = 2, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .MasterCard() // Choose the paymentmethod you want to use - .Authorize(new CreditCardAuthorizeRequest // choose the action you want to use and provide the payment method specific info. - { - CustomerCode = string.Empty, - }); - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - - [TestMethod] - public void CaptureTestCreditCard() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - AmountDebit = 2, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - OriginalTransactionKey = "", - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .MasterCard() // Choose the paymentmethod you want to use - .Capture(new CreditCardCaptureRequest // choose the action you want to use and provide the payment method specific info. - { - - }); - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - - [TestMethod] - public void CancelAuthorizeTestCreditCard() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - OriginalTransactionKey = "", - AmountCredit = 2, - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .MasterCard() // Choose the paymentmethod you want to use - .CancelAuthorize(new CreditCardCancelAuthorizeRequest // choose the action you want to use and provide the payment method specific info. - { - - }); - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - - [TestMethod] - public void PayRecurrentTestCreditCard() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - AmountDebit = 2, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - OriginalTransactionKey = "", - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .MasterCard() // Choose the paymentmethod you want to use - .PayRecurrent(new CreditCardPayRecurrentRequest // choose the action you want to use and provide the payment method specific info. - { - - }); - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - - [TestMethod] - public void PayRemainderTestCreditCard() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - AmountDebit = 2, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - OriginalTransactionKey = "", - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .MasterCard() // Choose the paymentmethod you want to use - .PayRemainder(new CreditCardPayRemainderRequest // choose the action you want to use and provide the payment method specific info. - { - CustomerCode = string.Empty, - }); - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - - [TestMethod] - public void PayEncryptedTestCreditCard() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - AmountDebit = 2, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .MasterCard() // Choose the paymentmethod you want to use - .PayEncrypted(new CreditCardPayEncryptedRequest // choose the action you want to use and provide the payment method specific info. - { - EncryptedCardData = string.Empty, - }); - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - - [TestMethod] - public void AuthorizeEncryptedTestCreditCard() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - AmountDebit = 2, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .MasterCard() // Choose the paymentmethod you want to use - .AuthorizeEncrypted(new CreditCardAuthorizeEncryptedRequest // choose the action you want to use and provide the payment method specific info. - { - EncryptedCardData = string.Empty, - }); - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - #endregion - } + [TestClass] + public class MasterCardTests + { + private SdkClient _buckarooClient; + private string TestName => nameof(MasterCardTests).ToUpper(); + + [TestInitialize] + public void Setup() + { + this._buckarooClient = new SdkClient(Constants.TestSettings.Logger); + } + + #region MasterCard + [TestMethod] + [Obsolete] + public void PayTest() + { + var request = this._buckarooClient.CreateRequest() + .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() + .SetBasicFields(new TransactionBase + { + Currency = "EUR", + AmountDebit = 0.02m, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + Description = $"{ TestName }_SDK_UNITTEST", + }) + .MasterCard() + .Pay(new MasterCardPayRequest() + { + //set properties + }); + + var response = request.Execute(); + } + + [TestMethod] + [Obsolete] + public void RefundTest() + { + var request = this._buckarooClient.CreateRequest() + .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() + .SetBasicFields(new TransactionBase + { + Currency = "EUR", + AmountCredit = 0.02m, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + OriginalTransactionKey = "59915ADC227149F4A3ACE9E0C8589D3C", + Description = $"{ TestName }_SDK_UNITTEST", + }) + .MasterCard() + .Refund(new MasterCardRefundRequest() + { + //set properties + }); + var response = request.Execute(); + } + + [TestMethod] + [Obsolete] + public void AuthorizeTest() + { + var request = this._buckarooClient.CreateRequest() + .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() + .SetBasicFields(new TransactionBase + { + Currency = "EUR", + AmountDebit = 0.02m, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + Description = $"{ TestName }_SDK_UNITTEST", + + }) + .MasterCard() + .Authorize(new MasterCardAuthorizeRequest() + { + //set properties + }); + + var response = request.Execute(); + } + + [TestMethod] + [Obsolete] + public void CaptureTest() + { + var request = this._buckarooClient.CreateRequest() + .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() + .SetBasicFields(new TransactionBase + { + Currency = "EUR", + AmountDebit = 0.02m, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .MasterCard() + .Capture(new MasterCardCaptureRequest() + { + //set properties + }); + + var response = request.Execute(); + } + + [TestMethod] + [Obsolete] + public void PayRecurrentTest() + { + var request = this._buckarooClient.CreateRequest() + .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() + .SetBasicFields(new TransactionBase + { + Currency = "EUR", + AmountDebit = 0.02m, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .MasterCard() + .PayRecurrent(new MasterCardPayRecurrentRequest() + { + //define properties + }); + var response = request.Execute(); + } + + [TestMethod] + [Obsolete] + public void PayRemainderTest() + { + var request = this._buckarooClient.CreateRequest() + .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() + .SetBasicFields(new TransactionBase + { + Currency = "EUR", + AmountDebit = 0.02m, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .MasterCard() + .PayRemainder(new MasterCardPayRemainderRequest() + { + //define properties + }); + + var response = request.Execute(); + } + + [TestMethod] + public void CancelAuthorizeTest() + { + var request = + this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + OriginalTransactionKey = "", + AmountCredit = 2, + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .MasterCard() // Choose the paymentmethod you want to use + .CancelAuthorize(new MasterCardCancelAuthorizeRequest // choose the action you want to use and provide the payment method specific info. + { + + }); + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + + [TestMethod] + public void PayEncryptedTest() + { + var request = + this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + AmountDebit = 2, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .MasterCard() // Choose the paymentmethod you want to use + .PayEncrypted(new MasterCardPayEncryptedRequest // choose the action you want to use and provide the payment method specific info. + { + EncryptedCardData = string.Empty, + + }); + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + + [TestMethod] + public void AuthorizeEncryptedTest() + { + var request = + this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + AmountDebit = 2, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .MasterCard() // Choose the paymentmethod you want to use + .AuthorizeEncrypted(new MasterCardAuthorizeEncryptedRequest // choose the action you want to use and provide the payment method specific info. + { + EncryptedCardData = string.Empty, + + }); + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + #endregion + + #region CreditCard + [TestMethod] + public void PayTestCreditCard() + { + var request = + this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + AmountDebit = 2, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .MasterCard() // Choose the paymentmethod you want to use + .Pay(new CreditCardPayRequest // choose the action you want to use and provide the payment method specific info. + { + CustomerCode = string.Empty, + }); + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + + [TestMethod] + public void RefundTestCreditCard() + { + var request = + this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + OriginalTransactionKey = "", + AmountCredit = 2, + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .MasterCard() // Choose the paymentmethod you want to use + .Refund(new CreditCardRefundRequest // choose the action you want to use and provide the payment method specific info. + { + + }); + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + + [TestMethod] + public void AuthorizeTestCreditCard() + { + var request = + this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + AmountDebit = 2, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .MasterCard() // Choose the paymentmethod you want to use + .Authorize(new CreditCardAuthorizeRequest // choose the action you want to use and provide the payment method specific info. + { + CustomerCode = string.Empty, + }); + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + + [TestMethod] + public void CaptureTestCreditCard() + { + var request = + this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + AmountDebit = 2, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + OriginalTransactionKey = "", + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .MasterCard() // Choose the paymentmethod you want to use + .Capture(new CreditCardCaptureRequest // choose the action you want to use and provide the payment method specific info. + { + + }); + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + + [TestMethod] + public void CancelAuthorizeTestCreditCard() + { + var request = + this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + OriginalTransactionKey = "", + AmountCredit = 2, + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .MasterCard() // Choose the paymentmethod you want to use + .CancelAuthorize(new CreditCardCancelAuthorizeRequest // choose the action you want to use and provide the payment method specific info. + { + + }); + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + + [TestMethod] + public void PayRecurrentTestCreditCard() + { + var request = + this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + AmountDebit = 2, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + OriginalTransactionKey = "", + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .MasterCard() // Choose the paymentmethod you want to use + .PayRecurrent(new CreditCardPayRecurrentRequest // choose the action you want to use and provide the payment method specific info. + { + + }); + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + + [TestMethod] + public void PayRemainderTestCreditCard() + { + var request = + this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + AmountDebit = 2, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + OriginalTransactionKey = "", + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .MasterCard() // Choose the paymentmethod you want to use + .PayRemainder(new CreditCardPayRemainderRequest // choose the action you want to use and provide the payment method specific info. + { + CustomerCode = string.Empty, + }); + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + + [TestMethod] + public void PayEncryptedTestCreditCard() + { + var request = + this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + AmountDebit = 2, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .MasterCard() // Choose the paymentmethod you want to use + .PayEncrypted(new CreditCardPayEncryptedRequest // choose the action you want to use and provide the payment method specific info. + { + EncryptedCardData = string.Empty, + }); + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + + [TestMethod] + public void AuthorizeEncryptedTestCreditCard() + { + var request = + this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + AmountDebit = 2, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .MasterCard() // Choose the paymentmethod you want to use + .AuthorizeEncrypted(new CreditCardAuthorizeEncryptedRequest // choose the action you want to use and provide the payment method specific info. + { + EncryptedCardData = string.Empty, + }); + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + #endregion + } } From 85340422c5be93cefef766b0a5f1fd45346e16a6 Mon Sep 17 00:00:00 2001 From: Tim van den Hof Date: Thu, 22 Jul 2021 21:56:31 +0200 Subject: [PATCH 18/37] Fix: IDE0018 Variable declaration can be inlined --- BuckarooSdk/Connection/Connector.cs | 231 +++++++++--------- .../DataTypes/Response/RequiredAction.cs | 3 +- 2 files changed, 116 insertions(+), 118 deletions(-) diff --git a/BuckarooSdk/Connection/Connector.cs b/BuckarooSdk/Connection/Connector.cs index 75e3f8e..9012b08 100644 --- a/BuckarooSdk/Connection/Connector.cs +++ b/BuckarooSdk/Connection/Connector.cs @@ -14,120 +14,119 @@ namespace BuckarooSdk.Connection { - /// - /// Copyright 2016, Buckaroo B.V, Utrecht, The Netherlands. - /// Use of copies permitted under the of terms of the GNU General Public Licence. - /// - internal static class Connector - { - private static readonly string CheckoutUrl = "https://checkout.buckaroo.nl"; - private static readonly string TestCheckoutUrl = "https://testcheckout.buckaroo.nl"; - - static Connector() - { - // ensure urls are on the correct format - ValidateUrls(); - } - - public static async Task SendRequest(Request request, TRequest data, HttpRequestType requestType) - where TResponse : IRequestResponse - { - try - { - // prepare serializer settings - var settings = new JsonSerializerSettings - { - ContractResolver = new CamelCasePropertyNamesContractResolver(), - Formatting = Formatting.Indented - }; - - var requestJson = String.Empty; - try - { - requestJson = JsonConvert.SerializeObject(data, settings); - //LOGGING - request.BuckarooSdkLogger.AddProcessLogging(Constants.Logging.Messages.SerializedRequestJson(requestJson)); - request.BuckarooSdkLogger.HandleRawRequest(requestJson); - } - catch (JsonSerializationException exception) - { - request.BuckarooSdkLogger.AddErrorLogging(exception.ToString()); - } - - // live or test url - var apiBaseAddress = request.IsLive ? CheckoutUrl : TestCheckoutUrl; - - // use BuckarooDelegatingHandler for HMAC auth - var customDelegatingHandler = new BuckarooDelegatingHandler(request.WebsiteKey, request.ApiKey, - request.Channel.ToString(), request.Culture.Name); - var client = new HttpClient(customDelegatingHandler); - - //LOGGING - request.BuckarooSdkLogger.AddProcessLogging(Constants.Logging.Messages.RequestTypeAndAddress(requestType, - apiBaseAddress + request.Endpoint)); - - HttpResponseMessage response; - switch (requestType) - { - case HttpRequestType.Post: - response = - await - client.PostAsync(apiBaseAddress + request.Endpoint, - new StringContent(requestJson, Encoding.UTF8, "application/json")).ConfigureAwait(false); - break; - case HttpRequestType.Get: - response = await client.GetAsync(apiBaseAddress + request.Endpoint).ConfigureAwait(false); - break; - default: - request.BuckarooSdkLogger.AddErrorLogging(Constants.Logging.Messages.BadImplementation); - throw new Exception(Constants.Logging.Messages.BadImplementation); - } - - var responseJson = response.Content.ReadAsStringAsync().Result; - - // deserialize to response type - try - { - var deserializedResponse = JsonConvert.DeserializeObject(responseJson); - if (responseJson != null) - { - //Logging response - request.BuckarooSdkLogger.AddProcessLogging(Constants.Logging.Messages.RequestSuccessful(true, - responseJson)); - request.BuckarooSdkLogger.HandleRawResponse(responseJson); - } - - request.BuckarooSdkLogger.AddProcessLogging(Constants.Logging.Messages.ResponseDeserialized); - - return deserializedResponse; - } - catch (JsonSerializationException exception) - { - request.BuckarooSdkLogger.AddErrorLogging(Constants.Logging.Messages.FailedSerializationResponseJson(responseJson) + exception); - } - - return default(TResponse); - - } - catch (Exception) - { - return default(TResponse); - } - } - - - private static void ValidateUrls() - { - foreach (var url in new List() { CheckoutUrl, TestCheckoutUrl }) - { - Uri uriResult; - var isValidUrl = Uri.TryCreate(url, UriKind.Absolute, out uriResult) && (uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps); - - if (!isValidUrl) - { - throw new UriFormatException($"'{url}' is not a valid URI."); - } - } - } - } + /// + /// Copyright 2016, Buckaroo B.V, Utrecht, The Netherlands. + /// Use of copies permitted under the of terms of the GNU General Public Licence. + /// + internal static class Connector + { + private static readonly string CheckoutUrl = "https://checkout.buckaroo.nl"; + private static readonly string TestCheckoutUrl = "https://testcheckout.buckaroo.nl"; + + static Connector() + { + // ensure urls are on the correct format + ValidateUrls(); + } + + public static async Task SendRequest(Request request, TRequest data, HttpRequestType requestType) + where TResponse : IRequestResponse + { + try + { + // prepare serializer settings + var settings = new JsonSerializerSettings + { + ContractResolver = new CamelCasePropertyNamesContractResolver(), + Formatting = Formatting.Indented + }; + + var requestJson = String.Empty; + try + { + requestJson = JsonConvert.SerializeObject(data, settings); + //LOGGING + request.BuckarooSdkLogger.AddProcessLogging(Constants.Logging.Messages.SerializedRequestJson(requestJson)); + request.BuckarooSdkLogger.HandleRawRequest(requestJson); + } + catch (JsonSerializationException exception) + { + request.BuckarooSdkLogger.AddErrorLogging(exception.ToString()); + } + + // live or test url + var apiBaseAddress = request.IsLive ? CheckoutUrl : TestCheckoutUrl; + + // use BuckarooDelegatingHandler for HMAC auth + var customDelegatingHandler = new BuckarooDelegatingHandler(request.WebsiteKey, request.ApiKey, + request.Channel.ToString(), request.Culture.Name); + var client = new HttpClient(customDelegatingHandler); + + //LOGGING + request.BuckarooSdkLogger.AddProcessLogging(Constants.Logging.Messages.RequestTypeAndAddress(requestType, + apiBaseAddress + request.Endpoint)); + + HttpResponseMessage response; + switch (requestType) + { + case HttpRequestType.Post: + response = + await + client.PostAsync(apiBaseAddress + request.Endpoint, + new StringContent(requestJson, Encoding.UTF8, "application/json")).ConfigureAwait(false); + break; + case HttpRequestType.Get: + response = await client.GetAsync(apiBaseAddress + request.Endpoint).ConfigureAwait(false); + break; + default: + request.BuckarooSdkLogger.AddErrorLogging(Constants.Logging.Messages.BadImplementation); + throw new Exception(Constants.Logging.Messages.BadImplementation); + } + + var responseJson = response.Content.ReadAsStringAsync().Result; + + // deserialize to response type + try + { + var deserializedResponse = JsonConvert.DeserializeObject(responseJson); + if (responseJson != null) + { + //Logging response + request.BuckarooSdkLogger.AddProcessLogging(Constants.Logging.Messages.RequestSuccessful(true, + responseJson)); + request.BuckarooSdkLogger.HandleRawResponse(responseJson); + } + + request.BuckarooSdkLogger.AddProcessLogging(Constants.Logging.Messages.ResponseDeserialized); + + return deserializedResponse; + } + catch (JsonSerializationException exception) + { + request.BuckarooSdkLogger.AddErrorLogging(Constants.Logging.Messages.FailedSerializationResponseJson(responseJson) + exception); + } + + return default(TResponse); + + } + catch (Exception) + { + return default(TResponse); + } + } + + + private static void ValidateUrls() + { + foreach (var url in new List() { CheckoutUrl, TestCheckoutUrl }) + { + var isValidUrl = Uri.TryCreate(url, UriKind.Absolute, out var uriResult) && (uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps); + + if (!isValidUrl) + { + throw new UriFormatException($"'{url}' is not a valid URI."); + } + } + } + } } diff --git a/BuckarooSdk/DataTypes/Response/RequiredAction.cs b/BuckarooSdk/DataTypes/Response/RequiredAction.cs index 5e9ca3e..137e9a4 100644 --- a/BuckarooSdk/DataTypes/Response/RequiredAction.cs +++ b/BuckarooSdk/DataTypes/Response/RequiredAction.cs @@ -24,8 +24,7 @@ public string Name } set { - RequiredActionType type; - Enum.TryParse(value, out type); + Enum.TryParse(value, out RequiredActionType type); this.Type = type; } } From 3a83c115301ab7f955cd5ef18cc2e98487294f95 Mon Sep 17 00:00:00 2001 From: Tim van den Hof Date: Thu, 22 Jul 2021 21:57:23 +0200 Subject: [PATCH 19/37] Fix: IDE0016 Null check can be simplified --- BuckarooSdk/SdkClient.cs | 200 +++++++++++++++++++-------------------- 1 file changed, 98 insertions(+), 102 deletions(-) diff --git a/BuckarooSdk/SdkClient.cs b/BuckarooSdk/SdkClient.cs index e35d821..bfaa8bf 100644 --- a/BuckarooSdk/SdkClient.cs +++ b/BuckarooSdk/SdkClient.cs @@ -5,115 +5,111 @@ namespace BuckarooSdk { - /// - /// - /// @Copyright 2016, 2017, Sjaak Roos, Buckaroo B.V. - /// - /// This file is part of the Buckaroo SDK - /// - /// The Buckaroo SDK is free software: you can redistribute it and/or modify - /// it under the terms of the GNU General Public License as published by - /// the Free Software Foundation, either version 3 of the License, or - /// (at your option) any later version. - /// - /// This program is distributed in the hope that it will be useful, - /// but WITHOUT ANY WARRANTY; without even the implied warranty of - /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - /// GNU General Public License for more details. - /// - /// You should have received a copy of the GNU General Public License - /// along with this program. If not, see http://www.gnu.org/licenses/ - /// - /// - public class SdkClient - { - private PushHandler PushHandler { get; set; } + /// + /// + /// @Copyright 2016, 2017, Sjaak Roos, Buckaroo B.V. + /// + /// This file is part of the Buckaroo SDK + /// + /// The Buckaroo SDK is free software: you can redistribute it and/or modify + /// it under the terms of the GNU General Public License as published by + /// the Free Software Foundation, either version 3 of the License, or + /// (at your option) any later version. + /// + /// This program is distributed in the hope that it will be useful, + /// but WITHOUT ANY WARRANTY; without even the implied warranty of + /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + /// GNU General Public License for more details. + /// + /// You should have received a copy of the GNU General Public License + /// along with this program. If not, see http://www.gnu.org/licenses/ + /// + /// + public class SdkClient + { + private PushHandler PushHandler { get; set; } - private Func LoggerFactory { get; set; } + private Func LoggerFactory { get; set; } - /// - /// Default constructor. The standard logger will be used by this instance, if none is provided when creating a request. - /// - public SdkClient() - { - this.LoggerFactory = () => new StandardLogger(); - } + /// + /// Default constructor. The standard logger will be used by this instance, if none is provided when creating a request. + /// + public SdkClient() + { + this.LoggerFactory = () => new StandardLogger(); + } - /// - /// Constructor where a custom logger factory can be set, for creating custom implemented loggers. - /// - /// A locally stored function, e.g. () => new CustomImplementationLogger() - public SdkClient(Func loggerFactory) - { - if (loggerFactory == null) - { - throw new ArgumentNullException(nameof(loggerFactory)); - } - this.LoggerFactory = loggerFactory ; - } + /// + /// Constructor where a custom logger factory can be set, for creating custom implemented loggers. + /// + /// A locally stored function, e.g. () => new CustomImplementationLogger() + public SdkClient(Func loggerFactory) + { + this.LoggerFactory = loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory)); + } - /// - /// Create request function that returns a new request. - /// - /// - public Request CreateRequest() - { - return new Request(this.LoggerFactory()); - } + /// + /// Create request function that returns a new request. + /// + /// + public Request CreateRequest() + { + return new Request(this.LoggerFactory()); + } - /// - /// Create request function that returns a new request. A ILogger implementations can be provided. If omitted, the Logger - /// instance will be provided by the LoggerFactory. - /// - /// - /// - public Request CreateRequest(ILogger logger) - { - return new Request(logger); - } + /// + /// Create request function that returns a new request. A ILogger implementations can be provided. If omitted, the Logger + /// instance will be provided by the LoggerFactory. + /// + /// + /// + public Request CreateRequest(ILogger logger) + { + return new Request(logger); + } - /// - /// Create request function that returns a new request. A StandardLogger implementations can be provided. If omitted, the Logger - /// instance will be provided by the LoggerFactory. - /// - /// - /// - public Request CreateRequest(StandardLogger logger) - { - return new Request(logger); - } + /// + /// Create request function that returns a new request. A StandardLogger implementations can be provided. If omitted, the Logger + /// instance will be provided by the LoggerFactory. + /// + /// + /// + public Request CreateRequest(StandardLogger logger) + { + return new Request(logger); + } - /// - /// Create request function that returns a new request. A ExtensiveLogger implementations can be provided. If omitted, the Logger - /// instance will be provided by the LoggerFactory. - /// - /// - /// - public Request CreateRequest(ExtensiveLogger logger) - { - return new Request(logger); - } + /// + /// Create request function that returns a new request. A ExtensiveLogger implementations can be provided. If omitted, the Logger + /// instance will be provided by the LoggerFactory. + /// + /// + /// + public Request CreateRequest(ExtensiveLogger logger) + { + return new Request(logger); + } - /// - /// Returns a Buckaroo push handler, that can be used to process push messages. - /// - /// - public PushHandler GetPushHandler(string apiKey) - { - return this.PushHandler ?? (this.PushHandler = new PushHandler(apiKey)); - } + /// + /// Returns a Buckaroo push handler, that can be used to process push messages. + /// + /// + public PushHandler GetPushHandler(string apiKey) + { + return this.PushHandler ?? (this.PushHandler = new PushHandler(apiKey)); + } - /// - /// Returns a SignatureCalculationService instance that is also used by the SDK to calculate - /// and verify authentication signatures regarding the requests, responses and pushes. When using - /// the SDK one does not need to calculate signatures himself. But because the service is friendly - /// to use, it is made retrievable through the SDK client and can be used when only a signature needs - /// the be checked or calculated for sending a request. - /// - /// - public SignatureCalculationService GetSignatureCalculationService() - { - return new SignatureCalculationService(); - } - } + /// + /// Returns a SignatureCalculationService instance that is also used by the SDK to calculate + /// and verify authentication signatures regarding the requests, responses and pushes. When using + /// the SDK one does not need to calculate signatures himself. But because the service is friendly + /// to use, it is made retrievable through the SDK client and can be used when only a signature needs + /// the be checked or calculated for sending a request. + /// + /// + public SignatureCalculationService GetSignatureCalculationService() + { + return new SignatureCalculationService(); + } + } } From abb7776c7bcfb8a2590421bcb77c2322fe48b4ba Mon Sep 17 00:00:00 2001 From: Tim van den Hof Date: Thu, 22 Jul 2021 21:58:03 +0200 Subject: [PATCH 20/37] Fix: IDE0017 Object initialization can be simplified --- .../General/GeneralTransactionTests.cs | 409 +++++++++--------- 1 file changed, 205 insertions(+), 204 deletions(-) diff --git a/BuckarooSdk.Tests/General/GeneralTransactionTests.cs b/BuckarooSdk.Tests/General/GeneralTransactionTests.cs index 814bc19..a7903a4 100644 --- a/BuckarooSdk.Tests/General/GeneralTransactionTests.cs +++ b/BuckarooSdk.Tests/General/GeneralTransactionTests.cs @@ -10,209 +10,210 @@ namespace BuckarooSdk.Tests.General { - [TestClass] - public class GeneralTransactionTests - { - private SdkClient SdkClient { get;set; } - - public GeneralTransactionTests() - { - this.SdkClient = new SdkClient(TestSettings.Logger); - } - - [TestMethod] - public void TransactionSpecificationTest() - { - var request = this.SdkClient.CreateRequest() - .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionSpecificationRequest() - .SpecificServiceSpecification("ideal", 2); - - var response = request.GetMultipleSpecificiations(); - } - - [TestMethod] - public void MultipleSpecificationTest() - { - var request = this.SdkClient.CreateRequest() - .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionSpecificationRequest() - .MultipleServiceSpecifications(new TransactionSpecificationBase() - .AddService("ideal", 2) - .AddService("transfer") - .AddService("paypal") - ); - - var response = request.GetMultipleSpecificiations(); - - Assert.AreEqual(3, response.Services.Count); - } - - [TestMethod] - public void NoServiceTransactionTest() - { - var request = this.SdkClient.CreateRequest() - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - AmountDebit = 0.02m, - Invoice = $"SDK_TEST_{DateTime.Now.Ticks}", - Description = "IDEAL_PAY_SDK_UNITTEST", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - }) - .NoServiceSelected() - .Pay(); - - var response = request.ExecuteAsync(); - - } - - [TestMethod] - public void NoServiceTransactionTest2() - { - var request = this.SdkClient.CreateRequest(); - var authRequest = request.Authenticate( - TestSettings.WebsiteKey, TestSettings.SecretKey, - TestSettings.Test, CultureInfo.GetCultureInfo("nl-NL"), - ChannelEnum.Web); - var transactionRequest = authRequest.TransactionRequest(); - TransactionBase data = new TransactionBase(); - data.AmountDebit = 0.02m; - data.Currency = "EUR"; - data.Description = "IDEAL_PAY_SDK_UNITTEST"; - data.Invoice = $"SDK_TEST_{DateTime.Now.Ticks}"; - data.PushUrl = TestSettings.PushUri; - data.ReturnUrl = TestSettings.ReturnUrl; - data.ReturnUrlCancel = TestSettings.ReturnUrlCancel; - data.ReturnUrlError = TestSettings.ReturnUrlError; - data.ReturnUrlReject = TestSettings.ReturnUrlReject; - data.StartRecurrent = false;// redundant - - var t = transactionRequest.SetBasicFields(data); - var gt = t.NoServiceSelected(); - var st = gt.Pay(); - var response = st.Execute(); - - } - - [TestMethod] - public void CancelTransactionTest() - { - IEnumerable transactionsToBeCanceled = new List() - { - "94436C07DE6F44EBACBF26CB561F17B3", - }; - var request = this.SdkClient.CreateRequest() - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .CancelTransactionRequest() - .CancelMultiple(new CancelTransactionBase(transactionsToBeCanceled)); - - var response = request.Execute(); - - } - - [TestMethod] - public void TransactionStatusTest() - { - const string key = "12890D0FFE9F4840A69126DA2A93F1B6"; - - var request = this.SdkClient.CreateRequest() - .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionStatusRequest() - .Status(key); - - var requestResponse = request.GetSingleStatus(); - - if (requestResponse.Status.Code.Code == BuckarooSdk.Constants.Status.WaitingForConsumer) - { - Process.Start(""); - - } - if (requestResponse.Status.Code.Code == BuckarooSdk.Constants.Status.Success) - { - - } - - //var logging = this.SdkClient.LoggerFactory.GetFullLog(); - //Console.WriteLine(logging); - - } - - [TestMethod] - public void InvoiceInfoTest() - { - - const string transactionKey = "244BD8425FB941B7B93E70F5AED31F3A"; - - var request = this.SdkClient.CreateRequest() - .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionInvoiceInfoRequest() - .SpecificInvoiceInfo(transactionKey); - - var response = request.GetSingleInvoiceInfoRequest(); - - } - - [TestMethod] - public void InvoicesInfoTest() - { - var request = this.SdkClient.CreateRequest() - .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionInvoiceInfoRequest() - .MultipleInvoicesInfo(new TransactionInvoiceInfoBase() - { - InvoiceCollection = new List() - { - new InvoiceInfoRequestInvoice() - { - Key = "", - CustomerId = "", - Number = "" - } - } - }); - - var response = request.GetMultipleInvoiceInfoRequest(); - } - - [TestMethod] - public void RefundInfoTest() - { - const string transactionKey = "8CC823FB3A9545B99608541DF4BC4DFF"; - - var request = this.SdkClient.CreateRequest() - .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRefundInfoRequest() - .SpecificConfiguredTransactionRefundInfo(transactionKey); - - - var response = request.GetSingleRefundInfo(); - - - Console.WriteLine(); - } - - [TestMethod] - public void RefundsInfoTest() - { - var transactionKeyList = new List() - { - "fasdfasdhgffgdhfasdwer", - "asdfasdffhgdtrwerasfda", - "fdaswerqrgtdgfsasdffwe", - }; - - var request = this.SdkClient.CreateRequest() - .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRefundInfoRequest() - .MultipleConfiguredTransactionRefundInfo(new TransactionRefundInfoBase(transactionKeyList)); + [TestClass] + public class GeneralTransactionTests + { + private SdkClient SdkClient { get;set; } + + public GeneralTransactionTests() + { + this.SdkClient = new SdkClient(TestSettings.Logger); + } + + [TestMethod] + public void TransactionSpecificationTest() + { + var request = this.SdkClient.CreateRequest() + .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionSpecificationRequest() + .SpecificServiceSpecification("ideal", 2); + + var response = request.GetMultipleSpecificiations(); + } + + [TestMethod] + public void MultipleSpecificationTest() + { + var request = this.SdkClient.CreateRequest() + .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionSpecificationRequest() + .MultipleServiceSpecifications(new TransactionSpecificationBase() + .AddService("ideal", 2) + .AddService("transfer") + .AddService("paypal") + ); + + var response = request.GetMultipleSpecificiations(); + + Assert.AreEqual(3, response.Services.Count); + } + + [TestMethod] + public void NoServiceTransactionTest() + { + var request = this.SdkClient.CreateRequest() + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + AmountDebit = 0.02m, + Invoice = $"SDK_TEST_{DateTime.Now.Ticks}", + Description = "IDEAL_PAY_SDK_UNITTEST", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + }) + .NoServiceSelected() + .Pay(); + + var response = request.ExecuteAsync(); + + } + + [TestMethod] + public void NoServiceTransactionTest2() + { + var request = this.SdkClient.CreateRequest(); + var authRequest = request.Authenticate( + TestSettings.WebsiteKey, TestSettings.SecretKey, + TestSettings.Test, CultureInfo.GetCultureInfo("nl-NL"), + ChannelEnum.Web); + var transactionRequest = authRequest.TransactionRequest(); + TransactionBase data = new TransactionBase + { + AmountDebit = 0.02m, + Currency = "EUR", + Description = "IDEAL_PAY_SDK_UNITTEST", + Invoice = $"SDK_TEST_{DateTime.Now.Ticks}", + PushUrl = TestSettings.PushUri, + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + StartRecurrent = false// redundant + }; + var t = transactionRequest.SetBasicFields(data); + var gt = t.NoServiceSelected(); + var st = gt.Pay(); + var response = st.Execute(); + + } + + [TestMethod] + public void CancelTransactionTest() + { + IEnumerable transactionsToBeCanceled = new List() + { + "94436C07DE6F44EBACBF26CB561F17B3", + }; + var request = this.SdkClient.CreateRequest() + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .CancelTransactionRequest() + .CancelMultiple(new CancelTransactionBase(transactionsToBeCanceled)); + + var response = request.Execute(); + + } + + [TestMethod] + public void TransactionStatusTest() + { + const string key = "12890D0FFE9F4840A69126DA2A93F1B6"; + + var request = this.SdkClient.CreateRequest() + .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionStatusRequest() + .Status(key); + + var requestResponse = request.GetSingleStatus(); + + if (requestResponse.Status.Code.Code == BuckarooSdk.Constants.Status.WaitingForConsumer) + { + Process.Start(""); + + } + if (requestResponse.Status.Code.Code == BuckarooSdk.Constants.Status.Success) + { + + } + + //var logging = this.SdkClient.LoggerFactory.GetFullLog(); + //Console.WriteLine(logging); + + } + + [TestMethod] + public void InvoiceInfoTest() + { + + const string transactionKey = "244BD8425FB941B7B93E70F5AED31F3A"; + + var request = this.SdkClient.CreateRequest() + .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionInvoiceInfoRequest() + .SpecificInvoiceInfo(transactionKey); + + var response = request.GetSingleInvoiceInfoRequest(); + + } + + [TestMethod] + public void InvoicesInfoTest() + { + var request = this.SdkClient.CreateRequest() + .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionInvoiceInfoRequest() + .MultipleInvoicesInfo(new TransactionInvoiceInfoBase() + { + InvoiceCollection = new List() + { + new InvoiceInfoRequestInvoice() + { + Key = "", + CustomerId = "", + Number = "" + } + } + }); + + var response = request.GetMultipleInvoiceInfoRequest(); + } + + [TestMethod] + public void RefundInfoTest() + { + const string transactionKey = "8CC823FB3A9545B99608541DF4BC4DFF"; + + var request = this.SdkClient.CreateRequest() + .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRefundInfoRequest() + .SpecificConfiguredTransactionRefundInfo(transactionKey); + + + var response = request.GetSingleRefundInfo(); + + + Console.WriteLine(); + } + + [TestMethod] + public void RefundsInfoTest() + { + var transactionKeyList = new List() + { + "fasdfasdhgffgdhfasdwer", + "asdfasdffhgdtrwerasfda", + "fdaswerqrgtdgfsasdffwe", + }; + + var request = this.SdkClient.CreateRequest() + .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRefundInfoRequest() + .MultipleConfiguredTransactionRefundInfo(new TransactionRefundInfoBase(transactionKeyList)); - var response = request.GetMultipleRefundsInfo(); - } - } + var response = request.GetMultipleRefundsInfo(); + } + } } From 8eae74514ebc05e8ef95089241cf42d241c18e04 Mon Sep 17 00:00:00 2001 From: Tim van den Hof Date: Thu, 22 Jul 2021 21:58:40 +0200 Subject: [PATCH 21/37] Fix: IDE0028 Collection initialization can be simplified --- .../RequestBases/CancelTransactionBase.cs | 60 ++++++++++--------- 1 file changed, 31 insertions(+), 29 deletions(-) diff --git a/BuckarooSdk/DataTypes/RequestBases/CancelTransactionBase.cs b/BuckarooSdk/DataTypes/RequestBases/CancelTransactionBase.cs index 83c8b62..ba6e27a 100644 --- a/BuckarooSdk/DataTypes/RequestBases/CancelTransactionBase.cs +++ b/BuckarooSdk/DataTypes/RequestBases/CancelTransactionBase.cs @@ -2,38 +2,40 @@ namespace BuckarooSdk.DataTypes.RequestBases { - public class CancelTransactionBase : IRequestBase - { - public List Transactions { get; set; } + public class CancelTransactionBase : IRequestBase + { + public List Transactions { get; set; } - public CancelTransactionBase(IEnumerable transactions) - { - this.Transactions = new List(); - foreach (var transaction in transactions) - { - this.Transactions.Add(new CancelTransaction(transaction)); - } - } + public CancelTransactionBase(IEnumerable transactions) + { + this.Transactions = new List(); + foreach (var transaction in transactions) + { + this.Transactions.Add(new CancelTransaction(transaction)); + } + } - public CancelTransactionBase(string transactionToBeCanceled) - { - this.Transactions = new List(); - this.Transactions.Add(new CancelTransaction(transactionToBeCanceled)); - } - } + public CancelTransactionBase(string transactionToBeCanceled) + { + this.Transactions = new List + { + new CancelTransaction(transactionToBeCanceled) + }; + } + } - public class CancelTransaction - { - public string Key { get; set; } + public class CancelTransaction + { + public string Key { get; set; } - public CancelTransaction(string key) - { - this.Key = key; - } + public CancelTransaction(string key) + { + this.Key = key; + } - public CancelTransaction() - { - - } - } + public CancelTransaction() + { + + } + } } From f5f61ed5a2c6b91ff091faace9a17c374a85f954 Mon Sep 17 00:00:00 2001 From: Tim van den Hof Date: Thu, 22 Jul 2021 21:59:18 +0200 Subject: [PATCH 22/37] Fix: IDE0034 'default' expression can be simplified --- BuckarooSdk/Connection/Connector.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/BuckarooSdk/Connection/Connector.cs b/BuckarooSdk/Connection/Connector.cs index 9012b08..66530d2 100644 --- a/BuckarooSdk/Connection/Connector.cs +++ b/BuckarooSdk/Connection/Connector.cs @@ -106,12 +106,12 @@ public static async Task SendRequest(Request req request.BuckarooSdkLogger.AddErrorLogging(Constants.Logging.Messages.FailedSerializationResponseJson(responseJson) + exception); } - return default(TResponse); + return default; } catch (Exception) { - return default(TResponse); + return default; } } From 9a94292589d5d8b05d6add70c6231fa507ec4aa2 Mon Sep 17 00:00:00 2001 From: Tim van den Hof Date: Thu, 22 Jul 2021 22:01:54 +0200 Subject: [PATCH 23/37] Fix: IDE0052 Private property 'IdealDataRequest.ConfiguredDataRequest' can be converted to a method as its get accessor is never invoked. --- BuckarooSdk/Data/ConfiguredDataRequest.cs | 2 +- .../Services/Ideal/DataRequest/IdealDataRequest.cs | 9 ++------- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/BuckarooSdk/Data/ConfiguredDataRequest.cs b/BuckarooSdk/Data/ConfiguredDataRequest.cs index 6495efb..67f30c9 100644 --- a/BuckarooSdk/Data/ConfiguredDataRequest.cs +++ b/BuckarooSdk/Data/ConfiguredDataRequest.cs @@ -76,7 +76,7 @@ public Services.KlarnaKP.KlarnaRequestObject KlarnaKP() /// An ideal public IdealDataRequest Ideal() { - return new IdealDataRequest(this); + return new IdealDataRequest(); } public IdealQrDataRequest IdealQr() diff --git a/BuckarooSdk/Services/Ideal/DataRequest/IdealDataRequest.cs b/BuckarooSdk/Services/Ideal/DataRequest/IdealDataRequest.cs index 58745df..72dd3a7 100644 --- a/BuckarooSdk/Services/Ideal/DataRequest/IdealDataRequest.cs +++ b/BuckarooSdk/Services/Ideal/DataRequest/IdealDataRequest.cs @@ -1,17 +1,12 @@ -using BuckarooSdk.Data; - -namespace BuckarooSdk.Services.Ideal.DataRequest +namespace BuckarooSdk.Services.Ideal.DataRequest { /// /// iDEAL data request. /// public class IdealDataRequest { - private ConfiguredDataRequest ConfiguredDataRequest { get; set; } - - internal IdealDataRequest(ConfiguredDataRequest configuredDateRequest) + internal IdealDataRequest() { - ConfiguredDataRequest = configuredDateRequest; } } } From 3117f52414b9df8e228eed316cf198a01da59d61 Mon Sep 17 00:00:00 2001 From: Tim van den Hof Date: Thu, 22 Jul 2021 22:02:58 +0200 Subject: [PATCH 24/37] Fix: IDE0052 Private member 'KbcPaymentButtonRequestObject.ConfiguredDataRequest' can be removed as the value assigned to it is never read --- .../KbcPaymentButton/KbcPaymentButtonRequestObject.cs | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/BuckarooSdk/Services/KbcPaymentButton/KbcPaymentButtonRequestObject.cs b/BuckarooSdk/Services/KbcPaymentButton/KbcPaymentButtonRequestObject.cs index 34e687b..6c5026e 100644 --- a/BuckarooSdk/Services/KbcPaymentButton/KbcPaymentButtonRequestObject.cs +++ b/BuckarooSdk/Services/KbcPaymentButton/KbcPaymentButtonRequestObject.cs @@ -1,4 +1,4 @@ -using BuckarooSdk.Data; +using BuckarooSdk.Data; using BuckarooSdk.Transaction; namespace BuckarooSdk.Services.KbcPaymentButton @@ -9,18 +9,12 @@ public class KbcPaymentButtonRequestObject /// The configured transaction /// private ConfiguredTransaction ConfiguredTransaction { get; } - private ConfiguredDataRequest ConfiguredDataRequest { get; } internal KbcPaymentButtonRequestObject(ConfiguredTransaction configuredTransaction) { this.ConfiguredTransaction = configuredTransaction; } - internal KbcPaymentButtonRequestObject(ConfiguredDataRequest configuredDataRequest) - { - this.ConfiguredDataRequest = configuredDataRequest; - } - /// /// The Pay function creates a configured transaction with an KbcPaymentButtonPayRequest request, /// that is ready to be executed. From 28010403da70c6376fcd57d82aee2858dce7da2e Mon Sep 17 00:00:00 2001 From: Tim van den Hof Date: Thu, 22 Jul 2021 22:03:46 +0200 Subject: [PATCH 25/37] Fix: IDE0052 Private member 'EPSRequestObject.ConfiguredDataRequest' can be removed as the value assigned to it is never read --- BuckarooSdk/Services/EPS/EPSRequestObject.cs | 123 +++++++++--------- .../KbcPaymentButtonRequestObject.cs | 109 ++++++++-------- 2 files changed, 112 insertions(+), 120 deletions(-) diff --git a/BuckarooSdk/Services/EPS/EPSRequestObject.cs b/BuckarooSdk/Services/EPS/EPSRequestObject.cs index 91719fd..e83f511 100644 --- a/BuckarooSdk/Services/EPS/EPSRequestObject.cs +++ b/BuckarooSdk/Services/EPS/EPSRequestObject.cs @@ -1,69 +1,62 @@ -using BuckarooSdk.Transaction; -using BuckarooSdk.Data; +using BuckarooSdk.Transaction; namespace BuckarooSdk.Services.EPS { - public class EPSRequestObject - { - /// - /// The configured transaction - /// - private ConfiguredTransaction ConfiguredTransaction { get; } - private ConfiguredDataRequest ConfiguredDataRequest { get; } - - internal EPSRequestObject(ConfiguredTransaction configuredTransaction) - { - this.ConfiguredTransaction = configuredTransaction; - } - - internal EPSRequestObject(ConfiguredDataRequest configuredDataRequest) - { - this.ConfiguredDataRequest = configuredDataRequest; - } - - /// - /// The Pay function creates a configured transaction with an EPSPayRequest request, - /// that is ready to be executed. - /// - /// A EPSPayRequest - /// - public ConfiguredServiceTransaction Pay(EPSPayRequest request) - { - var parameters = ServiceHelper.CreateServiceParameters(request); - var configuredServiceTransaction = new ConfiguredServiceTransaction(this.ConfiguredTransaction.BaseTransaction); - configuredServiceTransaction.BaseTransaction.AddService("eps", parameters, "Pay"); - - return configuredServiceTransaction; - } - - /// - /// The Refund function creates a configured transaction with an EPSRefundRequest request, - /// that is ready to be executed. - /// - /// A EPSRefundRequest - /// - public ConfiguredServiceTransaction Refund(EPSRefundRequest request) - { - var parameters = ServiceHelper.CreateServiceParameters(request); - var configuredServiceTransaction = new ConfiguredServiceTransaction(this.ConfiguredTransaction.BaseTransaction); - configuredServiceTransaction.BaseTransaction.AddService("eps", parameters, "Refund"); - - return configuredServiceTransaction; - } - - /// - /// The PayRemainder function creates a configured transaction with an EPSPayRemainderRequest request, - /// that is ready to be executed. - /// - /// A EPSPayRemainderRequest - /// - public ConfiguredServiceTransaction PayRemainder(EPSPayRemainderRequest request) - { - var parameters = ServiceHelper.CreateServiceParameters(request); - var configuredServiceTransaction = new ConfiguredServiceTransaction(this.ConfiguredTransaction.BaseTransaction); - configuredServiceTransaction.BaseTransaction.AddService("eps", parameters, "PayRemainder"); - - return configuredServiceTransaction; - } - } + public class EPSRequestObject + { + /// + /// The configured transaction + /// + private ConfiguredTransaction ConfiguredTransaction { get; } + + internal EPSRequestObject(ConfiguredTransaction configuredTransaction) + { + this.ConfiguredTransaction = configuredTransaction; + } + + /// + /// The Pay function creates a configured transaction with an EPSPayRequest request, + /// that is ready to be executed. + /// + /// A EPSPayRequest + /// + public ConfiguredServiceTransaction Pay(EPSPayRequest request) + { + var parameters = ServiceHelper.CreateServiceParameters(request); + var configuredServiceTransaction = new ConfiguredServiceTransaction(this.ConfiguredTransaction.BaseTransaction); + configuredServiceTransaction.BaseTransaction.AddService("eps", parameters, "Pay"); + + return configuredServiceTransaction; + } + + /// + /// The Refund function creates a configured transaction with an EPSRefundRequest request, + /// that is ready to be executed. + /// + /// A EPSRefundRequest + /// + public ConfiguredServiceTransaction Refund(EPSRefundRequest request) + { + var parameters = ServiceHelper.CreateServiceParameters(request); + var configuredServiceTransaction = new ConfiguredServiceTransaction(this.ConfiguredTransaction.BaseTransaction); + configuredServiceTransaction.BaseTransaction.AddService("eps", parameters, "Refund"); + + return configuredServiceTransaction; + } + + /// + /// The PayRemainder function creates a configured transaction with an EPSPayRemainderRequest request, + /// that is ready to be executed. + /// + /// A EPSPayRemainderRequest + /// + public ConfiguredServiceTransaction PayRemainder(EPSPayRemainderRequest request) + { + var parameters = ServiceHelper.CreateServiceParameters(request); + var configuredServiceTransaction = new ConfiguredServiceTransaction(this.ConfiguredTransaction.BaseTransaction); + configuredServiceTransaction.BaseTransaction.AddService("eps", parameters, "PayRemainder"); + + return configuredServiceTransaction; + } + } } diff --git a/BuckarooSdk/Services/KbcPaymentButton/KbcPaymentButtonRequestObject.cs b/BuckarooSdk/Services/KbcPaymentButton/KbcPaymentButtonRequestObject.cs index 6c5026e..2f85fa1 100644 --- a/BuckarooSdk/Services/KbcPaymentButton/KbcPaymentButtonRequestObject.cs +++ b/BuckarooSdk/Services/KbcPaymentButton/KbcPaymentButtonRequestObject.cs @@ -1,66 +1,65 @@ -using BuckarooSdk.Data; -using BuckarooSdk.Transaction; +using BuckarooSdk.Transaction; namespace BuckarooSdk.Services.KbcPaymentButton { - public class KbcPaymentButtonRequestObject - { - /// - /// The configured transaction - /// - private ConfiguredTransaction ConfiguredTransaction { get; } + public class KbcPaymentButtonRequestObject + { + /// + /// The configured transaction + /// + private ConfiguredTransaction ConfiguredTransaction { get; } - internal KbcPaymentButtonRequestObject(ConfiguredTransaction configuredTransaction) - { - this.ConfiguredTransaction = configuredTransaction; - } + internal KbcPaymentButtonRequestObject(ConfiguredTransaction configuredTransaction) + { + this.ConfiguredTransaction = configuredTransaction; + } - /// - /// The Pay function creates a configured transaction with an KbcPaymentButtonPayRequest request, - /// that is ready to be executed. - /// - /// A KbcPaymentButtonPayRequest - /// - public ConfiguredServiceTransaction Pay(KbcPaymentButtonPayRequest request) - { - var parameters = ServiceHelper.CreateServiceParameters(request); - var configuredServiceTransaction = - new ConfiguredServiceTransaction(this.ConfiguredTransaction.BaseTransaction); - configuredServiceTransaction.BaseTransaction.AddService("kbcpaymentbutton", parameters, "Pay"); + /// + /// The Pay function creates a configured transaction with an KbcPaymentButtonPayRequest request, + /// that is ready to be executed. + /// + /// A KbcPaymentButtonPayRequest + /// + public ConfiguredServiceTransaction Pay(KbcPaymentButtonPayRequest request) + { + var parameters = ServiceHelper.CreateServiceParameters(request); + var configuredServiceTransaction = + new ConfiguredServiceTransaction(this.ConfiguredTransaction.BaseTransaction); + configuredServiceTransaction.BaseTransaction.AddService("kbcpaymentbutton", parameters, "Pay"); - return configuredServiceTransaction; - } + return configuredServiceTransaction; + } - /// - /// The Refund function creates a configured transaction with an KbcPaymentButtonRefundRequest request, - /// that is ready to be executed. - /// - /// A KbcPaymentButtonRefundRequest - /// - public ConfiguredServiceTransaction Refund(KbcPaymentButtonRefundRequest request) - { - var parameters = ServiceHelper.CreateServiceParameters(request); - var configuredServiceTransaction = - new ConfiguredServiceTransaction(this.ConfiguredTransaction.BaseTransaction); - configuredServiceTransaction.BaseTransaction.AddService("kbcpaymentbutton", parameters, "Refund"); + /// + /// The Refund function creates a configured transaction with an KbcPaymentButtonRefundRequest request, + /// that is ready to be executed. + /// + /// A KbcPaymentButtonRefundRequest + /// + public ConfiguredServiceTransaction Refund(KbcPaymentButtonRefundRequest request) + { + var parameters = ServiceHelper.CreateServiceParameters(request); + var configuredServiceTransaction = + new ConfiguredServiceTransaction(this.ConfiguredTransaction.BaseTransaction); + configuredServiceTransaction.BaseTransaction.AddService("kbcpaymentbutton", parameters, "Refund"); - return configuredServiceTransaction; - } + return configuredServiceTransaction; + } - /// - /// The PayRemainder function creates a configured transaction with an KbcPaymentButtonPayRemainderRequest request, - /// that is ready to be executed. - /// - /// A KbcPaymentButtonPayRemainderRequest - /// - public ConfiguredServiceTransaction PayRemainder(KbcPaymentButtonPayRemainderRequest request) - { - var parameters = ServiceHelper.CreateServiceParameters(request); - var configuredServiceTransaction = - new ConfiguredServiceTransaction(this.ConfiguredTransaction.BaseTransaction); - configuredServiceTransaction.BaseTransaction.AddService("kbcpaymentbutton", parameters, "PayRemainder"); + /// + /// The PayRemainder function creates a configured transaction with an KbcPaymentButtonPayRemainderRequest request, + /// that is ready to be executed. + /// + /// A KbcPaymentButtonPayRemainderRequest + /// + public ConfiguredServiceTransaction PayRemainder(KbcPaymentButtonPayRemainderRequest request) + { + var parameters = ServiceHelper.CreateServiceParameters(request); + var configuredServiceTransaction = + new ConfiguredServiceTransaction(this.ConfiguredTransaction.BaseTransaction); + configuredServiceTransaction.BaseTransaction.AddService("kbcpaymentbutton", parameters, "PayRemainder"); - return configuredServiceTransaction; - } - } + return configuredServiceTransaction; + } + } } From 2f2d8f0019fd805d881c6c8c9b6ffb8955fcedcc Mon Sep 17 00:00:00 2001 From: Tim van den Hof Date: Thu, 22 Jul 2021 22:05:03 +0200 Subject: [PATCH 26/37] Fix: IDE0052 Private member 'EMandateRequestObject.ConfiguredTransaction' can be removed as the value assigned to it is never read --- .../EMandate/EMandateRequestObject.cs | 136 +++++++++--------- .../Transaction/ConfiguredTransaction.cs | 2 +- 2 files changed, 65 insertions(+), 73 deletions(-) diff --git a/BuckarooSdk/Services/EMandate/EMandateRequestObject.cs b/BuckarooSdk/Services/EMandate/EMandateRequestObject.cs index ef14653..34e1ba4 100644 --- a/BuckarooSdk/Services/EMandate/EMandateRequestObject.cs +++ b/BuckarooSdk/Services/EMandate/EMandateRequestObject.cs @@ -1,86 +1,78 @@ -using BuckarooSdk.Transaction; -using BuckarooSdk.Data; +using BuckarooSdk.Data; namespace BuckarooSdk.Services.EMandate { - public class EMandateRequestObject - { - /// - /// The configured transaction - /// - private ConfiguredTransaction ConfiguredTransaction { get; } - private ConfiguredDataRequest ConfiguredDataRequest { get; } + public class EMandateRequestObject + { + private ConfiguredDataRequest ConfiguredDataRequest { get; } - internal EMandateRequestObject(ConfiguredTransaction configuredTransaction) - { - this.ConfiguredTransaction = configuredTransaction; - } + internal EMandateRequestObject() + { + } - internal EMandateRequestObject(ConfiguredDataRequest configuredDataRequest) - { - this.ConfiguredDataRequest = configuredDataRequest; - } + internal EMandateRequestObject(ConfiguredDataRequest configuredDataRequest) + { + this.ConfiguredDataRequest = configuredDataRequest; + } - /// - /// The CreateMandate function creates a configured datarequest with an EMandateCreateMandateRequest request, - /// that is ready to be executed. - /// - /// A EMandateCreateMandateRequest - /// - public ConfiguredServiceDataRequest CreateMandate(EMandateCreateMandateRequest request) - { - var parameters = ServiceHelper.CreateServiceParameters(request); - var configuredServiceDataReqeust = new ConfiguredServiceDataRequest(this.ConfiguredDataRequest.BaseDataRequest); - configuredServiceDataReqeust.BaseData.AddService("emandate", parameters, "CreateMandate"); + /// + /// The CreateMandate function creates a configured datarequest with an EMandateCreateMandateRequest request, + /// that is ready to be executed. + /// + /// A EMandateCreateMandateRequest + /// + public ConfiguredServiceDataRequest CreateMandate(EMandateCreateMandateRequest request) + { + var parameters = ServiceHelper.CreateServiceParameters(request); + var configuredServiceDataReqeust = new ConfiguredServiceDataRequest(this.ConfiguredDataRequest.BaseDataRequest); + configuredServiceDataReqeust.BaseData.AddService("emandate", parameters, "CreateMandate"); - return configuredServiceDataReqeust; - } + return configuredServiceDataReqeust; + } - /// - /// The GetIssuerList function creates a configured datarequest with an EMandateGetIssuerListRequest request, - /// that is ready to be executed. - /// - /// A EMandateGetIssuerListRequest - /// - public ConfiguredServiceDataRequest GetIssuerList(EMandateGetIssuerListRequest request) - { - var parameters = ServiceHelper.CreateServiceParameters(request); - var configuredServiceDataReqeust = new ConfiguredServiceDataRequest(this.ConfiguredDataRequest.BaseDataRequest); - configuredServiceDataReqeust.BaseData.AddService("emandate", parameters, "GetIssuerList"); + /// + /// The GetIssuerList function creates a configured datarequest with an EMandateGetIssuerListRequest request, + /// that is ready to be executed. + /// + /// A EMandateGetIssuerListRequest + /// + public ConfiguredServiceDataRequest GetIssuerList(EMandateGetIssuerListRequest request) + { + var parameters = ServiceHelper.CreateServiceParameters(request); + var configuredServiceDataReqeust = new ConfiguredServiceDataRequest(this.ConfiguredDataRequest.BaseDataRequest); + configuredServiceDataReqeust.BaseData.AddService("emandate", parameters, "GetIssuerList"); - return configuredServiceDataReqeust; - } + return configuredServiceDataReqeust; + } - /// - /// The GetStatus function creates a configured datarequest with an EMandateGetStatusRequest request, - /// that is ready to be executed. - /// - /// A EMandateGetStatusRequest - /// - public ConfiguredServiceDataRequest GetStatus(EMandateGetStatusRequest request) - { - var parameters = ServiceHelper.CreateServiceParameters(request); - var configuredServiceDataReqeust = new ConfiguredServiceDataRequest(this.ConfiguredDataRequest.BaseDataRequest); - configuredServiceDataReqeust.BaseData.AddService("emandate", parameters, "GetStatus"); + /// + /// The GetStatus function creates a configured datarequest with an EMandateGetStatusRequest request, + /// that is ready to be executed. + /// + /// A EMandateGetStatusRequest + /// + public ConfiguredServiceDataRequest GetStatus(EMandateGetStatusRequest request) + { + var parameters = ServiceHelper.CreateServiceParameters(request); + var configuredServiceDataReqeust = new ConfiguredServiceDataRequest(this.ConfiguredDataRequest.BaseDataRequest); + configuredServiceDataReqeust.BaseData.AddService("emandate", parameters, "GetStatus"); - return configuredServiceDataReqeust; - } + return configuredServiceDataReqeust; + } - /// - /// The ModifyMandate function creates a configured datarequest with an EMandateModifyMandateRequest request, - /// that is ready to be executed. - /// - /// A EMandateModifyMandateRequest - /// - public ConfiguredServiceDataRequest ModifyMandate(EMandateModifyMandateRequest request) - { - var parameters = ServiceHelper.CreateServiceParameters(request); - var configuredServiceDataReqeust = new ConfiguredServiceDataRequest(this.ConfiguredDataRequest.BaseDataRequest); - configuredServiceDataReqeust.BaseData.AddService("emandate", parameters, "ModifyMandate"); + /// + /// The ModifyMandate function creates a configured datarequest with an EMandateModifyMandateRequest request, + /// that is ready to be executed. + /// + /// A EMandateModifyMandateRequest + /// + public ConfiguredServiceDataRequest ModifyMandate(EMandateModifyMandateRequest request) + { + var parameters = ServiceHelper.CreateServiceParameters(request); + var configuredServiceDataReqeust = new ConfiguredServiceDataRequest(this.ConfiguredDataRequest.BaseDataRequest); + configuredServiceDataReqeust.BaseData.AddService("emandate", parameters, "ModifyMandate"); - return configuredServiceDataReqeust; - } - - - } + return configuredServiceDataReqeust; + } + } } diff --git a/BuckarooSdk/Transaction/ConfiguredTransaction.cs b/BuckarooSdk/Transaction/ConfiguredTransaction.cs index 41fef8f..16f35dc 100644 --- a/BuckarooSdk/Transaction/ConfiguredTransaction.cs +++ b/BuckarooSdk/Transaction/ConfiguredTransaction.cs @@ -294,7 +294,7 @@ public PayPalTransaction PayPal() /// public EMandateRequestObject EMandate() { - return new EMandateRequestObject(this); + return new EMandateRequestObject(); } /// From 058dd3d9319cb4adc61ecfe98b35a9e5906dc8ac Mon Sep 17 00:00:00 2001 From: Tim van den Hof Date: Thu, 22 Jul 2021 22:11:33 +0200 Subject: [PATCH 27/37] Fix: IDE0060 Remove unused parameter 'transaction' if it is not part of a shipped public API ==> Marked obsolete, added new constructor --- .../RefundInfo/TransactionRefundInfo.cs | 52 ++++++++++--------- 1 file changed, 28 insertions(+), 24 deletions(-) diff --git a/BuckarooSdk/Transaction/RefundInfo/TransactionRefundInfo.cs b/BuckarooSdk/Transaction/RefundInfo/TransactionRefundInfo.cs index 50dbf70..863db95 100644 --- a/BuckarooSdk/Transaction/RefundInfo/TransactionRefundInfo.cs +++ b/BuckarooSdk/Transaction/RefundInfo/TransactionRefundInfo.cs @@ -1,34 +1,38 @@ -using BuckarooSdk.Base; +using System; +using BuckarooSdk.Base; using BuckarooSdk.DataTypes.RequestBases; namespace BuckarooSdk.Transaction.RefundInfo { - public class TransactionRefundInfo - { - internal AuthenticatedRequest AuthenticatedRequest { get; set; } - internal TransactionRefundInfoBase TransactionRefundInfoBase { get; set; } + public class TransactionRefundInfo + { + internal AuthenticatedRequest AuthenticatedRequest { get; set; } - public TransactionRefundInfo(AuthenticatedRequest request) - { - this.AuthenticatedRequest = request; - } + internal TransactionRefundInfoBase TransactionRefundInfoBase { get; set; } - public ConfiguredTransactionRefundInfo SpecificConfiguredTransactionRefundInfo(string transactionKey) - { - this.AuthenticatedRequest.Request.Endpoint += ($"{Constants.Settings.GatewaySettings.TransactionRequestEndPoint}" + - $"{Constants.Settings.GatewaySettings.RefundInfoEndPoint}" + - $"{transactionKey}"); + public TransactionRefundInfo(AuthenticatedRequest request) + { + AuthenticatedRequest = request; + } - return new ConfiguredTransactionRefundInfo(this); - } + public ConfiguredTransactionRefundInfo SpecificConfiguredTransactionRefundInfo(string transactionKey) + { + AuthenticatedRequest.Request.Endpoint += $"{Constants.Settings.GatewaySettings.TransactionRequestEndPoint}{Constants.Settings.GatewaySettings.RefundInfoEndPoint}{transactionKey}"; - public ConfiguredTransactionRefundInfo MultipleConfiguredTransactionRefundInfo( - TransactionRefundInfoBase transactionRefundInfoBase) - { - this.AuthenticatedRequest.Request.Endpoint += ($"{Constants.Settings.GatewaySettings.TransactionRequestEndPoint}" + - $"{Constants.Settings.GatewaySettings.RefundInfosEndPoint}"); + return new ConfiguredTransactionRefundInfo(this); + } + + public ConfiguredTransactionRefundInfo MultipleConfiguredTransactionRefundInfo() + { + AuthenticatedRequest.Request.Endpoint += $"{Constants.Settings.GatewaySettings.TransactionRequestEndPoint}{Constants.Settings.GatewaySettings.RefundInfosEndPoint}"; - return new ConfiguredTransactionRefundInfo(this); - } - } + return new ConfiguredTransactionRefundInfo(this); + } + + [Obsolete("Parameter transactionRefundInfoBase is no longer needed.")] + public ConfiguredTransactionRefundInfo MultipleConfiguredTransactionRefundInfo(TransactionRefundInfoBase transactionRefundInfoBase) + { + return MultipleConfiguredTransactionRefundInfo(); + } + } } From 1d0df09db899b6e69374a9a744ed8ac4bf853093 Mon Sep 17 00:00:00 2001 From: Tim van den Hof Date: Thu, 22 Jul 2021 22:12:31 +0200 Subject: [PATCH 28/37] Fix: IDE0052 Private property 'SubscriptionRequestTests.BuckarooClient' can be converted to a method as its get accessor is never invoked. --- .../Subscriptions/SubscriptionRequestTests.cs | 39 +++++++++---------- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/BuckarooSdk.Tests/Services/Subscriptions/SubscriptionRequestTests.cs b/BuckarooSdk.Tests/Services/Subscriptions/SubscriptionRequestTests.cs index 5a4e6e3..75456ad 100644 --- a/BuckarooSdk.Tests/Services/Subscriptions/SubscriptionRequestTests.cs +++ b/BuckarooSdk.Tests/Services/Subscriptions/SubscriptionRequestTests.cs @@ -4,26 +4,23 @@ namespace BuckarooSdk.Tests.Services.Subscriptions { - [TestClass] - public class SubscriptionRequestTests - { - private SdkClient BuckarooClient { get; set; } + [TestClass] + public class SubscriptionRequestTests + { + private SdkClient buckarooClient; - [TestInitialize] - public void Setup() - { - this.BuckarooClient = new SdkClient(TestSettings.Logger); - } + [TestInitialize] + public void Setup() + { + buckarooClient = new SdkClient(TestSettings.Logger); + } - [TestMethod] - public void CreateSubscriptionTest() - { - //var request = this._buckarooClient.CreateRequest() - //.Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - //.Subscriptions() - } - - - - } -} \ No newline at end of file + [TestMethod] + public void CreateSubscriptionTest() + { + //var request = this._buckarooClient.CreateRequest() + //.Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + //.Subscriptions() + } + } +} From b48872075583548ed7f239be20548d4282074b62 Mon Sep 17 00:00:00 2001 From: Tim van den Hof Date: Thu, 22 Jul 2021 22:13:36 +0200 Subject: [PATCH 29/37] Removed SubscriptionRequestTests as it does not contain tests --- BuckarooSdk.Tests/BuckarooSdk.Tests.csproj | 4 ++- .../Subscriptions/SubscriptionRequestTests.cs | 26 ------------------- 2 files changed, 3 insertions(+), 27 deletions(-) delete mode 100644 BuckarooSdk.Tests/Services/Subscriptions/SubscriptionRequestTests.cs diff --git a/BuckarooSdk.Tests/BuckarooSdk.Tests.csproj b/BuckarooSdk.Tests/BuckarooSdk.Tests.csproj index 46184ec..52ba122 100644 --- a/BuckarooSdk.Tests/BuckarooSdk.Tests.csproj +++ b/BuckarooSdk.Tests/BuckarooSdk.Tests.csproj @@ -367,7 +367,6 @@ - @@ -386,6 +385,9 @@ BuckarooSdk + + + diff --git a/BuckarooSdk.Tests/Services/Subscriptions/SubscriptionRequestTests.cs b/BuckarooSdk.Tests/Services/Subscriptions/SubscriptionRequestTests.cs deleted file mode 100644 index 75456ad..0000000 --- a/BuckarooSdk.Tests/Services/Subscriptions/SubscriptionRequestTests.cs +++ /dev/null @@ -1,26 +0,0 @@ -using Microsoft.VisualStudio.TestTools.UnitTesting; -using BuckarooSdk.Tests.Constants; - - -namespace BuckarooSdk.Tests.Services.Subscriptions -{ - [TestClass] - public class SubscriptionRequestTests - { - private SdkClient buckarooClient; - - [TestInitialize] - public void Setup() - { - buckarooClient = new SdkClient(TestSettings.Logger); - } - - [TestMethod] - public void CreateSubscriptionTest() - { - //var request = this._buckarooClient.CreateRequest() - //.Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - //.Subscriptions() - } - } -} From 409ea40487df351fae577ee9e316be2051b28f72 Mon Sep 17 00:00:00 2001 From: Tim van den Hof Date: Thu, 22 Jul 2021 22:15:18 +0200 Subject: [PATCH 30/37] Fix: CS0618 'TransactionRefundInfo.MultipleConfiguredTransactionRefundInfo(TransactionRefundInfoBase)' is obsolete: 'Parameter transactionRefundInfoBase is no longer needed.' --- .../General/GeneralTransactionTests.cs | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/BuckarooSdk.Tests/General/GeneralTransactionTests.cs b/BuckarooSdk.Tests/General/GeneralTransactionTests.cs index a7903a4..c5e255b 100644 --- a/BuckarooSdk.Tests/General/GeneralTransactionTests.cs +++ b/BuckarooSdk.Tests/General/GeneralTransactionTests.cs @@ -199,7 +199,8 @@ public void RefundInfoTest() } [TestMethod] - public void RefundsInfoTest() + [Obsolete] + public void RefundsInfoTest_Obsolete() { var transactionKeyList = new List() { @@ -208,12 +209,23 @@ public void RefundsInfoTest() "fdaswerqrgtdgfsasdffwe", }; - var request = this.SdkClient.CreateRequest() - .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + var request = SdkClient.CreateRequest() + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) .TransactionRefundInfoRequest() .MultipleConfiguredTransactionRefundInfo(new TransactionRefundInfoBase(transactionKeyList)); var response = request.GetMultipleRefundsInfo(); } + + [TestMethod] + public void RefundsInfoTest() + { + var request = SdkClient.CreateRequest() + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRefundInfoRequest() + .MultipleConfiguredTransactionRefundInfo(); + + var response = request.GetMultipleRefundsInfo(); + } } } From b1c936f038f7f818bd2994305b232f4d139e56a3 Mon Sep 17 00:00:00 2001 From: Tim van den Hof Date: Thu, 22 Jul 2021 22:16:24 +0200 Subject: [PATCH 31/37] Fix: IDE0038 Use pattern matching --- BuckarooSdk/Services/ServiceHelper.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/BuckarooSdk/Services/ServiceHelper.cs b/BuckarooSdk/Services/ServiceHelper.cs index eb03685..cc26656 100644 --- a/BuckarooSdk/Services/ServiceHelper.cs +++ b/BuckarooSdk/Services/ServiceHelper.cs @@ -105,9 +105,9 @@ private static RequestParameter CreateParameter(object value, string name, strin private static string StringifyParameter(object value) { - if (value is decimal) + if (value is decimal decimalValue) { - return ((decimal)value).ToString(CultureInfo.InvariantCulture); + return decimalValue.ToString(CultureInfo.InvariantCulture); } else { From 6922964b2254bf490d9551fe66642cf509cc9c5b Mon Sep 17 00:00:00 2001 From: Tim van den Hof Date: Thu, 22 Jul 2021 22:19:14 +0200 Subject: [PATCH 32/37] Fix: IDE0059 Unnecessary assignment of a value to 'services' ==> Breaking change, removes 4 year obsolete implementation --- BuckarooSdk/Base/ResponseHandler.cs | 39 ----------------------------- 1 file changed, 39 deletions(-) delete mode 100644 BuckarooSdk/Base/ResponseHandler.cs diff --git a/BuckarooSdk/Base/ResponseHandler.cs b/BuckarooSdk/Base/ResponseHandler.cs deleted file mode 100644 index 359c7fc..0000000 --- a/BuckarooSdk/Base/ResponseHandler.cs +++ /dev/null @@ -1,39 +0,0 @@ -using System; -using System.Collections.Generic; -using BuckarooSdk.DataTypes.Response; -using BuckarooSdk.Services; -using static BuckarooSdk.Constants.Services; - -namespace BuckarooSdk.Base -{ - [Obsolete] - public class ResponseHandler - { - public void HandleResponse(RequestResponse transaction) - { - - } - - public static List RetrieveServices(RequestResponse transactionResponse) - { - var services = transactionResponse.GetServices(); - - return new List(); - } - - internal static ServiceNames ServiceSwitch(List services) - { - var specificService = new ServiceNames(); - foreach (var service in services) - { - switch (service) - { - case ServiceNames.Ideal: - specificService = ServiceNames.Ideal; - break; - } - } - return specificService; - } - } -} From 611d38ea548d22d5e6bc9c27af0dabbb8eac84d5 Mon Sep 17 00:00:00 2001 From: Tim van den Hof Date: Thu, 22 Jul 2021 22:20:38 +0200 Subject: [PATCH 33/37] Fix: IDE0059 Unnecessary assignment of a value to 'list2' --- .../Status/ConfiguredTransactionStatus.cs | 49 ++++++++----------- 1 file changed, 21 insertions(+), 28 deletions(-) diff --git a/BuckarooSdk/Transaction/Status/ConfiguredTransactionStatus.cs b/BuckarooSdk/Transaction/Status/ConfiguredTransactionStatus.cs index fc9c26b..900642e 100644 --- a/BuckarooSdk/Transaction/Status/ConfiguredTransactionStatus.cs +++ b/BuckarooSdk/Transaction/Status/ConfiguredTransactionStatus.cs @@ -1,40 +1,33 @@ using System; -using System.Collections.Generic; -using System.Linq; using BuckarooSdk.DataTypes; using BuckarooSdk.DataTypes.RequestBases; using BuckarooSdk.DataTypes.Response.StatusRequest; namespace BuckarooSdk.Transaction.Status { - public class ConfiguredTransactionStatus - { - internal TransactionStatus TransactionStatus { get; set; } - internal TransactionReference TransactionReference { get; set; } + public class ConfiguredTransactionStatus + { + internal TransactionStatus TransactionStatus { get; set; } + internal TransactionReference TransactionReference { get; set; } - internal ConfiguredTransactionStatus(TransactionStatus transactionStatus) - { - this.TransactionStatus = transactionStatus; + internal ConfiguredTransactionStatus(TransactionStatus transactionStatus) + { + TransactionStatus = transactionStatus; + } - var list = new List(); - var list2 = list.ToList(); - } - + public StatusesRequestResponse GetMultipleStatuses() + { + if (TransactionStatus.Request.Request == null) + { + throw new Exception("This function is a POST method and should therefore contain a message body"); + } - public StatusesRequestResponse GetMultipleStatuses() - { - if (this.TransactionStatus.Request.Request == null) - { - throw new Exception("This function is a POST method and should therefore contain a message body"); - } - return Connection.Connector.SendRequest - (this.TransactionStatus.Request.Request, this.TransactionStatus.TransactionStatusBase, HttpRequestType.Post).Result; - } + return Connection.Connector.SendRequest(TransactionStatus.Request.Request, TransactionStatus.TransactionStatusBase, HttpRequestType.Post).Result; + } - public DataTypes.Response.StatusRequest.TransactionStatus GetSingleStatus() - { - return Connection.Connector.SendRequest - (this.TransactionStatus.Request.Request, this.TransactionStatus.TransactionStatusBase, HttpRequestType.Get).Result; - } - } + public DataTypes.Response.StatusRequest.TransactionStatus GetSingleStatus() + { + return Connection.Connector.SendRequest(TransactionStatus.Request.Request, TransactionStatus.TransactionStatusBase, HttpRequestType.Get).Result; + } + } } From 950b68a07baf56294ee0174e8255c69ff9d94c8d Mon Sep 17 00:00:00 2001 From: Tim van den Hof Date: Thu, 22 Jul 2021 22:21:53 +0200 Subject: [PATCH 34/37] Fix: IDE0059 Unnecessary assignment of a value to 'actionError' --- .../DataTypes/Response/RequestResponse.cs | 34 ++++++++++++++----- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/BuckarooSdk/DataTypes/Response/RequestResponse.cs b/BuckarooSdk/DataTypes/Response/RequestResponse.cs index 50de96b..dea67c9 100644 --- a/BuckarooSdk/DataTypes/Response/RequestResponse.cs +++ b/BuckarooSdk/DataTypes/Response/RequestResponse.cs @@ -21,26 +21,32 @@ public class RequestResponse : IRequestResponse /// is performed. /// public ILogger BuckarooSdkLogger { get; internal set; } + /// /// The transaction key /// public string Key { get; set; } + /// /// The status of the transaction /// public Status.Status Status { get; set; } + /// /// The required action /// public RequiredAction RequiredAction { get; set; } + /// /// The list of services that were available for the transaction request /// public List Services { get; set; } + /// /// The list of custom parameters that was sent with the transaction request /// public CustomParameters CustomParameters { get; set; } + /// /// The list of additional parameters that was sent with the transaction request /// @@ -50,81 +56,97 @@ public class RequestResponse : IRequestResponse /// An overcoupling error overview with list of all errors per error type. /// public RequestErrors RequestErrors { get; set; } + /// /// The invoice used in the request. /// public string Invoice { get; set; } + /// /// The code of the service used for the transaction. /// public string ServiceCode { get; set; } + /// /// boolean that specifies if the transaction was a test transaction. /// public bool IsTest { get; set; } + /// /// The currency that /// public string Currency { get; set; } + /// /// The debit amount of the requested transaction /// public decimal? AmountDebit { get; set; } + /// /// The transaction type that was specified in the transaction request. /// public string TransactionType { get; set; } + /// /// The mutation type of the transaction request. /// public MutationType MutationType { get; set; } + /// /// A list of transactions that are related to the transaction that was requested. /// public List RelatedTransactions { get; set; } + /// /// The consumer message /// public ConsumerMessage ConsumerMessage { get; set; } + /// /// The order value. This is an alphanumerical value. /// public string Order { get; set; } + /// /// The issuing country of the requested transaction. /// public string IssuingCountry { get; set; } + /// /// Boolean value that specifies wheter the requested transactions initiated a startrecurrent. /// public bool StartRecurrent { get; set; } + /// /// Boolean value that specifies wheter the transaction is a recurring transaction. /// public bool Recurring { get; set; } + /// /// The number of the customer that the transaction request was meant for. /// public string CustomerName { get; set; } + /// /// The payer hash value of the requested transaction. /// public string PayerHash { get; set; } + /// /// The key value of the payment. /// public string PaymentKey { get; set; } - public string RawRequest => this.BuckarooSdkLogger.GetRawRequest(); + public string RawRequest => BuckarooSdkLogger.GetRawRequest(); - public string RawResponse => this.BuckarooSdkLogger.GetRawResponse(); + public string RawResponse => BuckarooSdkLogger.GetRawResponse(); /// /// Primary constructor. /// public RequestResponse() { - this.Status = new Status.Status(); + Status = new Status.Status(); } public List GetServices() @@ -141,12 +163,6 @@ public List GetServices() public bool CheckResponseForErrors() { - - foreach (var actionError in RequestErrors.ActionErrors) - { - - } - return false; } From de573bdb0e98a9b943214d8f171db3477439f681 Mon Sep 17 00:00:00 2001 From: Tim van den Hof Date: Fri, 23 Jul 2021 00:04:59 +0200 Subject: [PATCH 35/37] Supress: IDE0059 Unnecessary assignment of a value ==> In tests, see issue #48 --- BuckarooSdk.Tests/BuckarooSdk.Tests.csproj | 1 + .../General/GeneralTransactionTests.cs | 65 +- BuckarooSdk.Tests/GlobalSuppressions.cs | 216 ++++ .../Services/Afterpay/AfterpayTests.cs | 7 +- .../AmericanExpress/AmericanExpressTests.cs | 682 ++++++----- .../Services/Capayable/CapayableTests.cs | 440 +++---- .../CreditManagement/CreditManagementTests.cs | 137 +-- .../Services/IdealQr/IdealQrTests.cs | 103 +- BuckarooSdk.Tests/Services/P24/P24Tests.cs | 110 +- .../Services/PayPal/PayPalTests.cs | 261 ++-- .../Services/PayPerEmail/PayPerEmailTests.cs | 16 +- .../SimpleSepaDirectDebitTests.cs | 126 +- .../Services/Sofort/SofortTests.cs | 239 ++-- BuckarooSdk.Tests/Services/VPay/VPayTests.cs | 604 ++++----- BuckarooSdk.Tests/Services/Visa/VisaTests.cs | 1084 +++++++++-------- 15 files changed, 2162 insertions(+), 1929 deletions(-) create mode 100644 BuckarooSdk.Tests/GlobalSuppressions.cs diff --git a/BuckarooSdk.Tests/BuckarooSdk.Tests.csproj b/BuckarooSdk.Tests/BuckarooSdk.Tests.csproj index 52ba122..8ad3f26 100644 --- a/BuckarooSdk.Tests/BuckarooSdk.Tests.csproj +++ b/BuckarooSdk.Tests/BuckarooSdk.Tests.csproj @@ -328,6 +328,7 @@ + diff --git a/BuckarooSdk.Tests/General/GeneralTransactionTests.cs b/BuckarooSdk.Tests/General/GeneralTransactionTests.cs index c5e255b..fd0cab4 100644 --- a/BuckarooSdk.Tests/General/GeneralTransactionTests.cs +++ b/BuckarooSdk.Tests/General/GeneralTransactionTests.cs @@ -2,7 +2,6 @@ using System.Collections.Generic; using System.Diagnostics; using System.Globalization; -using BuckarooSdk; using BuckarooSdk.DataTypes; using BuckarooSdk.DataTypes.RequestBases; using BuckarooSdk.Tests.Constants; @@ -13,18 +12,19 @@ namespace BuckarooSdk.Tests.General [TestClass] public class GeneralTransactionTests { - private SdkClient SdkClient { get;set; } + private readonly SdkClient _buckarooClient; public GeneralTransactionTests() { - this.SdkClient = new SdkClient(TestSettings.Logger); + _buckarooClient = new SdkClient(TestSettings.Logger); } [TestMethod] public void TransactionSpecificationTest() { - var request = this.SdkClient.CreateRequest() - .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + var request = _buckarooClient + .CreateRequest() + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) .TransactionSpecificationRequest() .SpecificServiceSpecification("ideal", 2); @@ -34,13 +34,14 @@ public void TransactionSpecificationTest() [TestMethod] public void MultipleSpecificationTest() { - var request = this.SdkClient.CreateRequest() - .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + var request = _buckarooClient + .CreateRequest() + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) .TransactionSpecificationRequest() .MultipleServiceSpecifications(new TransactionSpecificationBase() - .AddService("ideal", 2) - .AddService("transfer") - .AddService("paypal") + .AddService("ideal", 2) + .AddService("transfer") + .AddService("paypal") ); var response = request.GetMultipleSpecificiations(); @@ -51,7 +52,8 @@ public void MultipleSpecificationTest() [TestMethod] public void NoServiceTransactionTest() { - var request = this.SdkClient.CreateRequest() + var request = _buckarooClient + .CreateRequest() .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) .TransactionRequest() .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. @@ -69,13 +71,12 @@ public void NoServiceTransactionTest() .Pay(); var response = request.ExecuteAsync(); - } [TestMethod] public void NoServiceTransactionTest2() { - var request = this.SdkClient.CreateRequest(); + var request = _buckarooClient.CreateRequest(); var authRequest = request.Authenticate( TestSettings.WebsiteKey, TestSettings.SecretKey, TestSettings.Test, CultureInfo.GetCultureInfo("nl-NL"), @@ -108,7 +109,9 @@ public void CancelTransactionTest() { "94436C07DE6F44EBACBF26CB561F17B3", }; - var request = this.SdkClient.CreateRequest() + + var request = _buckarooClient + .CreateRequest() .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) .CancelTransactionRequest() .CancelMultiple(new CancelTransactionBase(transactionsToBeCanceled)); @@ -122,8 +125,9 @@ public void TransactionStatusTest() { const string key = "12890D0FFE9F4840A69126DA2A93F1B6"; - var request = this.SdkClient.CreateRequest() - .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + var request = _buckarooClient + .CreateRequest() + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) .TransactionStatusRequest() .Status(key); @@ -132,38 +136,32 @@ public void TransactionStatusTest() if (requestResponse.Status.Code.Code == BuckarooSdk.Constants.Status.WaitingForConsumer) { Process.Start(""); - - } - if (requestResponse.Status.Code.Code == BuckarooSdk.Constants.Status.Success) - { - } //var logging = this.SdkClient.LoggerFactory.GetFullLog(); //Console.WriteLine(logging); - } [TestMethod] public void InvoiceInfoTest() { - const string transactionKey = "244BD8425FB941B7B93E70F5AED31F3A"; - var request = this.SdkClient.CreateRequest() - .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + var request = _buckarooClient + .CreateRequest() + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) .TransactionInvoiceInfoRequest() .SpecificInvoiceInfo(transactionKey); var response = request.GetSingleInvoiceInfoRequest(); - } [TestMethod] public void InvoicesInfoTest() { - var request = this.SdkClient.CreateRequest() - .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + var request = _buckarooClient + .CreateRequest() + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) .TransactionInvoiceInfoRequest() .MultipleInvoicesInfo(new TransactionInvoiceInfoBase() { @@ -186,15 +184,14 @@ public void RefundInfoTest() { const string transactionKey = "8CC823FB3A9545B99608541DF4BC4DFF"; - var request = this.SdkClient.CreateRequest() - .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + var request = _buckarooClient + .CreateRequest() + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) .TransactionRefundInfoRequest() .SpecificConfiguredTransactionRefundInfo(transactionKey); - var response = request.GetSingleRefundInfo(); - Console.WriteLine(); } @@ -209,7 +206,7 @@ public void RefundsInfoTest_Obsolete() "fdaswerqrgtdgfsasdffwe", }; - var request = SdkClient.CreateRequest() + var request = _buckarooClient.CreateRequest() .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) .TransactionRefundInfoRequest() .MultipleConfiguredTransactionRefundInfo(new TransactionRefundInfoBase(transactionKeyList)); @@ -220,7 +217,7 @@ public void RefundsInfoTest_Obsolete() [TestMethod] public void RefundsInfoTest() { - var request = SdkClient.CreateRequest() + var request = _buckarooClient.CreateRequest() .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) .TransactionRefundInfoRequest() .MultipleConfiguredTransactionRefundInfo(); diff --git a/BuckarooSdk.Tests/GlobalSuppressions.cs b/BuckarooSdk.Tests/GlobalSuppressions.cs new file mode 100644 index 0000000..7e74f4c --- /dev/null +++ b/BuckarooSdk.Tests/GlobalSuppressions.cs @@ -0,0 +1,216 @@ +// This file is used by Code Analysis to maintain SuppressMessage +// attributes that are applied to this project. +// Project-level suppressions either have no target or are given +// a specific target and scoped to a namespace, type, member, etc. + +using System.Diagnostics.CodeAnalysis; + +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.General.GeneralTransactionTests.NoServiceTransactionTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.General.GeneralTransactionTests.RefundInfoTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.General.GeneralTransactionTests.TransactionSpecificationTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.General.GeneralTransactionTests.NoServiceTransactionTest2")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.General.GeneralTransactionTests.CancelTransactionTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.General.GeneralTransactionTests.RefundsInfoTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.General.GeneralTransactionTests.RefundsInfoTest_Obsolete")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.General.GeneralTransactionTests.InvoiceInfoTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.General.GeneralTransactionTests.InvoicesInfoTest")] + +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Afterpay.AfterpayTests.CancelAuthorizeTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Afterpay.AfterpayTests.PayTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Afterpay.AfterpayTests.RefundUndefinedTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Afterpay.AfterpayTests.RefundReturnTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Afterpay.AfterpayTests.RefundTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Afterpay.AfterpayTests.CaptureTest")] + +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.AmericanExpress.AmericanExpressTests.AuthorizeEncryptedTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.AmericanExpress.AmericanExpressTests.PayRemainderTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.AmericanExpress.AmericanExpressTests.CaptureTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.AmericanExpress.AmericanExpressTests.PayRecurrentTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.AmericanExpress.AmericanExpressTests.RefundTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.AmericanExpress.AmericanExpressTests.AuthorizeTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.AmericanExpress.AmericanExpressTests.PayEncryptedTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.AmericanExpress.AmericanExpressTests.PayTest")] + +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Bancontact.BancontactTests.PayTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Bancontact.BancontactTests.RefundTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Bancontact.BancontactTests.PayRemainderTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Bancontact.BancontactTests.PayEncryptedTest")] + +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.BuckarooVoucher.BuckarooVoucherTests.PayTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.BuckarooVoucher.BuckarooVoucherTests.RefundTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.BuckarooVoucher.BuckarooVoucherTests.GetBalanceTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.BuckarooVoucher.BuckarooVoucherTests.CreateApplicationTest")] + +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.BuckarooWallet.BuckarooWalletTests.PayTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.BuckarooWallet.BuckarooWalletTests.RefundTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.BuckarooWallet.BuckarooWalletTests.GetBalanceTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.BuckarooWallet.BuckarooWalletTests.CreateApplicationTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.BuckarooWallet.BuckarooWalletTests.DepositTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.BuckarooWallet.BuckarooWalletTests.UpdateTest")] + +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Capayable.CapayableTests.PayTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Capayable.CapayableTests.RefundTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Capayable.CapayableTests.PayInInstallmentsTest")] + +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.CarteBancaire.CarteBancaireTests.PayTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.CarteBancaire.CarteBancaireTests.RefundTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.CarteBancaire.CarteBancaireTests.AuthorizeTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.CarteBancaire.CarteBancaireTests.CaptureTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.CarteBancaire.CarteBancaireTests.PayRecurrentTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.CarteBancaire.CarteBancaireTests.PayRemainderTest")] + +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.CarteBleueVisa.CarteBleueVisaTests.PayTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.CarteBleueVisa.CarteBleueVisaTests.RefundTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.CarteBleueVisa.CarteBleueVisaTests.AuthorizeTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.CarteBleueVisa.CarteBleueVisaTests.CaptureTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.CarteBleueVisa.CarteBleueVisaTests.PayRecurrentTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.CarteBleueVisa.CarteBleueVisaTests.PayRemainderTest")] + +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.CreditManagement.CreditManagementTests.CreateInvoice")] + +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.CustomGiftcard.CustomGiftcardTests.PayTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.CustomGiftcard.CustomGiftcardTests.RefundTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.CustomGiftcard.CustomGiftcardTests.PayRemainderTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.CustomGiftcard.CustomGiftcardTests.CardInfoTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.CustomGiftcard.CustomGiftcardTests.PayTest2")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.CustomGiftcard.CustomGiftcardTests.RefundTest2")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.CustomGiftcard.CustomGiftcardTests.PayRemainderTest2")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.CustomGiftcard.CustomGiftcardTests.CardInfoTest2")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.CustomGiftcard.CustomGiftcardTests.PayTest3")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.CustomGiftcard.CustomGiftcardTests.RefundTest3")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.CustomGiftcard.CustomGiftcardTests.PayRemainderTest3")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.CustomGiftcard.CustomGiftcardTests.CardInfoTest3")] + +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Dankort.DankortTests.PayTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Dankort.DankortTests.RefundTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Dankort.DankortTests.AuthorizeTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Dankort.DankortTests.CaptureTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Dankort.DankortTests.PayRecurrentTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Dankort.DankortTests.PayRemainderTest")] + +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.EMandate.EMandateTests.CreateMandateTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.EMandate.EMandateTests.GetIssuerListTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.EMandate.EMandateTests.GetStatusTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.EMandate.EMandateTests.ModifyMandateTest")] + +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.EPS.EPSTests.PayTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.EPS.EPSTests.RefundTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.EPS.EPSTests.PayRemainderTest")] + +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Giftcard.HuisTuinGiftcardTests.PayTest")] + +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Giropay.GiropayTests.PayTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Giropay.GiropayTests.RefundTest")] + +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Ideal.IdealTests.PayRemainderTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Ideal.IdealTests.PayWithCreditManagementTest")] + +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.IdealQr.IdealQrTests.GenerateTest")] + +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.INGHomePay.INGHomePayTests.PayTest")] + +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Ippies.IppiesTests.PayTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Ippies.IppiesTests.RefundTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Ippies.IppiesTests.PayRemainderTest")] + +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.KbcPaymentButton.KbcPaymentButtonTests.PayTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.KbcPaymentButton.KbcPaymentButtonTests.RefundTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.KbcPaymentButton.KbcPaymentButtonTests.PayRemainderTest")] + +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Maestro.MaestroTests.PayTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Maestro.MaestroTests.RefundTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Maestro.MaestroTests.AuthorizeTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Maestro.MaestroTests.CaptureTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Maestro.MaestroTests.PayRecurrent")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Maestro.MaestroTests.PayRemainder")] + +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.MasterCard.MasterCardTests.PayTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.MasterCard.MasterCardTests.RefundTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.MasterCard.MasterCardTests.AuthorizeTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.MasterCard.MasterCardTests.CaptureTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.MasterCard.MasterCardTests.PayRecurrentTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.MasterCard.MasterCardTests.PayRemainderTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.MasterCard.MasterCardTests.CancelAuthorizeTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.MasterCard.MasterCardTests.PayEncryptedTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.MasterCard.MasterCardTests.AuthorizeEncryptedTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.MasterCard.MasterCardTests.RefundTestCreditCard")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.MasterCard.MasterCardTests.AuthorizeTestCreditCard")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.MasterCard.MasterCardTests.CaptureTestCreditCard")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.MasterCard.MasterCardTests.PayTestCreditCard")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.MasterCard.MasterCardTests.CancelAuthorizeTestCreditCard")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.MasterCard.MasterCardTests.PayRecurrentTestCreditCard")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.MasterCard.MasterCardTests.PayRemainderTestCreditCard")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.MasterCard.MasterCardTests.PayEncryptedTestCreditCard")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.MasterCard.MasterCardTests.AuthorizeEncryptedTestCreditCard")] + +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Nexi.NexiTests.PayTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Nexi.NexiTests.PayRemainderTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Nexi.NexiTests.CaptureTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Nexi.NexiTests.PayRecurrentTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Nexi.NexiTests.RefundTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Nexi.NexiTests.AuthorizeTest")] + +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Notification.NotificationTests.ExtraInfoTest")] + +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.OnlineGiroLite.OnlineGiroLiteTests.PaymentInvitationTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.OnlineGiro.OnlineGiroTests.PaymentInvitationTest")] + +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.P24.P24Tests.PayTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.P24.P24Tests.RefundTest")] + +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.PayPal.PayPalTests.RefundTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.PayPal.PayPalTests.PayRemainderTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.PayPal.PayPalTests.ExtraInfoTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.PayPal.PayPalTests.PayRecurrentTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.PayPal.PayPalTests.PayTest")] + +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.PayPerEmail.PayPerEmailTests.PaymentInvitationTest")] + +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.PaysafeCard.PaysafeCardTests.PayTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.PaysafeCard.PaysafeCardTests.PayRemainderTest")] + +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.SimpleSepaDirectDebit.SimpleSepaDirectDebitTests.RefundTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.SimpleSepaDirectDebit.SimpleSepaDirectDebitTests.PayTest")] + +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Sofort.SofortTests.PayTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Sofort.SofortTests.RefundTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Sofort.SofortTests.PayRemainderTest")] + +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Transfer.TransferTests.PayTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Transfer.TransferTests.RefundTest")] + +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.VisaElectron.VisaElectronTests.PayTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.VisaElectron.VisaElectronTests.RefundTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.VisaElectron.VisaElectronTests.AuthorizeTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.VisaElectron.VisaElectronTests.CaptureTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.VisaElectron.VisaElectronTests.PayRecurrentTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.VisaElectron.VisaElectronTests.PayRemainderTest")] + +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Visa.VisaTests.PayTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Visa.VisaTests.RefundTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Visa.VisaTests.AuthorizeTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Visa.VisaTests.CaptureTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Visa.VisaTests.PayRecurrentTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Visa.VisaTests.PayRemainderTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Visa.VisaTests.CancelAuthorizeTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Visa.VisaTests.PayEncryptedTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Visa.VisaTests.AuthorizeEncryptedTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Visa.VisaTests.PayTestCreditCard")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Visa.VisaTests.RefundTestCreditCard")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Visa.VisaTests.AuthorizeTestCreditCard")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Visa.VisaTests.CaptureTestCreditCard")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Visa.VisaTests.CancelAuthorizeTestCreditCard")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Visa.VisaTests.PayRecurrentTestCreditCard")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Visa.VisaTests.PayRemainderTestCreditCard")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Visa.VisaTests.PayEncryptedTestCreditCard")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.Visa.VisaTests.AuthorizeEncryptedTestCreditCard")] + +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.VPay.VPayTests.PayTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.VPay.VPayTests.RefundTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.VPay.VPayTests.AuthorizeTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.VPay.VPayTests.CaptureTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.VPay.VPayTests.CancelAuthorizeTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.VPay.VPayTests.PayRecurrentTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.VPay.VPayTests.PayRemainderTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.VPay.VPayTests.PayEncryptedTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.VPay.VPayTests.AuthorizeEncryptedTest")] diff --git a/BuckarooSdk.Tests/Services/Afterpay/AfterpayTests.cs b/BuckarooSdk.Tests/Services/Afterpay/AfterpayTests.cs index 767c329..628fb21 100644 --- a/BuckarooSdk.Tests/Services/Afterpay/AfterpayTests.cs +++ b/BuckarooSdk.Tests/Services/Afterpay/AfterpayTests.cs @@ -12,19 +12,20 @@ namespace BuckarooSdk.Tests.Services.Afterpay public class AfterpayTests { private SdkClient _buckarooClient; + private string TestName => "Afterpay";//nameof(AfterpayTests).ToUpper(); [TestInitialize] public void Setup() { - this._buckarooClient = new SdkClient(TestSettings.Logger); + _buckarooClient = new SdkClient(TestSettings.Logger); } [TestMethod] public void CancelAuthorizeTest() { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. + var request = _buckarooClient + .CreateRequest(new StandardLogger()) // Create a request. .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) .TransactionRequest() // One of the request type options. .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. diff --git a/BuckarooSdk.Tests/Services/AmericanExpress/AmericanExpressTests.cs b/BuckarooSdk.Tests/Services/AmericanExpress/AmericanExpressTests.cs index 5e5a3dc..ee2a32a 100644 --- a/BuckarooSdk.Tests/Services/AmericanExpress/AmericanExpressTests.cs +++ b/BuckarooSdk.Tests/Services/AmericanExpress/AmericanExpressTests.cs @@ -9,346 +9,344 @@ namespace BuckarooSdk.Tests.Services.AmericanExpress { [TestClass] - public class AmericanExpressTests - - { - private SdkClient _buckarooClient; - private string TestName => nameof(AmericanExpressTests).ToUpper(); - - [TestInitialize] - public void Setup() - { - this._buckarooClient = new SdkClient(Constants.TestSettings.Logger); - } - - [TestMethod] - public void PayTest() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - AmountDebit = 2, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .AmericanExpress() // Choose the paymentmethod you want to use - .Pay(new AmericanExpressPayRequest // choose the action you want to use and provide the payment method specific info. - { - RecurringInterval = 0, - ShippingMethodCode = string.Empty, - Recurring = string.Empty, - CustomerIPAddress = string.Empty, - VerifyAddress = false, - CustomerHTTPBrowserType = string.Empty, - CustomerHostServerName = string.Empty, - RecurringTimeType = string.Empty, - CustomerCardName = string.Empty, - AmexCreditcardNumber = string.Empty, - CVV4 = string.Empty, - ShippingFirstName = string.Empty, - ShippingLastName = string.Empty, - ShippingStreet = string.Empty, - CardExpirationDate = DateTime.MinValue, - ShippingHouseNumber = string.Empty, - ShippingHouseNumberSuffix = string.Empty, - ShippingPostalCode = string.Empty, - ShippingCountryCode = string.Empty, - ShippingPhoneNumber = string.Empty, - CustomerEmail = string.Empty, - BillingFirstName = string.Empty, - BillingLastName = string.Empty, - BillingStreet = string.Empty, - BillingHouseNumber = string.Empty, - BillingHouseNumberSuffix = string.Empty, - BillingPostalCode = string.Empty, - BillingPhoneNumber = string.Empty, - }); - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - - [TestMethod] - public void RefundTest() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - OriginalTransactionKey = string.Empty, - AmountCredit = 2, - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .AmericanExpress() // Choose the paymentmethod you want to use - .Refund(new AmericanExpressRefundRequest // choose the action you want to use and provide the payment method specific info. - { - - }); - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - - [TestMethod] - public void AuthorizeTest() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - AmountDebit = 2, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .AmericanExpress() // Choose the paymentmethod you want to use - .Authorize(new AmericanExpressAuthorizeRequest // choose the action you want to use and provide the payment method specific info. - { - RecurringInterval = 0, - ShippingMethodCode = string.Empty, - Recurring = string.Empty, - CustomerIPAddress = string.Empty, - VerifyAddress = false, - CustomerHTTPBrowserType = string.Empty, - CustomerHostServerName = string.Empty, - RecurringTimeType = string.Empty, - ShippingFirstName = string.Empty, - ShippingLastName = string.Empty, - ShippingStreet = string.Empty, - ShippingHouseNumber = string.Empty, - ShippingHouseNumberSuffix = string.Empty, - ShippingPostalCode = string.Empty, - ShippingCountryCode = string.Empty, - ShippingPhoneNumber = string.Empty, - CustomerEmail = string.Empty, - BillingFirstName = string.Empty, - BillingLastName = string.Empty, - BillingStreet = string.Empty, - BillingHouseNumber = string.Empty, - BillingHouseNumberSuffix = string.Empty, - BillingPostalCode = string.Empty, - BillingPhoneNumber = string.Empty, - - }); - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - - [TestMethod] - public void CaptureTest() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - AmountDebit = 2, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - OriginalTransactionKey = "", - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .AmericanExpress() // Choose the paymentmethod you want to use - .Capture(new AmericanExpressCaptureRequest // choose the action you want to use and provide the payment method specific info. - { - - }); - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - - [TestMethod] - public void PayRecurrentTest() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - AmountDebit = 2, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - OriginalTransactionKey = "", - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .AmericanExpress() // Choose the paymentmethod you want to use - .PayRecurrent(new AmericanExpressPayRecurrentRequest // choose the action you want to use and provide the payment method specific info. - { - - }); - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - - [TestMethod] - public void PayEncryptedTest() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - AmountDebit = 2, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .AmericanExpress() // Choose the paymentmethod you want to use - .PayEncrypted(new AmericanExpressPayEncryptedRequest // choose the action you want to use and provide the payment method specific info. - { - EncryptedCardData = string.Empty, - - }); - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - - [TestMethod] - public void AuthorizeEncryptedTest() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - AmountDebit = 2, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .AmericanExpress() // Choose the paymentmethod you want to use - .AuthorizeEncrypted(new AmericanExpressAuthorizeEncryptedRequest // choose the action you want to use and provide the payment method specific info. - { - EncryptedCardData = string.Empty, - - }); - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - - [TestMethod] - public void PayRemainderTest() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - AmountDebit = 2, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - OriginalTransactionKey = "", - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .AmericanExpress() // Choose the paymentmethod you want to use - .PayRemainder(new AmericanExpressPayRemainderRequest // choose the action you want to use and provide the payment method specific info. - { - RecurringInterval = 0, - ShippingMethodCode = string.Empty, - Recurring = string.Empty, - CustomerIPAddress = string.Empty, - VerifyAddress = false, - CustomerHTTPBrowserType = string.Empty, - CustomerHostServerName = string.Empty, - RecurringTimeType = string.Empty, - ShippingFirstName = string.Empty, - ShippingLastName = string.Empty, - ShippingStreet = string.Empty, - ShippingHouseNumber = string.Empty, - ShippingHouseNumberSuffix = string.Empty, - ShippingPostalCode = string.Empty, - ShippingCountryCode = string.Empty, - ShippingPhoneNumber = string.Empty, - CustomerEmail = string.Empty, - BillingFirstName = string.Empty, - BillingLastName = string.Empty, - BillingStreet = string.Empty, - BillingHouseNumber = string.Empty, - BillingHouseNumberSuffix = string.Empty, - BillingPostalCode = string.Empty, - BillingPhoneNumber = string.Empty, - - }); - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - - } + public class AmericanExpressTests + + { + private SdkClient _buckarooClient; + + private string TestName => nameof(AmericanExpressTests).ToUpper(); + + [TestInitialize] + public void Setup() + { + _buckarooClient = new SdkClient(TestSettings.Logger); + } + + [TestMethod] + public void PayTest() + { + var request = _buckarooClient + .CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + AmountDebit = 2, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .AmericanExpress() // Choose the paymentmethod you want to use + .Pay(new AmericanExpressPayRequest // choose the action you want to use and provide the payment method specific info. + { + RecurringInterval = 0, + ShippingMethodCode = string.Empty, + Recurring = string.Empty, + CustomerIPAddress = string.Empty, + VerifyAddress = false, + CustomerHTTPBrowserType = string.Empty, + CustomerHostServerName = string.Empty, + RecurringTimeType = string.Empty, + CustomerCardName = string.Empty, + AmexCreditcardNumber = string.Empty, + CVV4 = string.Empty, + ShippingFirstName = string.Empty, + ShippingLastName = string.Empty, + ShippingStreet = string.Empty, + CardExpirationDate = DateTime.MinValue, + ShippingHouseNumber = string.Empty, + ShippingHouseNumberSuffix = string.Empty, + ShippingPostalCode = string.Empty, + ShippingCountryCode = string.Empty, + ShippingPhoneNumber = string.Empty, + CustomerEmail = string.Empty, + BillingFirstName = string.Empty, + BillingLastName = string.Empty, + BillingStreet = string.Empty, + BillingHouseNumber = string.Empty, + BillingHouseNumberSuffix = string.Empty, + BillingPostalCode = string.Empty, + BillingPhoneNumber = string.Empty, + }); + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + + [TestMethod] + public void RefundTest() + { + var request = _buckarooClient.CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + OriginalTransactionKey = string.Empty, + AmountCredit = 2, + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .AmericanExpress() // Choose the paymentmethod you want to use + .Refund(new AmericanExpressRefundRequest // choose the action you want to use and provide the payment method specific info. + { + + }); + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + + [TestMethod] + public void AuthorizeTest() + { + var request = _buckarooClient.CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + AmountDebit = 2, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .AmericanExpress() // Choose the paymentmethod you want to use + .Authorize(new AmericanExpressAuthorizeRequest // choose the action you want to use and provide the payment method specific info. + { + RecurringInterval = 0, + ShippingMethodCode = string.Empty, + Recurring = string.Empty, + CustomerIPAddress = string.Empty, + VerifyAddress = false, + CustomerHTTPBrowserType = string.Empty, + CustomerHostServerName = string.Empty, + RecurringTimeType = string.Empty, + ShippingFirstName = string.Empty, + ShippingLastName = string.Empty, + ShippingStreet = string.Empty, + ShippingHouseNumber = string.Empty, + ShippingHouseNumberSuffix = string.Empty, + ShippingPostalCode = string.Empty, + ShippingCountryCode = string.Empty, + ShippingPhoneNumber = string.Empty, + CustomerEmail = string.Empty, + BillingFirstName = string.Empty, + BillingLastName = string.Empty, + BillingStreet = string.Empty, + BillingHouseNumber = string.Empty, + BillingHouseNumberSuffix = string.Empty, + BillingPostalCode = string.Empty, + BillingPhoneNumber = string.Empty, + + }); + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + + [TestMethod] + public void CaptureTest() + { + var request = _buckarooClient + .CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + AmountDebit = 2, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + OriginalTransactionKey = "", + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .AmericanExpress() // Choose the paymentmethod you want to use + .Capture(new AmericanExpressCaptureRequest // choose the action you want to use and provide the payment method specific info. + { + + }); + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + + [TestMethod] + public void PayRecurrentTest() + { + var request = _buckarooClient + .CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + AmountDebit = 2, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + OriginalTransactionKey = "", + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .AmericanExpress() // Choose the paymentmethod you want to use + .PayRecurrent(new AmericanExpressPayRecurrentRequest // choose the action you want to use and provide the payment method specific info. + { + + }); + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + + [TestMethod] + public void PayEncryptedTest() + { + var request = _buckarooClient + .CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + AmountDebit = 2, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .AmericanExpress() // Choose the paymentmethod you want to use + .PayEncrypted(new AmericanExpressPayEncryptedRequest // choose the action you want to use and provide the payment method specific info. + { + EncryptedCardData = string.Empty, + + }); + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + + [TestMethod] + public void AuthorizeEncryptedTest() + { + var request = _buckarooClient + .CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + AmountDebit = 2, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .AmericanExpress() // Choose the paymentmethod you want to use + .AuthorizeEncrypted(new AmericanExpressAuthorizeEncryptedRequest // choose the action you want to use and provide the payment method specific info. + { + EncryptedCardData = string.Empty, + + }); + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + + [TestMethod] + public void PayRemainderTest() + { + var request = _buckarooClient + .CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + AmountDebit = 2, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + OriginalTransactionKey = "", + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .AmericanExpress() // Choose the paymentmethod you want to use + .PayRemainder(new AmericanExpressPayRemainderRequest // choose the action you want to use and provide the payment method specific info. + { + RecurringInterval = 0, + ShippingMethodCode = string.Empty, + Recurring = string.Empty, + CustomerIPAddress = string.Empty, + VerifyAddress = false, + CustomerHTTPBrowserType = string.Empty, + CustomerHostServerName = string.Empty, + RecurringTimeType = string.Empty, + ShippingFirstName = string.Empty, + ShippingLastName = string.Empty, + ShippingStreet = string.Empty, + ShippingHouseNumber = string.Empty, + ShippingHouseNumberSuffix = string.Empty, + ShippingPostalCode = string.Empty, + ShippingCountryCode = string.Empty, + ShippingPhoneNumber = string.Empty, + CustomerEmail = string.Empty, + BillingFirstName = string.Empty, + BillingLastName = string.Empty, + BillingStreet = string.Empty, + BillingHouseNumber = string.Empty, + BillingHouseNumberSuffix = string.Empty, + BillingPostalCode = string.Empty, + BillingPhoneNumber = string.Empty, + + }); + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + } } diff --git a/BuckarooSdk.Tests/Services/Capayable/CapayableTests.cs b/BuckarooSdk.Tests/Services/Capayable/CapayableTests.cs index 0fd6d9e..a8f6fac 100644 --- a/BuckarooSdk.Tests/Services/Capayable/CapayableTests.cs +++ b/BuckarooSdk.Tests/Services/Capayable/CapayableTests.cs @@ -1,230 +1,230 @@ +using System; +using System.Globalization; +using BuckarooSdk.DataTypes.ParameterGroups.Capayable; using BuckarooSdk.DataTypes.RequestBases; using BuckarooSdk.Logging; +using BuckarooSdk.Services.Capayable; using BuckarooSdk.Tests.Constants; using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Diagnostics; -using System.Globalization; -using BuckarooSdk.DataTypes.ParameterGroups.Capayable; -using BuckarooSdk.Services.Capayable; namespace BuckarooSdk.Tests.Services.Capayable { - [TestClass] - public class CapayableTests - { - private SdkClient _buckarooClient; - private string TestName => nameof(CapayableTests).ToUpper(); - - [TestInitialize] - public void Setup() - { - this._buckarooClient = new SdkClient(TestSettings.Logger); - } - - [TestMethod] - public void PayTest() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - ClientIp = new DataTypes.IpAddress() - { - Type = DataTypes.InternetProtocolVersion.IPv4, - Address = "127.0.0.1" - }, - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - AmountDebit = 2, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .Capayable() // Choose the paymentmethod you want to use - .Pay(new CapayablePayRequest // choose the action you want to use and provide the payment method specific info. - { - CustomerType = "Debtor", // Mandatory - InvoiceDate = DateTime.MinValue, // Mandatory - Person = new Person - { - LastName = "de Tester",// Mandatory - Initials = "JdT",// Mandatory - Gender = 1,// Mandatory - Culture = "nl-NL",// Mandatory - BirthDate = DateTime.MinValue,// Mandatory - }, - Address = new Address - { - Street = "Straatje",// Mandatory - HouseNumber = 1,// Mandatory - HouseNumberSuffix = string.Empty, - ZipCode = "1234AB",// Mandatory - City = "Stadje",// Mandatory - Country = "NL",// Mandatory - }, - Phone = new CustomerPhone - { - Phone = "11187654321",// Mandatory - Fax = string.Empty, - }, - Email = new EmailAddress - { - Email = "jan@jdt.nl",// Mandatory - }, - Company = new Company - { - Name = string.Empty, - ChamberOfCommerce = string.Empty, - }, - ProductLine = new ProductLine - { - Code = "1234",// Mandatory - Name = "ProductNaam",// Mandatory - Quantity = 1,// Mandatory - Price = 12,// Mandatory - }, - SubTotalLine = new SubTotalLine - { - Name = string.Empty, - Value = string.Empty, - }, - }); - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - - [TestMethod] - public void RefundTest() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - ClientIp = new DataTypes.IpAddress() - { - Type = DataTypes.InternetProtocolVersion.IPv4, - Address = "127.0.0.1" - }, - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - OriginalTransactionKey = "", - AmountCredit = 2, - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .Capayable() // Choose the paymentmethod you want to use - .Refund(new CapayableRefundRequest // choose the action you want to use and provide the payment method specific info. - { - - }); - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - - [TestMethod] - public void PayInInstallmentsTest() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - ClientIp = new DataTypes.IpAddress() - { - Type = DataTypes.InternetProtocolVersion.IPv4, - Address = "127.0.0.1" - }, - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - AmountDebit = 2, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .Capayable() // Choose the paymentmethod you want to use - .PayInInstallments(new CapayablePayInInstallmentsRequest // choose the action you want to use and provide the payment method specific info. - { - IsInThreeGuarantee = string.Empty, - CustomerType = "Debtor", // Mandatory - InvoiceDate = DateTime.MinValue, // Mandatory - Person = new Person - { - LastName = "de Tester",// Mandatory - Initials = "JdT",// Mandatory - Gender = 1,// Mandatory - Culture = "nl-NL",// Mandatory - BirthDate = DateTime.MinValue,// Mandatory - }, - Address = new Address - { - Street = "Straatje",// Mandatory - HouseNumber = 1,// Mandatory - HouseNumberSuffix = string.Empty, - ZipCode = "1234AB",// Mandatory - City = "Stadje",// Mandatory - Country = "NL",// Mandatory - }, - Phone = new CustomerPhone - { - Phone = "11187654321",// Mandatory - Fax = string.Empty, - }, - Email = new EmailAddress - { - Email = "jan@jdt.nl",// Mandatory - }, - Company = new Company - { - Name = string.Empty, - ChamberOfCommerce = string.Empty, - }, - ProductLine = new ProductLine - { - Code = "1234",// Mandatory - Name = "ProductNaam",// Mandatory - Quantity = 1,// Mandatory - Price = 12,// Mandatory - }, - SubTotalLine = new SubTotalLine - { - Name = string.Empty, - Value = string.Empty, - }, - }); - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - - [TestCleanup] - public void TearDown() - { - this._buckarooClient = null; - } - } + [TestClass] + public class CapayableTests + { + private SdkClient _buckarooClient; + + private string TestName => nameof(CapayableTests).ToUpper(); + + [TestInitialize] + public void Setup() + { + _buckarooClient = new SdkClient(TestSettings.Logger); + } + + [TestMethod] + public void PayTest() + { + var request = _buckarooClient + .CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + ClientIp = new DataTypes.IpAddress() + { + Type = DataTypes.InternetProtocolVersion.IPv4, + Address = "127.0.0.1" + }, + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + AmountDebit = 2, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .Capayable() // Choose the paymentmethod you want to use + .Pay(new CapayablePayRequest // choose the action you want to use and provide the payment method specific info. + { + CustomerType = "Debtor", // Mandatory + InvoiceDate = DateTime.MinValue, // Mandatory + Person = new Person + { + LastName = "de Tester",// Mandatory + Initials = "JdT",// Mandatory + Gender = 1,// Mandatory + Culture = "nl-NL",// Mandatory + BirthDate = DateTime.MinValue,// Mandatory + }, + Address = new Address + { + Street = "Straatje",// Mandatory + HouseNumber = 1,// Mandatory + HouseNumberSuffix = string.Empty, + ZipCode = "1234AB",// Mandatory + City = "Stadje",// Mandatory + Country = "NL",// Mandatory + }, + Phone = new CustomerPhone + { + Phone = "11187654321",// Mandatory + Fax = string.Empty, + }, + Email = new EmailAddress + { + Email = "jan@jdt.nl",// Mandatory + }, + Company = new Company + { + Name = string.Empty, + ChamberOfCommerce = string.Empty, + }, + ProductLine = new ProductLine + { + Code = "1234",// Mandatory + Name = "ProductNaam",// Mandatory + Quantity = 1,// Mandatory + Price = 12,// Mandatory + }, + SubTotalLine = new SubTotalLine + { + Name = string.Empty, + Value = string.Empty, + }, + }); + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + + [TestMethod] + public void RefundTest() + { + var request = _buckarooClient + .CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + ClientIp = new DataTypes.IpAddress() + { + Type = DataTypes.InternetProtocolVersion.IPv4, + Address = "127.0.0.1" + }, + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + OriginalTransactionKey = "", + AmountCredit = 2, + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .Capayable() // Choose the paymentmethod you want to use + .Refund(new CapayableRefundRequest // choose the action you want to use and provide the payment method specific info. + { + + }); + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + + [TestMethod] + public void PayInInstallmentsTest() + { + var request = _buckarooClient + .CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + ClientIp = new DataTypes.IpAddress() + { + Type = DataTypes.InternetProtocolVersion.IPv4, + Address = "127.0.0.1" + }, + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + AmountDebit = 2, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .Capayable() // Choose the paymentmethod you want to use + .PayInInstallments(new CapayablePayInInstallmentsRequest // choose the action you want to use and provide the payment method specific info. + { + IsInThreeGuarantee = string.Empty, + CustomerType = "Debtor", // Mandatory + InvoiceDate = DateTime.MinValue, // Mandatory + Person = new Person + { + LastName = "de Tester",// Mandatory + Initials = "JdT",// Mandatory + Gender = 1,// Mandatory + Culture = "nl-NL",// Mandatory + BirthDate = DateTime.MinValue,// Mandatory + }, + Address = new Address + { + Street = "Straatje",// Mandatory + HouseNumber = 1,// Mandatory + HouseNumberSuffix = string.Empty, + ZipCode = "1234AB",// Mandatory + City = "Stadje",// Mandatory + Country = "NL",// Mandatory + }, + Phone = new CustomerPhone + { + Phone = "11187654321",// Mandatory + Fax = string.Empty, + }, + Email = new EmailAddress + { + Email = "jan@jdt.nl",// Mandatory + }, + Company = new Company + { + Name = string.Empty, + ChamberOfCommerce = string.Empty, + }, + ProductLine = new ProductLine + { + Code = "1234",// Mandatory + Name = "ProductNaam",// Mandatory + Quantity = 1,// Mandatory + Price = 12,// Mandatory + }, + SubTotalLine = new SubTotalLine + { + Name = string.Empty, + Value = string.Empty, + }, + }); + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + + [TestCleanup] + public void TearDown() + { + _buckarooClient = null; + } + } } diff --git a/BuckarooSdk.Tests/Services/CreditManagement/CreditManagementTests.cs b/BuckarooSdk.Tests/Services/CreditManagement/CreditManagementTests.cs index 46372de..58b9784 100644 --- a/BuckarooSdk.Tests/Services/CreditManagement/CreditManagementTests.cs +++ b/BuckarooSdk.Tests/Services/CreditManagement/CreditManagementTests.cs @@ -1,81 +1,82 @@ using System; -using BuckarooSdk.Services.CreditManagement.DataRequest; -using Microsoft.VisualStudio.TestTools.UnitTesting; using System.Globalization; using BuckarooSdk.DataTypes.ParameterGroups.CreditManagement3; using BuckarooSdk.DataTypes.RequestBases; +using BuckarooSdk.Services.CreditManagement.DataRequest; using BuckarooSdk.Tests.Constants; +using Microsoft.VisualStudio.TestTools.UnitTesting; namespace BuckarooSdk.Tests.Services.CreditManagement { - [TestClass] - public class CreditManagementTests - { - private SdkClient _sdkClient; + [TestClass] + public class CreditManagementTests + { + private SdkClient _sdkClient; - [TestInitialize] - public void Setup() - { - this._sdkClient = new SdkClient(TestSettings.Logger); - } + [TestInitialize] + public void Setup() + { + _sdkClient = new SdkClient(TestSettings.Logger); + } - [TestMethod] - public void CreateInvoice() - { - var datarequest = this._sdkClient.CreateRequest() - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, CultureInfo.GetCultureInfo("nl-NL")) - .DataRequest() - .SetBasicFields(new DataBase - { - Currency = "EUR", - Invoice = $"SDK_TEST_{DateTime.Now.Ticks}", - Description = "CM3_CREATEINVOICE_SDK_TEST", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - }) - .CreditManagement() - .CreateInvoice(new CreditManagementCreateInvoiceRequest - { - InvoiceDate = DateTime.Now, - DueDate = DateTime.Now.AddDays(5), - SchemeKey = "99wofp", - InvoiceAmount = 60.00m, - Debtor = new Debtor - { - Code = "20161124", - }, - Person = new Person - { - Initials = "JJA", - FirstName = "Sjaak", - LastName = "Roos", - Gender = BuckarooSdk.Services.CreditManagement.Constants.Gender.Male, - Culture = "nl-NL", - }, - Address = new Address - { - Street = "Zonnebaan", - HouseNumber = "9", - ZipCode = "3542 EA", - City = "Utrecht", - Country = "NL", - }, - Email = new EmailAddress - { - Email = "techsup@buckaroo.nl", - }, - Phone = new Phone - { - Mobile = "0600000000", - }, - }); + [TestMethod] + public void CreateInvoice() + { + var datarequest = _sdkClient + .CreateRequest() + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, CultureInfo.GetCultureInfo("nl-NL")) + .DataRequest() + .SetBasicFields(new DataBase + { + Currency = "EUR", + Invoice = $"SDK_TEST_{DateTime.Now.Ticks}", + Description = "CM3_CREATEINVOICE_SDK_TEST", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + }) + .CreditManagement() + .CreateInvoice(new CreditManagementCreateInvoiceRequest + { + InvoiceDate = DateTime.Now, + DueDate = DateTime.Now.AddDays(5), + SchemeKey = "99wofp", + InvoiceAmount = 60.00m, + Debtor = new Debtor + { + Code = "20161124", + }, + Person = new Person + { + Initials = "JJA", + FirstName = "Sjaak", + LastName = "Roos", + Gender = BuckarooSdk.Services.CreditManagement.Constants.Gender.Male, + Culture = "nl-NL", + }, + Address = new Address + { + Street = "Zonnebaan", + HouseNumber = "9", + ZipCode = "3542 EA", + City = "Utrecht", + Country = "NL", + }, + Email = new EmailAddress + { + Email = "techsup@buckaroo.nl", + }, + Phone = new Phone + { + Mobile = "0600000000", + }, + }); - var requestResponse = datarequest.Execute(); + var requestResponse = datarequest.Execute(); - //var logging = this._sdkClient.LoggerFactory.GetFullLog(); - //Console.WriteLine(logging); - } - } + //var logging = this._sdkClient.LoggerFactory.GetFullLog(); + //Console.WriteLine(logging); + } + } } diff --git a/BuckarooSdk.Tests/Services/IdealQr/IdealQrTests.cs b/BuckarooSdk.Tests/Services/IdealQr/IdealQrTests.cs index c81bd69..914b4e5 100644 --- a/BuckarooSdk.Tests/Services/IdealQr/IdealQrTests.cs +++ b/BuckarooSdk.Tests/Services/IdealQr/IdealQrTests.cs @@ -8,55 +8,56 @@ namespace BuckarooSdk.Tests.Services.IdealQr { - [TestClass] - public class IdealQrTests - { - public SdkClient BuckarooClient { get; private set; } - - [TestInitialize] - public void Setup() - { - this.BuckarooClient = new SdkClient(TestSettings.Logger); - } - - [TestMethod] - public void GenerateTest() - { - var request = this.BuckarooClient.CreateRequest() - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .DataRequest() - .SetBasicFields(new DataBase()) - .IdealQr() - .Generate(new IdealQrGenerateRequest() - { - Amount = 0.02m, - Description = "Dit is de description.", - Expiration = DateTime.Now.AddDays(4), - AmountIsChangeable = true, - MinAmount = 0.02m, - MaxAmount = 0.05m, - ImageSize = 250, - PurchaseId = "purchaseId", - IsOneOff = true, - IsProcessing = false, - }); - - var response = request.Execute(); - - var rawRequest = response.BuckarooSdkLogger.GetRawRequest(); - - var actionResponse = response.GetActionResponse(); - - var qrImageUrl = actionResponse.QrImageUrl; - - //From this point on a Merchant can do anything he wants with a qr. He can save the link if it is later on used in an email - //or printed on a sticker or poster. He can also return it and place it in a tag on a website. In this example I run - //just the image url to confirm that is returns a legit image of an iDEAL QR image. - - if (response.Status.Code.Code == BuckarooSdk.Constants.Status.Success) - { - Process.Start(actionResponse.QrImageUrl); - } - } - } + [TestClass] + public class IdealQrTests + { + public SdkClient _buckarooClient; + + [TestInitialize] + public void Setup() + { + _buckarooClient = new SdkClient(TestSettings.Logger); + } + + [TestMethod] + public void GenerateTest() + { + var request = _buckarooClient + .CreateRequest() + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .DataRequest() + .SetBasicFields(new DataBase()) + .IdealQr() + .Generate(new IdealQrGenerateRequest() + { + Amount = 0.02m, + Description = "Dit is de description.", + Expiration = DateTime.Now.AddDays(4), + AmountIsChangeable = true, + MinAmount = 0.02m, + MaxAmount = 0.05m, + ImageSize = 250, + PurchaseId = "purchaseId", + IsOneOff = true, + IsProcessing = false, + }); + + var response = request.Execute(); + + var rawRequest = response.BuckarooSdkLogger.GetRawRequest(); + + var actionResponse = response.GetActionResponse(); + + var qrImageUrl = actionResponse.QrImageUrl; + + //From this point on a Merchant can do anything he wants with a qr. He can save the link if it is later on used in an email + //or printed on a sticker or poster. He can also return it and place it in a tag on a website. In this example I run + //just the image url to confirm that is returns a legit image of an iDEAL QR image. + + if (response.Status.Code.Code == BuckarooSdk.Constants.Status.Success) + { + Process.Start(actionResponse.QrImageUrl); + } + } + } } diff --git a/BuckarooSdk.Tests/Services/P24/P24Tests.cs b/BuckarooSdk.Tests/Services/P24/P24Tests.cs index fffe5f6..3dd566e 100644 --- a/BuckarooSdk.Tests/Services/P24/P24Tests.cs +++ b/BuckarooSdk.Tests/Services/P24/P24Tests.cs @@ -2,67 +2,69 @@ using System.Globalization; using BuckarooSdk.DataTypes.RequestBases; using BuckarooSdk.Services.P24.TransactionRequest; +using BuckarooSdk.Tests.Constants; using Microsoft.VisualStudio.TestTools.UnitTesting; namespace BuckarooSdk.Tests.Services.P24 { - [TestClass] - public class P24Tests - { - private SdkClient _sdkClient; + [TestClass] + public class P24Tests + { + private SdkClient _buckarooClient; - [TestInitialize] - public void Setup() - { - this._sdkClient = new SdkClient(Constants.TestSettings.Logger); - } + [TestInitialize] + public void Setup() + { + _buckarooClient = new SdkClient(TestSettings.Logger); + } - [TestMethod] - public void PayTest() - { - var request = this._sdkClient.CreateRequest() - .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() - .SetBasicFields(new TransactionBase - { - Currency = "PLN", - AmountDebit = 0.02m, - Invoice = $"SDK_TEST_{DateTime.Now.Ticks}", - Description = "P24_PAY_SDK_UNITTEST", - }) - .P24() - .Pay(new P24PayRequest() - { - CustomerEmail = "s.roos@buckaroo.nl", - CustomerFirstName = "Sjaak", - CustomerLastName = "Roos" - }); + [TestMethod] + public void PayTest() + { + var request = this._buckarooClient + .CreateRequest() + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() + .SetBasicFields(new TransactionBase + { + Currency = "PLN", + AmountDebit = 0.02m, + Invoice = $"SDK_TEST_{DateTime.Now.Ticks}", + Description = "P24_PAY_SDK_UNITTEST", + }) + .P24() + .Pay(new P24PayRequest() + { + CustomerEmail = "s.roos@buckaroo.nl", + CustomerFirstName = "Sjaak", + CustomerLastName = "Roos" + }); - var response = request.Execute(); + var response = request.Execute(); + } - } + [TestMethod] + public void RefundTest() + { + var request = _buckarooClient + .CreateRequest() + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() + .SetBasicFields(new TransactionBase + { + OriginalTransactionKey = "FDE0FA2B028F4060BE8A3CDE822D211C", + Currency = "PLN", + Invoice = "SDK_TEST_636777962968205413", + AmountCredit = 0.02m, + Description = "P24_REFUND_SDK_UNITTEST", + }) + .P24() + .Refund(new P24RefundRequest + { + //set properties + }); - [TestMethod] - public void RefundTest() - { - var request = this._sdkClient.CreateRequest() - .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() - .SetBasicFields(new TransactionBase - { - OriginalTransactionKey = "FDE0FA2B028F4060BE8A3CDE822D211C", - Currency = "PLN", - Invoice = "SDK_TEST_636777962968205413", - AmountCredit = 0.02m, - Description = "P24_REFUND_SDK_UNITTEST", - }) - .P24() - .Refund(new P24RefundRequest - { - //set properties - }); - - var response = request.Execute(); - } - } + var response = request.Execute(); + } + } } diff --git a/BuckarooSdk.Tests/Services/PayPal/PayPalTests.cs b/BuckarooSdk.Tests/Services/PayPal/PayPalTests.cs index d9efc58..75b8c0f 100644 --- a/BuckarooSdk.Tests/Services/PayPal/PayPalTests.cs +++ b/BuckarooSdk.Tests/Services/PayPal/PayPalTests.cs @@ -1,136 +1,139 @@ using System; -using BuckarooSdk.Services.PayPal; -using Microsoft.VisualStudio.TestTools.UnitTesting; using System.Globalization; using BuckarooSdk.DataTypes.RequestBases; +using BuckarooSdk.Services.PayPal; +using BuckarooSdk.Tests.Constants; +using Microsoft.VisualStudio.TestTools.UnitTesting; namespace BuckarooSdk.Tests.Services.PayPal { - [TestClass] - public class PayPalTests - { - private SdkClient _sdkClient; - - [TestInitialize] - public void Setup() - { - this._sdkClient = new SdkClient(Constants.TestSettings.Logger); - } - - [TestMethod] - public void PayTest() - { - var request = this._sdkClient.CreateRequest() - .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() - .SetBasicFields(new TransactionBase - { - Currency = "EUR", - AmountDebit = 0.02m, - Invoice = $"SDK_TEST_{DateTime.Now.Ticks}", - Description = "PAYPAL_PAY_SDK_UNITTEST", - }) - .PayPal() - .Pay(new PayPalPayRequest() - { - //define properties - BuyerEmail = "techsup@buckaroo.nl", - ProductName = "haardhout", - }); - - var paymentResponse = request.Execute(); - } - - [TestMethod] - public void RefundTest() - { - var request = this._sdkClient.CreateRequest() - .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() - .SetBasicFields(new TransactionBase - { - Currency = "EUR", - AmountDebit = 0.02m, - Invoice = $"SDK_TEST_{DateTime.Now.Ticks}" - }) - .PayPal() - - .Refund(new PayPalRefundRequest() - { - //define properties - - }); - - var response = request.Execute(); - } - - [TestMethod] - public void PayRecurrentTest() - { - var request = this._sdkClient.CreateRequest() - .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() - .SetBasicFields(new TransactionBase - { - Currency = "EUR", - AmountDebit = 0.02m, - Invoice = $"SDK_TEST_{DateTime.Now.Ticks}" - }) - .PayPal() - - .PayRecurrent(new PayPalPayRecurrentRequest() - { - //define properties - - }); - - var response = request.Execute(); - } - - [TestMethod] - [Ignore] - public void PayRemainderTest() - { - var request = this._sdkClient.CreateRequest() - .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() - .SetBasicFields(new TransactionBase - { - Currency = "EUR", - AmountDebit = 0.02m, - Invoice = $"SDK_TEST_{DateTime.Now.Ticks}" - }) - .PayPal() - - .PayRemainder(new PayPalPayRemainderRequest - { - //define properties - BuyerEmail = "techsup@buckaroo.nl", - - }); - - var response = request.Execute(); - } - - [TestMethod] - public void ExtraInfoTest() - { - var request = this._sdkClient.CreateRequest() - .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() - .SetBasicFields(new TransactionBase - { - Currency = "EUR", - AmountDebit = 0.02m, - Invoice = $"SDK_TEST_{DateTime.Now.Ticks}" - }) - .PayPal() - .ExtraInfo(new PayPalExtraInfoRequest - { - //define properties - }); - - var response = request.Execute(); - } - } + [TestClass] + public class PayPalTests + { + private SdkClient _buckarooClient; + + [TestInitialize] + public void Setup() + { + _buckarooClient = new SdkClient(TestSettings.Logger); + } + + [TestMethod] + public void PayTest() + { + var request = _buckarooClient + .CreateRequest() + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() + .SetBasicFields(new TransactionBase + { + Currency = "EUR", + AmountDebit = 0.02m, + Invoice = $"SDK_TEST_{DateTime.Now.Ticks}", + Description = "PAYPAL_PAY_SDK_UNITTEST", + }) + .PayPal() + .Pay(new PayPalPayRequest() + { + //define properties + BuyerEmail = "techsup@buckaroo.nl", + ProductName = "haardhout", + }); + + var paymentResponse = request.Execute(); + } + + [TestMethod] + public void RefundTest() + { + var request = _buckarooClient + .CreateRequest() + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() + .SetBasicFields(new TransactionBase + { + Currency = "EUR", + AmountDebit = 0.02m, + Invoice = $"SDK_TEST_{DateTime.Now.Ticks}" + }) + .PayPal() + .Refund(new PayPalRefundRequest() + { + //define properties + + }); + + var response = request.Execute(); + } + + [TestMethod] + public void PayRecurrentTest() + { + var request = _buckarooClient + .CreateRequest() + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() + .SetBasicFields(new TransactionBase + { + Currency = "EUR", + AmountDebit = 0.02m, + Invoice = $"SDK_TEST_{DateTime.Now.Ticks}" + }) + .PayPal() + .PayRecurrent(new PayPalPayRecurrentRequest() + { + //define properties + + }); + + var response = request.Execute(); + } + + [TestMethod] + [Ignore] + public void PayRemainderTest() + { + var request = _buckarooClient + .CreateRequest() + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() + .SetBasicFields(new TransactionBase + { + Currency = "EUR", + AmountDebit = 0.02m, + Invoice = $"SDK_TEST_{DateTime.Now.Ticks}" + }) + .PayPal() + .PayRemainder(new PayPalPayRemainderRequest + { + //define properties + BuyerEmail = "techsup@buckaroo.nl", + + }); + + var response = request.Execute(); + } + + [TestMethod] + public void ExtraInfoTest() + { + var request = _buckarooClient + .CreateRequest() + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() + .SetBasicFields(new TransactionBase + { + Currency = "EUR", + AmountDebit = 0.02m, + Invoice = $"SDK_TEST_{DateTime.Now.Ticks}" + }) + .PayPal() + .ExtraInfo(new PayPalExtraInfoRequest + { + //define properties + }); + + var response = request.Execute(); + } + } } diff --git a/BuckarooSdk.Tests/Services/PayPerEmail/PayPerEmailTests.cs b/BuckarooSdk.Tests/Services/PayPerEmail/PayPerEmailTests.cs index 7caebf0..d443f2b 100644 --- a/BuckarooSdk.Tests/Services/PayPerEmail/PayPerEmailTests.cs +++ b/BuckarooSdk.Tests/Services/PayPerEmail/PayPerEmailTests.cs @@ -1,27 +1,29 @@ using System; -using BuckarooSdk.Services.PayPerEmail; -using Microsoft.VisualStudio.TestTools.UnitTesting; using System.Globalization; using BuckarooSdk.DataTypes.RequestBases; +using BuckarooSdk.Services.PayPerEmail; +using BuckarooSdk.Tests.Constants; +using Microsoft.VisualStudio.TestTools.UnitTesting; namespace BuckarooSdk.Tests.Services.PayPerEmail { [TestClass] public class PayPerEmailTests { - private SdkClient _sdkClient; + private SdkClient _buckarooClient; [TestInitialize] public void Setup() { - this._sdkClient = new SdkClient(Constants.TestSettings.Logger); + _buckarooClient = new SdkClient(TestSettings.Logger); } [TestMethod] public void PaymentInvitationTest() { - var request = this._sdkClient.CreateRequest() - .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("en-US")) + var request = _buckarooClient + .CreateRequest() + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("en-US")) .TransactionRequest() .SetBasicFields(new TransactionBase { @@ -32,7 +34,7 @@ public void PaymentInvitationTest() ServicesSelectableByClient = "ideal", }) .PayPerEmail() - .PaymentInvitation(new PayPerEmailPaymentInvitationRequest() + .PaymentInvitation(new PayPerEmailPaymentInvitationRequest { CustomerGender = BuckarooSdk.Services.PayPerEmail.Constants.Gender.Male, Attachment = "", diff --git a/BuckarooSdk.Tests/Services/SimpleSepaDirectDebit/SimpleSepaDirectDebitTests.cs b/BuckarooSdk.Tests/Services/SimpleSepaDirectDebit/SimpleSepaDirectDebitTests.cs index d9f180d..4c93496 100644 --- a/BuckarooSdk.Tests/Services/SimpleSepaDirectDebit/SimpleSepaDirectDebitTests.cs +++ b/BuckarooSdk.Tests/Services/SimpleSepaDirectDebit/SimpleSepaDirectDebitTests.cs @@ -1,76 +1,78 @@ using System; -using BuckarooSdk.Services.SimpleSepaDirectDebit; -using Microsoft.VisualStudio.TestTools.UnitTesting; using System.Globalization; using BuckarooSdk.DataTypes.RequestBases; +using BuckarooSdk.Services.SimpleSepaDirectDebit; +using BuckarooSdk.Tests.Constants; +using Microsoft.VisualStudio.TestTools.UnitTesting; namespace BuckarooSdk.Tests.Services.SimpleSepaDirectDebit { - [TestClass] - public class SimpleSepaDirectDebitTests - { - private SdkClient _sdkClient; - - [TestInitialize] - public void Setup() - { - this._sdkClient = new SdkClient(Constants.TestSettings.Logger); - } + [TestClass] + public class SimpleSepaDirectDebitTests + { + private SdkClient _buckarooClient; - [TestMethod] - public void PayTest() - { - var payment = this._sdkClient.CreateRequest() - .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() - .SetBasicFields(new TransactionBase - { - Currency = "EUR", - AmountDebit = 0.02m, - Invoice = $"SDK_TEST_{DateTime.Now.Ticks}", - Description = "SIMPLESEPADIRECTDEBIT_PAY_SDK_UNITTEST", - StartRecurrent = true, + [TestInitialize] + public void Setup() + { + _buckarooClient = new SdkClient(TestSettings.Logger); + } - }) - .SimpleSepaDirectDebit() - .Pay(new SimpleSepaDirectDebitPayRequest() - { - MandateReference = "0012652668455265", - MandateDate = "16-11-2016", - CustomerIban = "NL88INGB0757641768", - CustomerBic = "INGBNL2A", - CustomerAccountName = "JJA Roos", - CollectDate = "26-11-2016", - }); + [TestMethod] + public void PayTest() + { + var payment = _buckarooClient + .CreateRequest() + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() + .SetBasicFields(new TransactionBase + { + Currency = "EUR", + AmountDebit = 0.02m, + Invoice = $"SDK_TEST_{DateTime.Now.Ticks}", + Description = "SIMPLESEPADIRECTDEBIT_PAY_SDK_UNITTEST", + StartRecurrent = true, - var paymentResponse = payment.Execute(); - } + }) + .SimpleSepaDirectDebit() + .Pay(new SimpleSepaDirectDebitPayRequest + { + MandateReference = "0012652668455265", + MandateDate = "16-11-2016", + CustomerIban = "NL88INGB0757641768", + CustomerBic = "INGBNL2A", + CustomerAccountName = "JJA Roos", + CollectDate = "26-11-2016", + }); - [TestMethod] - public void RefundTest() - { - var request = this._sdkClient.CreateRequest() - .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() - .SetBasicFields(new TransactionBase - { - AmountCredit = 0.02m, - Currency = "EUR", - Invoice = "", - OriginalTransactionKey = "", - Description = "SIMPLESEPADIRECTDEBIT_REFUND_SDK_UNITTEST", + var paymentResponse = payment.Execute(); + } - }) - .SimpleSepaDirectDebit() + [TestMethod] + public void RefundTest() + { + var request = _buckarooClient + .CreateRequest() + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() + .SetBasicFields(new TransactionBase + { + AmountCredit = 0.02m, + Currency = "EUR", + Invoice = "", + OriginalTransactionKey = "", + Description = "SIMPLESEPADIRECTDEBIT_REFUND_SDK_UNITTEST", - .Refund(new SimpleSepaDirectDebitRefundRequest() - { - CustomerIban = "NL88INGB0757641768", - CustomerBic = "INGBNL2A", - CustomerAccountName = "JJA Roos", - }); + }) + .SimpleSepaDirectDebit() + .Refund(new SimpleSepaDirectDebitRefundRequest + { + CustomerIban = "NL88INGB0757641768", + CustomerBic = "INGBNL2A", + CustomerAccountName = "JJA Roos", + }); - var response = request.Execute(); - } - } + var response = request.Execute(); + } + } } diff --git a/BuckarooSdk.Tests/Services/Sofort/SofortTests.cs b/BuckarooSdk.Tests/Services/Sofort/SofortTests.cs index c548a46..cd151f6 100644 --- a/BuckarooSdk.Tests/Services/Sofort/SofortTests.cs +++ b/BuckarooSdk.Tests/Services/Sofort/SofortTests.cs @@ -1,130 +1,131 @@ +using System; +using System.Globalization; using BuckarooSdk.DataTypes.RequestBases; using BuckarooSdk.Logging; using BuckarooSdk.Services.Sofort; using BuckarooSdk.Tests.Constants; using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Diagnostics; -using System.Globalization; namespace BuckarooSdk.Tests.Services.Sofort { - [TestClass] - public class SofortTests - { - private SdkClient _buckarooClient; - private string TestName => nameof(SofortTests).ToUpper(); - - [TestInitialize] - public void Setup() - { - this._buckarooClient = new SdkClient(TestSettings.Logger); - } - - [TestMethod] - public void PayTest() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - AmountDebit = 2, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .Sofort() // Choose the paymentmethod you want to use - .Pay(new SofortPayRequest // choose the action you want to use and provide the payment method specific info. - { - - }); - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - [TestMethod] - public void RefundTest() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - OriginalTransactionKey = "", - AmountCredit = 2, - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .Sofort() // Choose the paymentmethod you want to use - .Refund(new SofortRefundRequest // choose the action you want to use and provide the payment method specific info. - { - CustomerBIC = string.Empty, - CustomerIBAN = string.Empty, - CustomerAccountName = string.Empty, - CustomerKontoNummer = 0, - CustomerBankLeitzahl = 0, - }); - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - - [TestMethod] - public void PayRemainderTest() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - AmountDebit = 2, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - OriginalTransactionKey = "", - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .Sofort() // Choose the paymentmethod you want to use - .PayRemainder(new SofortPayRemainderRequest // choose the action you want to use and provide the payment method specific info. - { - - }); - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - - [TestCleanup] - public void TearDown() - { - this._buckarooClient = null; - } - } + [TestClass] + public class SofortTests + { + private SdkClient _buckarooClient; + + private string TestName => nameof(SofortTests).ToUpper(); + + [TestInitialize] + public void Setup() + { + _buckarooClient = new SdkClient(TestSettings.Logger); + } + + [TestMethod] + public void PayTest() + { + var request = _buckarooClient + .CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + AmountDebit = 2, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .Sofort() // Choose the paymentmethod you want to use + .Pay(new SofortPayRequest // choose the action you want to use and provide the payment method specific info. + { + + }); + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + + [TestMethod] + public void RefundTest() + { + var request = _buckarooClient + .CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + OriginalTransactionKey = "", + AmountCredit = 2, + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .Sofort() // Choose the paymentmethod you want to use + .Refund(new SofortRefundRequest // choose the action you want to use and provide the payment method specific info. + { + CustomerBIC = string.Empty, + CustomerIBAN = string.Empty, + CustomerAccountName = string.Empty, + CustomerKontoNummer = 0, + CustomerBankLeitzahl = 0, + }); + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + + [TestMethod] + public void PayRemainderTest() + { + var request = _buckarooClient + .CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + AmountDebit = 2, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + OriginalTransactionKey = "", + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .Sofort() // Choose the paymentmethod you want to use + .PayRemainder(new SofortPayRemainderRequest // choose the action you want to use and provide the payment method specific info. + { + + }); + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + + [TestCleanup] + public void TearDown() + { + _buckarooClient = null; + } + } } diff --git a/BuckarooSdk.Tests/Services/VPay/VPayTests.cs b/BuckarooSdk.Tests/Services/VPay/VPayTests.cs index 2646451..72192d2 100644 --- a/BuckarooSdk.Tests/Services/VPay/VPayTests.cs +++ b/BuckarooSdk.Tests/Services/VPay/VPayTests.cs @@ -1,310 +1,314 @@ -using BuckarooSdk.DataTypes.RequestBases; +using System; +using System.Globalization; +using BuckarooSdk.DataTypes.RequestBases; using BuckarooSdk.Logging; using BuckarooSdk.Services.CreditCards.Request; using BuckarooSdk.Tests.Constants; using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Globalization; namespace BuckarooSdk.Tests.Services.VPay { - [TestClass] - public class VPayTests - { - private SdkClient _buckarooClient; - private string TestName => nameof(VPayTests).ToUpper(); - - [TestInitialize] - public void Setup() - { - this._buckarooClient = new SdkClient(TestSettings.Logger); - } - - [TestMethod] - public void PayTest() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - AmountDebit = 2, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ContinueOnIncomplete = DataTypes.ContinueOnIncomplete.RedirectToHTML - }) - .VPay() // Choose the paymentmethod you want to use - .Pay(new CreditCardPayRequest // choose the action you want to use and provide the payment method specific info. - { - CustomerCode = "1234", - }); - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - [TestMethod] - public void RefundTest() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - OriginalTransactionKey = "", - AmountCredit = 2, - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .VPay() // Choose the paymentmethod you want to use - .Refund(new CreditCardRefundRequest // choose the action you want to use and provide the payment method specific info. - { - - }); - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - [TestMethod] - public void AuthorizeTest() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - AmountDebit = 2, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .VPay() // Choose the paymentmethod you want to use - .Authorize(new CreditCardAuthorizeRequest // choose the action you want to use and provide the payment method specific info. - { - CustomerCode = string.Empty, - }); - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - [TestMethod] - public void CaptureTest() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - AmountDebit = 2, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - OriginalTransactionKey = "", - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .VPay() // Choose the paymentmethod you want to use - .Capture(new CreditCardCaptureRequest // choose the action you want to use and provide the payment method specific info. - { - - }); - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - [TestMethod] - public void CancelAuthorizeTest() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - OriginalTransactionKey = "", - AmountCredit = 2, - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .VPay() // Choose the paymentmethod you want to use - .CancelAuthorize(new CreditCardCancelAuthorizeRequest // choose the action you want to use and provide the payment method specific info. - { - - }); - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - [TestMethod] - public void PayRecurrentTest() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - AmountDebit = 2, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - OriginalTransactionKey = "", - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .VPay() // Choose the paymentmethod you want to use - .PayRecurrent(new CreditCardPayRecurrentRequest // choose the action you want to use and provide the payment method specific info. - { - - }); - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - [TestMethod] - public void PayRemainderTest() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - AmountDebit = 2, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - OriginalTransactionKey = "", - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .VPay() // Choose the paymentmethod you want to use - .PayRemainder(new CreditCardPayRemainderRequest // choose the action you want to use and provide the payment method specific info. - { - CustomerCode = string.Empty, - }); - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - [TestMethod] - public void PayEncryptedTest() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - AmountDebit = 2, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .VPay() // Choose the paymentmethod you want to use - .PayEncrypted(new CreditCardPayEncryptedRequest // choose the action you want to use and provide the payment method specific info. - { - EncryptedCardData = string.Empty, - - }); - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - [TestMethod] - public void AuthorizeEncryptedTest() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - AmountDebit = 2, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .VPay() // Choose the paymentmethod you want to use - .AuthorizeEncrypted(new CreditCardAuthorizeEncryptedRequest // choose the action you want to use and provide the payment method specific info. - { - EncryptedCardData = string.Empty, - - }); - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - - [TestCleanup] - public void TearDown() - { - this._buckarooClient = null; - } - } + [TestClass] + public class VPayTests + { + private SdkClient _buckarooClient; + + private string TestName => nameof(VPayTests).ToUpper(); + + [TestInitialize] + public void Setup() + { + _buckarooClient = new SdkClient(TestSettings.Logger); + } + + [TestMethod] + public void PayTest() + { + var request = _buckarooClient + .CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + AmountDebit = 2, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ContinueOnIncomplete = DataTypes.ContinueOnIncomplete.RedirectToHTML + }) + .VPay() // Choose the paymentmethod you want to use + .Pay(new CreditCardPayRequest // choose the action you want to use and provide the payment method specific info. + { + CustomerCode = "1234", + }); + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + + [TestMethod] + public void RefundTest() + { + var request = + this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + OriginalTransactionKey = "", + AmountCredit = 2, + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .VPay() // Choose the paymentmethod you want to use + .Refund(new CreditCardRefundRequest // choose the action you want to use and provide the payment method specific info. + { + }); + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + + [TestMethod] + public void AuthorizeTest() + { + var request = _buckarooClient + .CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + AmountDebit = 2, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .VPay() // Choose the paymentmethod you want to use + .Authorize(new CreditCardAuthorizeRequest // choose the action you want to use and provide the payment method specific info. + { + CustomerCode = string.Empty, + }); + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + + [TestMethod] + public void CaptureTest() + { + var request = _buckarooClient + .CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + AmountDebit = 2, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + OriginalTransactionKey = "", + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .VPay() // Choose the paymentmethod you want to use + .Capture(new CreditCardCaptureRequest // choose the action you want to use and provide the payment method specific info. + { + + }); + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + + [TestMethod] + public void CancelAuthorizeTest() + { + var request = _buckarooClient + .CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + OriginalTransactionKey = "", + AmountCredit = 2, + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .VPay() // Choose the paymentmethod you want to use + .CancelAuthorize(new CreditCardCancelAuthorizeRequest // choose the action you want to use and provide the payment method specific info. + { + }); + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + + [TestMethod] + public void PayRecurrentTest() + { + var request = _buckarooClient + .CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + AmountDebit = 2, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + OriginalTransactionKey = "", + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .VPay() // Choose the paymentmethod you want to use + .PayRecurrent(new CreditCardPayRecurrentRequest // choose the action you want to use and provide the payment method specific info. + { + }); + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + + [TestMethod] + public void PayRemainderTest() + { + var request = _buckarooClient + .CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + AmountDebit = 2, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + OriginalTransactionKey = "", + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .VPay() // Choose the paymentmethod you want to use + .PayRemainder(new CreditCardPayRemainderRequest // choose the action you want to use and provide the payment method specific info. + { + CustomerCode = string.Empty, + }); + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + + [TestMethod] + public void PayEncryptedTest() + { + var request = _buckarooClient + .CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + AmountDebit = 2, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .VPay() // Choose the paymentmethod you want to use + .PayEncrypted(new CreditCardPayEncryptedRequest // choose the action you want to use and provide the payment method specific info. + { + EncryptedCardData = string.Empty + }); + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + + [TestMethod] + public void AuthorizeEncryptedTest() + { + var request = _buckarooClient + .CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + AmountDebit = 2, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .VPay() // Choose the paymentmethod you want to use + .AuthorizeEncrypted(new CreditCardAuthorizeEncryptedRequest // choose the action you want to use and provide the payment method specific info. + { + EncryptedCardData = string.Empty + }); + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + + [TestCleanup] + public void TearDown() + { + _buckarooClient = null; + } + } } diff --git a/BuckarooSdk.Tests/Services/Visa/VisaTests.cs b/BuckarooSdk.Tests/Services/Visa/VisaTests.cs index b6f320f..381e083 100644 --- a/BuckarooSdk.Tests/Services/Visa/VisaTests.cs +++ b/BuckarooSdk.Tests/Services/Visa/VisaTests.cs @@ -1,551 +1,555 @@ using System; -using Microsoft.VisualStudio.TestTools.UnitTesting; using System.Globalization; using BuckarooSdk.DataTypes.RequestBases; -using BuckarooSdk.Services.CreditCards.Visa; using BuckarooSdk.Logging; using BuckarooSdk.Services.CreditCards.Request; using BuckarooSdk.Services.CreditCards.Visa.Request; using BuckarooSdk.Tests.Constants; +using Microsoft.VisualStudio.TestTools.UnitTesting; namespace BuckarooSdk.Tests.Services.Visa { - [TestClass] - public class VisaTests - { - private SdkClient _buckarooClient; - private string TestName => nameof(VisaTests).ToUpper(); - - [TestInitialize] - public void Setup() - { - this._buckarooClient = new SdkClient(Constants.TestSettings.Logger); - } - - #region Visa - [TestMethod] - [Obsolete] - public void PayTest() - { - var request = this._buckarooClient.CreateRequest() - .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() - .SetBasicFields(new TransactionBase - { - Currency = "EUR", - AmountDebit = 0.02m, - Invoice = $"SDK_{ TestName }_ { DateTime.Now.Ticks }" - } - .AddAdditionalParameter("add_test1", DateTime.Now.Ticks.ToString()) - .AddAdditionalParameter("add_test2", "test") - ) - .Visa() - .Pay(new VisaPayRequest() - { - //set properties - }); - - var response = request.Execute(); - } - - [TestMethod] - [Obsolete] - public void RefundTest() - { - var request = this._buckarooClient.CreateRequest() - .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() - .SetBasicFields(new TransactionBase - { - Currency = "EUR", - AmountDebit = 0.02m, - Invoice = $"SDK_{ TestName }_ { DateTime.Now.Ticks }" - }) - .Visa() - .Refund(new VisaRefundRequest() - { - //set properties - }); - - var response = request.Execute(); - } - - [TestMethod] - [Obsolete] - public void AuthorizeTest() - { - var request = this._buckarooClient.CreateRequest() - .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() - .SetBasicFields(new TransactionBase - { - Currency = "EUR", - AmountDebit = 0.02m, - Invoice = $"SDK_{ TestName }_ { DateTime.Now.Ticks }" - } - .AddAdditionalParameter("add_test1", DateTime.Now.Ticks.ToString()) - .AddAdditionalParameter("add_test2", "test") - ) - .Visa() - - .Authorize(new VisaAuthorizeRequest() - { - //set properties - }); - - var response = request.Execute(); - } - - [TestMethod] - [Obsolete] - public void CaptureTest() - { - var request = this._buckarooClient.CreateRequest() - .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() - .SetBasicFields(new TransactionBase - { - Currency = "EUR", - AmountDebit = 0.02m, - Invoice = $"SDK_{ TestName }_ { DateTime.Now.Ticks }" - }) - .Visa() - - .Capture(new VisaCaptureRequest() - { - //set properties - }); - - var response = request.Execute(); - } - - [TestMethod] - [Obsolete] - public void PayRecurrentTest() - { - var request = this._buckarooClient.CreateRequest() - .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() - .SetBasicFields(new TransactionBase - { - Currency = "EUR", - AmountDebit = 0.02m, - Invoice = $"SDK_{ TestName }_ { DateTime.Now.Ticks }" - }) - .Visa() - - .PayRecurrent(new VisaPayRecurrentRequest() - { - //define properties - }); - - var response = request.Execute(); - } - - [TestMethod] - [Obsolete] - public void PayRemainderTest() - { - var request = this._buckarooClient.CreateRequest() - .Authenticate(Constants.TestSettings.WebsiteKey, Constants.TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() - .SetBasicFields(new TransactionBase - { - Currency = "EUR", - AmountDebit = 0.02m, - Invoice = $"SDK_{ TestName }_ { DateTime.Now.Ticks }" - }) - .Visa() - - .PayRemainder(new VisaPayRemainderRequest() - { - //define properties - }); - - var response = request.Execute(); - } - - [TestMethod] - public void CancelAuthorizeTest() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - OriginalTransactionKey = "", - AmountCredit = 2, - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .Visa() // Choose the paymentmethod you want to use - .CancelAuthorize(new VisaCancelAuthorizeRequest // choose the action you want to use and provide the payment method specific info. - { - - }); - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - - [TestMethod] - public void PayEncryptedTest() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - AmountDebit = 2, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .Visa() // Choose the paymentmethod you want to use - .PayEncrypted(new VisaPayEncryptedRequest // choose the action you want to use and provide the payment method specific info. - { - EncryptedCardData = string.Empty, - - }); - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - - [TestMethod] - public void AuthorizeEncryptedTest() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - AmountDebit = 2, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .Visa() // Choose the paymentmethod you want to use - .AuthorizeEncrypted(new VisaAuthorizeEncryptedRequest // choose the action you want to use and provide the payment method specific info. - { - EncryptedCardData = string.Empty, - - }); - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - #endregion - - #region CreditCard - [TestMethod] - public void PayTestCreditCard() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - AmountDebit = 2, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .Visa() // Choose the paymentmethod you want to use - .Pay(new CreditCardPayRequest // choose the action you want to use and provide the payment method specific info. - { - CustomerCode = string.Empty, - }); - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - - [TestMethod] - public void RefundTestCreditCard() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - OriginalTransactionKey = "", - AmountCredit = 2, - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .Visa() // Choose the paymentmethod you want to use - .Refund(new CreditCardRefundRequest // choose the action you want to use and provide the payment method specific info. - { - - }); - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - - [TestMethod] - public void AuthorizeTestCreditCard() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - AmountDebit = 2, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .Visa() // Choose the paymentmethod you want to use - .Authorize(new CreditCardAuthorizeRequest // choose the action you want to use and provide the payment method specific info. - { - CustomerCode = string.Empty, - }); - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - - [TestMethod] - public void CaptureTestCreditCard() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - AmountDebit = 2, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - OriginalTransactionKey = "", - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .Visa() // Choose the paymentmethod you want to use - .Capture(new CreditCardCaptureRequest // choose the action you want to use and provide the payment method specific info. - { - - }); - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - - [TestMethod] - public void CancelAuthorizeTestCreditCard() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - OriginalTransactionKey = "", - AmountCredit = 2, - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .Visa() // Choose the paymentmethod you want to use - .CancelAuthorize(new CreditCardCancelAuthorizeRequest // choose the action you want to use and provide the payment method specific info. - { - - }); - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - - [TestMethod] - public void PayRecurrentTestCreditCard() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - AmountDebit = 2, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - OriginalTransactionKey = "", - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .Visa() // Choose the paymentmethod you want to use - .PayRecurrent(new CreditCardPayRecurrentRequest // choose the action you want to use and provide the payment method specific info. - { - - }); - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - - [TestMethod] - public void PayRemainderTestCreditCard() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - AmountDebit = 2, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - OriginalTransactionKey = "", - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .Visa() // Choose the paymentmethod you want to use - .PayRemainder(new CreditCardPayRemainderRequest // choose the action you want to use and provide the payment method specific info. - { - CustomerCode = string.Empty, - }); - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - - [TestMethod] - public void PayEncryptedTestCreditCard() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - AmountDebit = 2, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .Visa() // Choose the paymentmethod you want to use - .PayEncrypted(new CreditCardPayEncryptedRequest // choose the action you want to use and provide the payment method specific info. - { - EncryptedCardData = string.Empty, - }); - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - - [TestMethod] - public void AuthorizeEncryptedTestCreditCard() - { - var request = - this._buckarooClient.CreateRequest(new StandardLogger()) // Create a request. - .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) - .TransactionRequest() // One of the request type options. - .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. - { - Currency = "EUR", - Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - ReturnUrl = TestSettings.ReturnUrl, - ReturnUrlCancel = TestSettings.ReturnUrlCancel, - ReturnUrlError = TestSettings.ReturnUrlError, - ReturnUrlReject = TestSettings.ReturnUrlReject, - AmountDebit = 2, - Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", - }) - .Visa() // Choose the paymentmethod you want to use - .AuthorizeEncrypted(new CreditCardAuthorizeEncryptedRequest // choose the action you want to use and provide the payment method specific info. - { - EncryptedCardData = string.Empty, - }); - - var response = request.Execute(); - - // Process.Start(response.RequiredAction.RedirectURL); - // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); - } - #endregion - } + [TestClass] + public class VisaTests + { + private SdkClient _buckarooClient; + + private string TestName => nameof(VisaTests).ToUpper(); + + [TestInitialize] + public void Setup() + { + _buckarooClient = new SdkClient(TestSettings.Logger); + } + + #region Visa + + [TestMethod] + [Obsolete] + public void PayTest() + { + var request = _buckarooClient + .CreateRequest() + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() + .SetBasicFields(new TransactionBase + { + Currency = "EUR", + AmountDebit = 0.02m, + Invoice = $"SDK_{ TestName }_ { DateTime.Now.Ticks }" + } + .AddAdditionalParameter("add_test1", DateTime.Now.Ticks.ToString()) + .AddAdditionalParameter("add_test2", "test") + ) + .Visa() + .Pay(new VisaPayRequest() + { + //set properties + }); + + var response = request.Execute(); + } + + [TestMethod] + [Obsolete] + public void RefundTest() + { + var request = _buckarooClient + .CreateRequest() + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() + .SetBasicFields(new TransactionBase + { + Currency = "EUR", + AmountDebit = 0.02m, + Invoice = $"SDK_{ TestName }_ { DateTime.Now.Ticks }" + }) + .Visa() + .Refund(new VisaRefundRequest() + { + //set properties + }); + + var response = request.Execute(); + } + + [TestMethod] + [Obsolete] + public void AuthorizeTest() + { + var request = _buckarooClient + .CreateRequest() + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() + .SetBasicFields(new TransactionBase + { + Currency = "EUR", + AmountDebit = 0.02m, + Invoice = $"SDK_{ TestName }_ { DateTime.Now.Ticks }" + } + .AddAdditionalParameter("add_test1", DateTime.Now.Ticks.ToString()) + .AddAdditionalParameter("add_test2", "test") + ) + .Visa() + .Authorize(new VisaAuthorizeRequest() + { + //set properties + }); + + var response = request.Execute(); + } + + [TestMethod] + [Obsolete] + public void CaptureTest() + { + var request = _buckarooClient + .CreateRequest() + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() + .SetBasicFields(new TransactionBase + { + Currency = "EUR", + AmountDebit = 0.02m, + Invoice = $"SDK_{ TestName }_ { DateTime.Now.Ticks }" + }) + .Visa() + .Capture(new VisaCaptureRequest() + { + //set properties + }); + + var response = request.Execute(); + } + + [TestMethod] + [Obsolete] + public void PayRecurrentTest() + { + var request = _buckarooClient + .CreateRequest() + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() + .SetBasicFields(new TransactionBase + { + Currency = "EUR", + AmountDebit = 0.02m, + Invoice = $"SDK_{ TestName }_ { DateTime.Now.Ticks }" + }) + .Visa() + .PayRecurrent(new VisaPayRecurrentRequest() + { + //define properties + }); + + var response = request.Execute(); + } + + [TestMethod] + [Obsolete] + public void PayRemainderTest() + { + var request = _buckarooClient + .CreateRequest() + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() + .SetBasicFields(new TransactionBase + { + Currency = "EUR", + AmountDebit = 0.02m, + Invoice = $"SDK_{ TestName }_ { DateTime.Now.Ticks }" + }) + .Visa() + .PayRemainder(new VisaPayRemainderRequest() + { + //define properties + }); + + var response = request.Execute(); + } + + [TestMethod] + public void CancelAuthorizeTest() + { + var request = _buckarooClient + .CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + OriginalTransactionKey = "", + AmountCredit = 2, + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .Visa() // Choose the paymentmethod you want to use + .CancelAuthorize(new VisaCancelAuthorizeRequest // choose the action you want to use and provide the payment method specific info. + { + }); + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + + [TestMethod] + public void PayEncryptedTest() + { + var request = _buckarooClient + .CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + AmountDebit = 2, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .Visa() // Choose the paymentmethod you want to use + .PayEncrypted(new VisaPayEncryptedRequest // choose the action you want to use and provide the payment method specific info. + { + EncryptedCardData = string.Empty, + + }); + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + + [TestMethod] + public void AuthorizeEncryptedTest() + { + var request = _buckarooClient + .CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + AmountDebit = 2, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .Visa() // Choose the paymentmethod you want to use + .AuthorizeEncrypted(new VisaAuthorizeEncryptedRequest // choose the action you want to use and provide the payment method specific info. + { + EncryptedCardData = string.Empty, + + }); + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + + #endregion + + #region CreditCard + + [TestMethod] + public void PayTestCreditCard() + { + var request = _buckarooClient + .CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + AmountDebit = 2, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .Visa() // Choose the paymentmethod you want to use + .Pay(new CreditCardPayRequest // choose the action you want to use and provide the payment method specific info. + { + CustomerCode = string.Empty, + }); + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + + [TestMethod] + public void RefundTestCreditCard() + { + var request = _buckarooClient + .CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + OriginalTransactionKey = "", + AmountCredit = 2, + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .Visa() // Choose the paymentmethod you want to use + .Refund(new CreditCardRefundRequest // choose the action you want to use and provide the payment method specific info. + { + }); + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + + [TestMethod] + public void AuthorizeTestCreditCard() + { + var request = _buckarooClient + .CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + AmountDebit = 2, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .Visa() // Choose the paymentmethod you want to use + .Authorize(new CreditCardAuthorizeRequest // choose the action you want to use and provide the payment method specific info. + { + CustomerCode = string.Empty, + }); + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + + [TestMethod] + public void CaptureTestCreditCard() + { + var request = _buckarooClient + .CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + AmountDebit = 2, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + OriginalTransactionKey = "", + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .Visa() // Choose the paymentmethod you want to use + .Capture(new CreditCardCaptureRequest // choose the action you want to use and provide the payment method specific info. + { + + }); + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + + [TestMethod] + public void CancelAuthorizeTestCreditCard() + { + var request = _buckarooClient + .CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + OriginalTransactionKey = "", + AmountCredit = 2, + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .Visa() // Choose the paymentmethod you want to use + .CancelAuthorize(new CreditCardCancelAuthorizeRequest // choose the action you want to use and provide the payment method specific info. + { + + }); + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + + [TestMethod] + public void PayRecurrentTestCreditCard() + { + var request = _buckarooClient + .CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + AmountDebit = 2, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + OriginalTransactionKey = "", + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .Visa() // Choose the paymentmethod you want to use + .PayRecurrent(new CreditCardPayRecurrentRequest // choose the action you want to use and provide the payment method specific info. + { + + }); + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + + [TestMethod] + public void PayRemainderTestCreditCard() + { + var request = _buckarooClient + .CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + AmountDebit = 2, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + OriginalTransactionKey = "", + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .Visa() // Choose the paymentmethod you want to use + .PayRemainder(new CreditCardPayRemainderRequest // choose the action you want to use and provide the payment method specific info. + { + CustomerCode = string.Empty, + }); + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + + [TestMethod] + public void PayEncryptedTestCreditCard() + { + var request = _buckarooClient + .CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + AmountDebit = 2, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .Visa() // Choose the paymentmethod you want to use + .PayEncrypted(new CreditCardPayEncryptedRequest // choose the action you want to use and provide the payment method specific info. + { + EncryptedCardData = string.Empty, + }); + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + + [TestMethod] + public void AuthorizeEncryptedTestCreditCard() + { + var request = _buckarooClient + .CreateRequest(new StandardLogger()) // Create a request. + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() // One of the request type options. + .SetBasicFields(new TransactionBase // The transactionbase contains the base information of a transaction. + { + Currency = "EUR", + Description = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + ReturnUrl = TestSettings.ReturnUrl, + ReturnUrlCancel = TestSettings.ReturnUrlCancel, + ReturnUrlError = TestSettings.ReturnUrlError, + ReturnUrlReject = TestSettings.ReturnUrlReject, + AmountDebit = 2, + Invoice = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + Order = $"SDK_{ TestName }_{ DateTime.Now.Ticks }", + }) + .Visa() // Choose the paymentmethod you want to use + .AuthorizeEncrypted(new CreditCardAuthorizeEncryptedRequest // choose the action you want to use and provide the payment method specific info. + { + EncryptedCardData = string.Empty, + }); + + var response = request.Execute(); + + // Process.Start(response.RequiredAction.RedirectURL); + // Console.WriteLine(response.BuckarooSdkLogger.GetFullLog()); + } + + #endregion + } } From 33e52b97bdf8db156b184548cba0e6bdfedb35a5 Mon Sep 17 00:00:00 2001 From: Tim van den Hof Date: Fri, 23 Jul 2021 00:05:29 +0200 Subject: [PATCH 36/37] Fix: IDE0059 Unnecessary assignment of a value to 'response' --- .../Connection/BuckarooDelegatingHandler.cs | 150 +++++++++--------- 1 file changed, 74 insertions(+), 76 deletions(-) diff --git a/BuckarooSdk/Connection/BuckarooDelegatingHandler.cs b/BuckarooSdk/Connection/BuckarooDelegatingHandler.cs index 6fd5789..537e328 100644 --- a/BuckarooSdk/Connection/BuckarooDelegatingHandler.cs +++ b/BuckarooSdk/Connection/BuckarooDelegatingHandler.cs @@ -11,80 +11,78 @@ namespace BuckarooSdk.Connection { - internal class BuckarooDelegatingHandler : DelegatingHandler - { - private SignatureCalculationService SignatureCalculationService { get; } - - internal BuckarooDelegatingHandler(string websiteKey, string apiKey, string channel, string culture) - { - this._websiteKey = websiteKey; - this._apiKey = apiKey; - this._channel = channel; - this._culture = culture; - this._software = JsonConvert.SerializeObject(new Settings.Software()); - - this.InnerHandler = new HttpClientHandler(); - this.SignatureCalculationService = new SignatureCalculationService(); - } - - - - //Obtained from the server earlier - private readonly string _websiteKey; - private readonly string _apiKey; - private readonly string _channel; - private readonly string _culture; - private readonly string _software; - - protected override async Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) - { - HttpResponseMessage response = null; - - var requestUri = WebUtility.UrlEncode(request.RequestUri.Authority + request.RequestUri.PathAndQuery).ToLower(); - - var requestHttpMethod = request.Method.Method; - - // calculate UNIX time - var epochStart = new DateTime(1970, 01, 01, 0, 0, 0, 0, DateTimeKind.Utc); - var timeSpan = DateTime.UtcNow - epochStart; - var requestTimeStamp = Convert.ToUInt64(timeSpan.TotalSeconds).ToString(); - - // create random nonce for each request - var nonce = Guid.NewGuid().ToString("N"); - var content = new byte[0]; - - // checking if the request contains body, usually will be null with HTTP GET and DELETE - if (request.Content != null) - { - content = await request.Content.ReadAsByteArrayAsync().ConfigureAwait(false); - request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); - } - - var authorizationHeaderString = this.SignatureCalculationService.CalculateSignature(content, requestHttpMethod, requestTimeStamp, nonce, requestUri, this._websiteKey, this._apiKey); - - request.Headers.Authorization = new AuthenticationHeaderValue("hmac", authorizationHeaderString); - // set other headers - request.Headers.Add("culture", this._culture); - request.Headers.Add("channel", this._channel); - request.Headers.Add("software", this._software); - - response = await base.SendAsync(request, cancellationToken).ConfigureAwait(false); - - if (!await this.ValidateResponse(response, request.Method.ToString(), requestUri).ConfigureAwait(false)) - { - throw new AuthenticationException(); - } - - return response; - } - - protected async Task ValidateResponse(HttpResponseMessage response, string requestMethod, string requestUri) - { - response.Headers.TryGetValues("Authorization", out var authorizationResponse); - var actualHeader = authorizationResponse.ToList().First(); - var body = await response.Content.ReadAsByteArrayAsync().ConfigureAwait(false); - - return this.SignatureCalculationService.VerifySignature(body, requestMethod, requestUri, this._apiKey, actualHeader); - } - } + internal class BuckarooDelegatingHandler : DelegatingHandler + { + private SignatureCalculationService SignatureCalculationService { get; } + + internal BuckarooDelegatingHandler(string websiteKey, string apiKey, string channel, string culture) + { + this._websiteKey = websiteKey; + this._apiKey = apiKey; + this._channel = channel; + this._culture = culture; + this._software = JsonConvert.SerializeObject(new Settings.Software()); + + this.InnerHandler = new HttpClientHandler(); + this.SignatureCalculationService = new SignatureCalculationService(); + } + + + + //Obtained from the server earlier + private readonly string _websiteKey; + private readonly string _apiKey; + private readonly string _channel; + private readonly string _culture; + private readonly string _software; + + protected override async Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) + { + var requestUri = WebUtility.UrlEncode(request.RequestUri.Authority + request.RequestUri.PathAndQuery).ToLower(); + + var requestHttpMethod = request.Method.Method; + + // calculate UNIX time + var epochStart = new DateTime(1970, 01, 01, 0, 0, 0, 0, DateTimeKind.Utc); + var timeSpan = DateTime.UtcNow - epochStart; + var requestTimeStamp = Convert.ToUInt64(timeSpan.TotalSeconds).ToString(); + + // create random nonce for each request + var nonce = Guid.NewGuid().ToString("N"); + var content = new byte[0]; + + // checking if the request contains body, usually will be null with HTTP GET and DELETE + if (request.Content != null) + { + content = await request.Content.ReadAsByteArrayAsync().ConfigureAwait(false); + request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); + } + + var authorizationHeaderString = this.SignatureCalculationService.CalculateSignature(content, requestHttpMethod, requestTimeStamp, nonce, requestUri, this._websiteKey, this._apiKey); + + request.Headers.Authorization = new AuthenticationHeaderValue("hmac", authorizationHeaderString); + // set other headers + request.Headers.Add("culture", this._culture); + request.Headers.Add("channel", this._channel); + request.Headers.Add("software", this._software); + + var response = await base.SendAsync(request, cancellationToken).ConfigureAwait(false); + + if (!await this.ValidateResponse(response, request.Method.ToString(), requestUri).ConfigureAwait(false)) + { + throw new AuthenticationException(); + } + + return response; + } + + protected async Task ValidateResponse(HttpResponseMessage response, string requestMethod, string requestUri) + { + response.Headers.TryGetValues("Authorization", out var authorizationResponse); + var actualHeader = authorizationResponse.ToList().First(); + var body = await response.Content.ReadAsByteArrayAsync().ConfigureAwait(false); + + return this.SignatureCalculationService.VerifySignature(body, requestMethod, requestUri, this._apiKey, actualHeader); + } + } } From 59fae3dcdb0f40a8ca9c9d812b1ae95179957c2f Mon Sep 17 00:00:00 2001 From: Tim van den Hof Date: Fri, 23 Jul 2021 00:12:31 +0200 Subject: [PATCH 37/37] Fix: IDE0059 Unnecessary assignment of a value to 'parameters' --- BuckarooSdk.Tests/GlobalSuppressions.cs | 1 + .../Services/PayPal/PayPalTests.cs | 22 +++++++++- .../Services/PayPal/PayPalTransaction.cs | 44 ++++++++++++------- 3 files changed, 51 insertions(+), 16 deletions(-) diff --git a/BuckarooSdk.Tests/GlobalSuppressions.cs b/BuckarooSdk.Tests/GlobalSuppressions.cs index 7e74f4c..ac1bfe3 100644 --- a/BuckarooSdk.Tests/GlobalSuppressions.cs +++ b/BuckarooSdk.Tests/GlobalSuppressions.cs @@ -159,6 +159,7 @@ [assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.P24.P24Tests.RefundTest")] [assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.PayPal.PayPalTests.RefundTest")] +[assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.PayPal.PayPalTests.RefundTest_Obsolete")] [assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.PayPal.PayPalTests.PayRemainderTest")] [assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.PayPal.PayPalTests.ExtraInfoTest")] [assembly: SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Manual testing variables, see issue #48.", Scope = "member", Target = "~M:BuckarooSdk.Tests.Services.PayPal.PayPalTests.PayRecurrentTest")] diff --git a/BuckarooSdk.Tests/Services/PayPal/PayPalTests.cs b/BuckarooSdk.Tests/Services/PayPal/PayPalTests.cs index 75b8c0f..40e9311 100644 --- a/BuckarooSdk.Tests/Services/PayPal/PayPalTests.cs +++ b/BuckarooSdk.Tests/Services/PayPal/PayPalTests.cs @@ -44,7 +44,8 @@ public void PayTest() } [TestMethod] - public void RefundTest() + [Obsolete] + public void RefundTest_Obsolete() { var request = _buckarooClient .CreateRequest() @@ -66,6 +67,25 @@ public void RefundTest() var response = request.Execute(); } + [TestMethod] + public void RefundTest() + { + var request = _buckarooClient + .CreateRequest() + .Authenticate(TestSettings.WebsiteKey, TestSettings.SecretKey, false, new CultureInfo("nl-NL")) + .TransactionRequest() + .SetBasicFields(new TransactionBase + { + Currency = "EUR", + AmountDebit = 0.02m, + Invoice = $"SDK_TEST_{DateTime.Now.Ticks}" + }) + .PayPal() + .Refund(); + + var response = request.Execute(); + } + [TestMethod] public void PayRecurrentTest() { diff --git a/BuckarooSdk/Services/PayPal/PayPalTransaction.cs b/BuckarooSdk/Services/PayPal/PayPalTransaction.cs index 2cf5ecc..a9ab949 100644 --- a/BuckarooSdk/Services/PayPal/PayPalTransaction.cs +++ b/BuckarooSdk/Services/PayPal/PayPalTransaction.cs @@ -1,17 +1,18 @@ -using BuckarooSdk.Transaction; +using System; +using BuckarooSdk.Transaction; namespace BuckarooSdk.Services.PayPal { + /// + /// PayPal transaction. + /// public class PayPalTransaction { - /// - /// The configured transaction - /// - private ConfiguredTransaction ConfiguredTransaction { get; set; } + private readonly ConfiguredTransaction _configuredTransaction; internal PayPalTransaction(ConfiguredTransaction configuredTransaction) { - this.ConfiguredTransaction = configuredTransaction; + _configuredTransaction = configuredTransaction; } /// @@ -23,25 +24,36 @@ internal PayPalTransaction(ConfiguredTransaction configuredTransaction) public ConfiguredServiceTransaction Pay(PayPalPayRequest request) { var parameters = ServiceHelper.CreateServiceParameters(request); - var configuredServiceTransaction = new ConfiguredServiceTransaction(this.ConfiguredTransaction.BaseTransaction); + var configuredServiceTransaction = new ConfiguredServiceTransaction(_configuredTransaction.BaseTransaction); configuredServiceTransaction.BaseTransaction.AddService("PayPal", parameters, "pay", "1"); return configuredServiceTransaction; } + + /// + /// The refund function creates a configured transaction that is ready to be executed. + /// + /// + public ConfiguredServiceTransaction Refund() + { + var configuredServiceTransaction = new ConfiguredServiceTransaction(_configuredTransaction.BaseTransaction); + configuredServiceTransaction.BaseTransaction.AddService("PayPal", null, "refund", "1"); + + return configuredServiceTransaction; + } + /// /// The refund function creates a configured transaction with an PayPalRefundRequest request, /// that is ready to be executed. /// /// A PayPalRefundRequest /// + [Obsolete("PayPal refund request is no longer needed.")] public ConfiguredServiceTransaction Refund(PayPalRefundRequest request) { - var parameters = ServiceHelper.CreateServiceParameters(request); - var configuredServiceTransaction = new ConfiguredServiceTransaction(this.ConfiguredTransaction.BaseTransaction); - configuredServiceTransaction.BaseTransaction.AddService("PayPal", null, "refund", "1"); - - return configuredServiceTransaction; + return Refund(); } + /// /// The payrecurrent function creates a configured transaction with an PayPalPayRecurrentRequest request, /// that is ready to be executed. @@ -51,11 +63,12 @@ public ConfiguredServiceTransaction Refund(PayPalRefundRequest request) public ConfiguredServiceTransaction PayRecurrent(PayPalPayRecurrentRequest request) { var parameters = ServiceHelper.CreateServiceParameters(request); - var configuredServiceTransaction = new ConfiguredServiceTransaction(this.ConfiguredTransaction.BaseTransaction); + var configuredServiceTransaction = new ConfiguredServiceTransaction(_configuredTransaction.BaseTransaction); configuredServiceTransaction.BaseTransaction.AddService("PayPal", parameters, "payrecurrent", "1"); return configuredServiceTransaction; } + /// /// The payremainder function creates a configured transaction with an PayPalPayRemainderRequest request, /// that is ready to be executed. @@ -65,11 +78,12 @@ public ConfiguredServiceTransaction PayRecurrent(PayPalPayRecurrentRequest reque public ConfiguredServiceTransaction PayRemainder(PayPalPayRemainderRequest request) { var parameters = ServiceHelper.CreateServiceParameters(request); - var configuredServiceTransaction = new ConfiguredServiceTransaction(this.ConfiguredTransaction.BaseTransaction); + var configuredServiceTransaction = new ConfiguredServiceTransaction(_configuredTransaction.BaseTransaction); configuredServiceTransaction.BaseTransaction.AddService("PayPal", parameters, "payremainder", "1"); return configuredServiceTransaction; } + /// /// The extrainfo function creates a configured transaction with an PayPalExtraInfoRequest request, /// that is ready to be executed. @@ -79,7 +93,7 @@ public ConfiguredServiceTransaction PayRemainder(PayPalPayRemainderRequest reque public ConfiguredServiceTransaction ExtraInfo(PayPalExtraInfoRequest request) { var parameters = ServiceHelper.CreateServiceParameters(request); - var configuredServiceTransaction = new ConfiguredServiceTransaction(this.ConfiguredTransaction.BaseTransaction); + var configuredServiceTransaction = new ConfiguredServiceTransaction(_configuredTransaction.BaseTransaction); configuredServiceTransaction.BaseTransaction.AddService("PayPal", parameters, "ExtraInfo", "1"); return configuredServiceTransaction;