adyen-ruby-api-library 6.0.0 → 10.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (219) hide show
  1. checksums.yaml +4 -4
  2. data/.github/CODEOWNERS +1 -1
  3. data/.github/release.yml +18 -0
  4. data/.github/workflows/codeql.yml +37 -0
  5. data/.github/workflows/label_new_issues.yml +15 -0
  6. data/.github/workflows/release.yml +40 -0
  7. data/.github/workflows/ruby.yml +2 -2
  8. data/.github/workflows/rubygems_release.yml +18 -0
  9. data/.github/workflows/stale.yml +26 -0
  10. data/.gitignore +3 -0
  11. data/.rubocop.yml +8 -0
  12. data/CONTRIBUTING.md +1 -1
  13. data/Gemfile +7 -7
  14. data/Makefile +79 -0
  15. data/README.md +158 -20
  16. data/Rakefile +3 -3
  17. data/VERSION +2 -0
  18. data/adyen-ruby-api-library.gemspec +6 -3
  19. data/bin/console +2 -2
  20. data/lib/adyen/client.rb +213 -99
  21. data/lib/adyen/errors.rb +30 -22
  22. data/lib/adyen/hash_with_accessors.rb +12 -7
  23. data/lib/adyen/services/balanceControlService.rb +27 -0
  24. data/lib/adyen/services/balancePlatform/account_holders_api.rb +76 -0
  25. data/lib/adyen/services/balancePlatform/balance_accounts_api.rb +116 -0
  26. data/lib/adyen/services/balancePlatform/bank_account_validation_api.rb +26 -0
  27. data/lib/adyen/services/balancePlatform/card_orders_api.rb +36 -0
  28. data/lib/adyen/services/balancePlatform/grant_accounts_api.rb +26 -0
  29. data/lib/adyen/services/balancePlatform/grant_offers_api.rb +36 -0
  30. data/lib/adyen/services/balancePlatform/manage_card_pin_api.rb +46 -0
  31. data/lib/adyen/services/balancePlatform/manage_sca_devices_api.rb +56 -0
  32. data/lib/adyen/services/balancePlatform/network_tokens_api.rb +36 -0
  33. data/lib/adyen/services/balancePlatform/payment_instrument_groups_api.rb +46 -0
  34. data/lib/adyen/services/balancePlatform/payment_instruments_api.rb +86 -0
  35. data/lib/adyen/services/balancePlatform/platform_api.rb +46 -0
  36. data/lib/adyen/services/balancePlatform/transaction_rules_api.rb +56 -0
  37. data/lib/adyen/services/balancePlatform/transfer_routes_api.rb +26 -0
  38. data/lib/adyen/services/balancePlatform.rb +89 -0
  39. data/lib/adyen/services/binLookup.rb +37 -0
  40. data/lib/adyen/services/checkout/donations_api.rb +36 -0
  41. data/lib/adyen/services/checkout/modifications_api.rb +76 -0
  42. data/lib/adyen/services/checkout/orders_api.rb +46 -0
  43. data/lib/adyen/services/checkout/payment_links_api.rb +46 -0
  44. data/lib/adyen/services/checkout/payments_api.rb +76 -0
  45. data/lib/adyen/services/checkout/recurring_api.rb +46 -0
  46. data/lib/adyen/services/checkout/utility_api.rb +48 -0
  47. data/lib/adyen/services/checkout.rb +29 -108
  48. data/lib/adyen/services/dataProtection.rb +27 -0
  49. data/lib/adyen/services/disputes.rb +67 -0
  50. data/lib/adyen/services/legalEntityManagement/business_lines_api.rb +56 -0
  51. data/lib/adyen/services/legalEntityManagement/documents_api.rb +56 -0
  52. data/lib/adyen/services/legalEntityManagement/hosted_onboarding_api.rb +46 -0
  53. data/lib/adyen/services/legalEntityManagement/legal_entities_api.rb +76 -0
  54. data/lib/adyen/services/legalEntityManagement/pci_questionnaires_api.rb +66 -0
  55. data/lib/adyen/services/legalEntityManagement/tax_e_delivery_consent_api.rb +36 -0
  56. data/lib/adyen/services/legalEntityManagement/terms_of_service_api.rb +66 -0
  57. data/lib/adyen/services/legalEntityManagement/transfer_instruments_api.rb +56 -0
  58. data/lib/adyen/services/legalEntityManagement.rb +59 -0
  59. data/lib/adyen/services/management/account_company_level_api.rb +46 -0
  60. data/lib/adyen/services/management/account_merchant_level_api.rb +56 -0
  61. data/lib/adyen/services/management/account_store_level_api.rb +96 -0
  62. data/lib/adyen/services/management/allowed_origins_company_level_api.rb +56 -0
  63. data/lib/adyen/services/management/allowed_origins_merchant_level_api.rb +56 -0
  64. data/lib/adyen/services/management/android_files_company_level_api.rb +76 -0
  65. data/lib/adyen/services/management/api_credentials_company_level_api.rb +56 -0
  66. data/lib/adyen/services/management/api_credentials_merchant_level_api.rb +56 -0
  67. data/lib/adyen/services/management/api_key_company_level_api.rb +26 -0
  68. data/lib/adyen/services/management/api_key_merchant_level_api.rb +26 -0
  69. data/lib/adyen/services/management/client_key_company_level_api.rb +26 -0
  70. data/lib/adyen/services/management/client_key_merchant_level_api.rb +26 -0
  71. data/lib/adyen/services/management/my_api_credential_api.rb +76 -0
  72. data/lib/adyen/services/management/payment_methods_merchant_level_api.rb +76 -0
  73. data/lib/adyen/services/management/payout_settings_merchant_level_api.rb +66 -0
  74. data/lib/adyen/services/management/split_configuration_merchant_level_api.rb +106 -0
  75. data/lib/adyen/services/management/terminal_actions_company_level_api.rb +36 -0
  76. data/lib/adyen/services/management/terminal_actions_terminal_level_api.rb +26 -0
  77. data/lib/adyen/services/management/terminal_orders_company_level_api.rb +116 -0
  78. data/lib/adyen/services/management/terminal_orders_merchant_level_api.rb +116 -0
  79. data/lib/adyen/services/management/terminal_settings_company_level_api.rb +56 -0
  80. data/lib/adyen/services/management/terminal_settings_merchant_level_api.rb +56 -0
  81. data/lib/adyen/services/management/terminal_settings_store_level_api.rb +96 -0
  82. data/lib/adyen/services/management/terminal_settings_terminal_level_api.rb +56 -0
  83. data/lib/adyen/services/management/terminals_terminal_level_api.rb +36 -0
  84. data/lib/adyen/services/management/users_company_level_api.rb +56 -0
  85. data/lib/adyen/services/management/users_merchant_level_api.rb +56 -0
  86. data/lib/adyen/services/management/webhooks_company_level_api.rb +86 -0
  87. data/lib/adyen/services/management/webhooks_merchant_level_api.rb +86 -0
  88. data/lib/adyen/services/management.rb +164 -0
  89. data/lib/adyen/services/marketpay.rb +42 -36
  90. data/lib/adyen/services/payment.rb +149 -0
  91. data/lib/adyen/services/paymentsApp.rb +67 -0
  92. data/lib/adyen/services/payout/initialization_api.rb +46 -0
  93. data/lib/adyen/services/payout/instant_payouts_api.rb +26 -0
  94. data/lib/adyen/services/payout/reviewing_api.rb +36 -0
  95. data/lib/adyen/services/payout.rb +34 -0
  96. data/lib/adyen/services/posMobile.rb +27 -0
  97. data/lib/adyen/services/posTerminalManagement.rb +82 -0
  98. data/lib/adyen/services/recurring.rb +70 -13
  99. data/lib/adyen/services/service.rb +8 -2
  100. data/lib/adyen/services/storedValue.rb +77 -0
  101. data/lib/adyen/services/terminalCloudAPI.rb +38 -0
  102. data/lib/adyen/services/transfers/capital_api.rb +55 -0
  103. data/lib/adyen/services/transfers/transactions_api.rb +36 -0
  104. data/lib/adyen/services/transfers/transfers_api.rb +76 -0
  105. data/lib/adyen/services/transfers.rb +34 -0
  106. data/lib/adyen/utils/hmac_validator.rb +52 -22
  107. data/lib/adyen/version.rb +2 -2
  108. data/lib/adyen-ruby-api-library.rb +23 -15
  109. data/renovate.json +3 -3
  110. data/spec/account_spec.rb +20 -20
  111. data/spec/balance_control_spec.rb +43 -0
  112. data/spec/balance_platform_spec.rb +129 -0
  113. data/spec/bin_lookup_spec.rb +69 -11
  114. data/spec/checkout-oauth_spec.rb +588 -0
  115. data/spec/checkout_spec.rb +591 -314
  116. data/spec/client_spec.rb +240 -45
  117. data/spec/data_protection_spec.rb +4 -4
  118. data/spec/disputes_spec.rb +45 -0
  119. data/spec/errors_spec.rb +44 -15
  120. data/spec/fund_spec.rb +10 -10
  121. data/spec/hash_with_accessors_spec.rb +18 -8
  122. data/spec/hop_spec.rb +4 -4
  123. data/spec/lem_spec.rb +63 -0
  124. data/spec/management-oauth_spec.rb +62 -0
  125. data/spec/management_spec.rb +66 -0
  126. data/spec/mocks/requests/BalanceControl/balance_transfer.json +10 -0
  127. data/spec/mocks/requests/BalancePlatform/create_account_holder.json +5 -0
  128. data/spec/mocks/requests/BalancePlatform/update_account_holder.json +10 -0
  129. data/spec/mocks/requests/Checkout/amount_updates.json +22 -0
  130. data/spec/mocks/requests/Checkout/apple_pay_sessions.json +5 -0
  131. data/spec/mocks/requests/Checkout/capture.json +34 -0
  132. data/spec/mocks/requests/Checkout/generic_cancel.json +5 -0
  133. data/spec/mocks/requests/Checkout/modifications_request.json +0 -0
  134. data/spec/mocks/requests/Checkout/psp_cancel.json +4 -0
  135. data/spec/mocks/requests/Checkout/refund.json +34 -0
  136. data/spec/mocks/requests/DisputesService/retrieve_applicable_defense_reasons.json +4 -0
  137. data/spec/mocks/requests/LegalEntityManagement/create_business_line.json +15 -0
  138. data/spec/mocks/requests/Management/create_store.json +15 -0
  139. data/spec/mocks/requests/Recurring/create_permit.json +6 -0
  140. data/spec/mocks/requests/StoredValue/issue_giftcard.json +12 -0
  141. data/spec/mocks/requests/TerminalCloudAPI/connected_terminals.json +3 -0
  142. data/spec/mocks/requests/TerminalCloudAPI/sync_payment.json +29 -0
  143. data/spec/mocks/requests/Transfers/get_transactions.json +82 -0
  144. data/spec/mocks/requests/Transfers/make_transfer.json +32 -0
  145. data/spec/mocks/responses/BalanceControl/balance_transfer.json +14 -0
  146. data/spec/mocks/responses/BalancePlatform/create_account_holder.json +41 -0
  147. data/spec/mocks/responses/BalancePlatform/get_balance_account.json +15 -0
  148. data/spec/mocks/responses/BalancePlatform/update_account_holder.json +16 -0
  149. data/spec/mocks/responses/Checkout/amount_updates.json +24 -0
  150. data/spec/mocks/responses/Checkout/apple_pay_sessions.json +3 -0
  151. data/spec/mocks/responses/Checkout/capture.json +37 -0
  152. data/spec/mocks/responses/Checkout/generic_cancel.json +7 -0
  153. data/spec/mocks/responses/Checkout/modifications.json +0 -0
  154. data/spec/mocks/responses/Checkout/psp_cancel.json +7 -0
  155. data/spec/mocks/responses/Checkout/refund.json +37 -0
  156. data/spec/mocks/responses/Checkout/stored_payment_methods.json +1 -0
  157. data/spec/mocks/responses/DisputesService/retrieve_applicable_defense_reasons.json +71 -0
  158. data/spec/mocks/responses/LegalEntityManagement/create_business_line.json +17 -0
  159. data/spec/mocks/responses/Management/create_store.json +23 -0
  160. data/spec/mocks/responses/Management/get_companies.json +42 -0
  161. data/spec/mocks/responses/Recurring/create_permit.json +4 -0
  162. data/spec/mocks/responses/StoredValue/issue_giftcard.json +13 -0
  163. data/spec/mocks/responses/TerminalCloudAPI/connected_terminals.json +5 -0
  164. data/spec/mocks/responses/TerminalCloudAPI/sync_payment.json +18 -0
  165. data/spec/mocks/responses/Transfers/get_transactions.json +82 -0
  166. data/spec/mocks/responses/Transfers/make_transfer.json +36 -0
  167. data/spec/mocks/responses/Webhooks/backslash_webhook.json +41 -0
  168. data/spec/mocks/responses/Webhooks/colon_webhook.json +41 -0
  169. data/spec/mocks/responses/Webhooks/forwardslash_webhook.json +41 -0
  170. data/spec/mocks/responses/Webhooks/mixed_webhook.json +41 -0
  171. data/spec/notification_spec.rb +9 -9
  172. data/spec/payments_spec.rb +39 -22
  173. data/spec/payouts_spec.rb +39 -15
  174. data/spec/pos_terminal_management_spec.rb +44 -0
  175. data/spec/recurring_spec.rb +8 -8
  176. data/spec/service_spec.rb +4 -0
  177. data/spec/spec_helper.rb +42 -46
  178. data/spec/stored_value_spec.rb +44 -0
  179. data/spec/terminal_cloud_api_spec.rb +91 -0
  180. data/spec/transfers_spec.rb +64 -0
  181. data/spec/utils/hmac_validator_spec.rb +53 -23
  182. data/templates/api-single.mustache +32 -0
  183. data/templates/api-small.mustache +39 -0
  184. data/templates/api.mustache +38 -0
  185. data/templates/config.yaml +10 -0
  186. metadata +160 -47
  187. data/.github/dependabot.yml +0 -8
  188. data/docs/checkout.html +0 -128
  189. data/docs/index.html +0 -50
  190. data/docs/install-library.html +0 -61
  191. data/docs/javascripts/prism.js +0 -5
  192. data/docs/javascripts/scale.fix.js +0 -17
  193. data/docs/marketpay.html +0 -171
  194. data/docs/params.json +0 -1
  195. data/docs/payment.html +0 -106
  196. data/docs/payout.html +0 -135
  197. data/docs/recurring.html +0 -113
  198. data/docs/stylesheets/github-light.css +0 -115
  199. data/docs/stylesheets/prism.css +0 -140
  200. data/docs/stylesheets/styles.css +0 -324
  201. data/docs/using-library.html +0 -67
  202. data/lib/adyen/services/bin_lookup.rb +0 -18
  203. data/lib/adyen/services/data_protection.rb +0 -17
  204. data/lib/adyen/services/dispute.rb +0 -20
  205. data/lib/adyen/services/payments.rb +0 -34
  206. data/lib/adyen/services/payouts.rb +0 -22
  207. data/lib/adyen/services/postfmapi.rb +0 -19
  208. data/spec/dispute_spec.rb +0 -17
  209. data/spec/mocks/requests/DisputeService/defend_dispute.json +0 -5
  210. data/spec/mocks/requests/DisputeService/delete_dispute_defense_document.json +0 -5
  211. data/spec/mocks/requests/DisputeService/retrieve_applicable_defense_reasons.json +0 -4
  212. data/spec/mocks/requests/DisputeService/supply_defense_document.json +0 -11
  213. data/spec/mocks/requests/Recurring/store_token.json +0 -15
  214. data/spec/mocks/responses/DisputeService/defend_dispute.json +0 -5
  215. data/spec/mocks/responses/DisputeService/delete_dispute_defense_document.json +0 -5
  216. data/spec/mocks/responses/DisputeService/retrieve_applicable_defense_reasons.json +0 -28
  217. data/spec/mocks/responses/DisputeService/supply_defense_document.json +0 -5
  218. data/spec/mocks/responses/Recurring/store_token.json +0 -7
  219. data/spec/postfmapi_spec.rb +0 -16
@@ -1,20 +1,77 @@
1
- require_relative 'service'
2
-
1
+ require_relative './service'
3
2
  module Adyen
3
+
4
+ # NOTE: This class is auto generated by OpenAPI Generator
5
+ # Ref: https://openapi-generator.tech
6
+ #
7
+ # Do not edit the class manually.
4
8
  class Recurring < Service
5
- attr_accessor :version
6
- DEFAULT_VERSION = 49
9
+ attr_accessor :service, :version
7
10
 
11
+ DEFAULT_VERSION = 68
8
12
  def initialize(client, version = DEFAULT_VERSION)
9
- service = 'Recurring'
10
- method_names = [
11
- :list_recurring_details,
12
- :disable,
13
- :store_token,
14
- :schedule_account_updater
15
- ]
16
-
17
- super(client, version, service, method_names)
13
+ super(client, version, 'Recurring')
14
+ end
15
+
16
+ # Create new permits linked to a recurring contract.
17
+ def create_permit(request, headers: {})
18
+ endpoint = '/createPermit'.gsub(/{.+?}/, '%s')
19
+ endpoint = endpoint.gsub(%r{^/}, '')
20
+ endpoint = format(endpoint)
21
+
22
+ action = { method: 'post', url: endpoint }
23
+ @client.call_adyen_api(@service, action, request, headers, @version)
24
+ end
25
+
26
+ # Disable stored payment details
27
+ def disable(request, headers: {})
28
+ endpoint = '/disable'.gsub(/{.+?}/, '%s')
29
+ endpoint = endpoint.gsub(%r{^/}, '')
30
+ endpoint = format(endpoint)
31
+
32
+ action = { method: 'post', url: endpoint }
33
+ @client.call_adyen_api(@service, action, request, headers, @version)
34
+ end
35
+
36
+ # Disable an existing permit.
37
+ def disable_permit(request, headers: {})
38
+ endpoint = '/disablePermit'.gsub(/{.+?}/, '%s')
39
+ endpoint = endpoint.gsub(%r{^/}, '')
40
+ endpoint = format(endpoint)
41
+
42
+ action = { method: 'post', url: endpoint }
43
+ @client.call_adyen_api(@service, action, request, headers, @version)
18
44
  end
45
+
46
+ # Get stored payment details
47
+ def list_recurring_details(request, headers: {})
48
+ endpoint = '/listRecurringDetails'.gsub(/{.+?}/, '%s')
49
+ endpoint = endpoint.gsub(%r{^/}, '')
50
+ endpoint = format(endpoint)
51
+
52
+ action = { method: 'post', url: endpoint }
53
+ @client.call_adyen_api(@service, action, request, headers, @version)
54
+ end
55
+
56
+ # Ask issuer to notify the shopper
57
+ def notify_shopper(request, headers: {})
58
+ endpoint = '/notifyShopper'.gsub(/{.+?}/, '%s')
59
+ endpoint = endpoint.gsub(%r{^/}, '')
60
+ endpoint = format(endpoint)
61
+
62
+ action = { method: 'post', url: endpoint }
63
+ @client.call_adyen_api(@service, action, request, headers, @version)
64
+ end
65
+
66
+ # Schedule running the Account Updater
67
+ def schedule_account_updater(request, headers: {})
68
+ endpoint = '/scheduleAccountUpdater'.gsub(/{.+?}/, '%s')
69
+ endpoint = endpoint.gsub(%r{^/}, '')
70
+ endpoint = format(endpoint)
71
+
72
+ action = { method: 'post', url: endpoint }
73
+ @client.call_adyen_api(@service, action, request, headers, @version)
74
+ end
75
+
19
76
  end
20
77
  end
@@ -11,7 +11,7 @@ module Adyen
11
11
  method_name.to_s.gsub(/_./) { |x| x[1].upcase }
12
12
  end
13
13
 
14
- def initialize(client, version, service, method_names, with_application_info = [])
14
+ def initialize(client, version, service, method_names = [], with_application_info = [])
15
15
  @client = client
16
16
  @version = version
17
17
  @service = service
@@ -20,9 +20,15 @@ module Adyen
20
20
  method_names.each do |method_name|
21
21
  define_singleton_method method_name do |request, headers = {}|
22
22
  action = self.class.action_for_method_name(method_name)
23
- @client.call_adyen_api(@service, action, request, headers, @version, with_application_info.include?(method_name))
23
+ @client.call_adyen_api(@service, action, request, headers, @version,
24
+ _with_application_info: with_application_info.include?(method_name))
24
25
  end
25
26
  end
26
27
  end
28
+
29
+ # create query parameter from a hash
30
+ def create_query_string(arr)
31
+ "?#{URI.encode_www_form(arr)}"
32
+ end
27
33
  end
28
34
  end
@@ -0,0 +1,77 @@
1
+ require_relative './service'
2
+ module Adyen
3
+
4
+ # NOTE: This class is auto generated by OpenAPI Generator
5
+ # Ref: https://openapi-generator.tech
6
+ #
7
+ # Do not edit the class manually.
8
+ class StoredValue < Service
9
+ attr_accessor :service, :version
10
+
11
+ DEFAULT_VERSION = 46
12
+ def initialize(client, version = DEFAULT_VERSION)
13
+ super(client, version, 'StoredValue')
14
+ end
15
+
16
+ # Changes the status of the payment method.
17
+ def change_status(request, headers: {})
18
+ endpoint = '/changeStatus'.gsub(/{.+?}/, '%s')
19
+ endpoint = endpoint.gsub(%r{^/}, '')
20
+ endpoint = format(endpoint)
21
+
22
+ action = { method: 'post', url: endpoint }
23
+ @client.call_adyen_api(@service, action, request, headers, @version)
24
+ end
25
+
26
+ # Checks the balance.
27
+ def check_balance(request, headers: {})
28
+ endpoint = '/checkBalance'.gsub(/{.+?}/, '%s')
29
+ endpoint = endpoint.gsub(%r{^/}, '')
30
+ endpoint = format(endpoint)
31
+
32
+ action = { method: 'post', url: endpoint }
33
+ @client.call_adyen_api(@service, action, request, headers, @version)
34
+ end
35
+
36
+ # Issues a new card.
37
+ def issue(request, headers: {})
38
+ endpoint = '/issue'.gsub(/{.+?}/, '%s')
39
+ endpoint = endpoint.gsub(%r{^/}, '')
40
+ endpoint = format(endpoint)
41
+
42
+ action = { method: 'post', url: endpoint }
43
+ @client.call_adyen_api(@service, action, request, headers, @version)
44
+ end
45
+
46
+ # Loads the payment method.
47
+ def load(request, headers: {})
48
+ endpoint = '/load'.gsub(/{.+?}/, '%s')
49
+ endpoint = endpoint.gsub(%r{^/}, '')
50
+ endpoint = format(endpoint)
51
+
52
+ action = { method: 'post', url: endpoint }
53
+ @client.call_adyen_api(@service, action, request, headers, @version)
54
+ end
55
+
56
+ # Merge the balance of two cards.
57
+ def merge_balance(request, headers: {})
58
+ endpoint = '/mergeBalance'.gsub(/{.+?}/, '%s')
59
+ endpoint = endpoint.gsub(%r{^/}, '')
60
+ endpoint = format(endpoint)
61
+
62
+ action = { method: 'post', url: endpoint }
63
+ @client.call_adyen_api(@service, action, request, headers, @version)
64
+ end
65
+
66
+ # Voids a transaction.
67
+ def void_transaction(request, headers: {})
68
+ endpoint = '/voidTransaction'.gsub(/{.+?}/, '%s')
69
+ endpoint = endpoint.gsub(%r{^/}, '')
70
+ endpoint = format(endpoint)
71
+
72
+ action = { method: 'post', url: endpoint }
73
+ @client.call_adyen_api(@service, action, request, headers, @version)
74
+ end
75
+
76
+ end
77
+ end
@@ -0,0 +1,38 @@
1
+ require_relative './service'
2
+ module Adyen
3
+ class TerminalCloudAPI < Service
4
+ attr_accessor :service
5
+
6
+ def initialize(client)
7
+ super(client, nil ,'TerminalCloudAPI')
8
+ end
9
+
10
+ def connected_terminals(request, headers: {})
11
+ endpoint = '/connectedTerminals'.gsub(/{.+?}/, '%s')
12
+ endpoint = endpoint.gsub(%r{^/}, '')
13
+ endpoint = format(endpoint)
14
+
15
+ action = { method: 'post', url: endpoint }
16
+ @client.call_adyen_api(@service, action, request, headers, @version)
17
+ end
18
+
19
+ def sync(request, headers: {})
20
+ endpoint = '/sync'.gsub(/{.+?}/, '%s')
21
+ endpoint = endpoint.gsub(%r{^/}, '')
22
+ endpoint = format(endpoint)
23
+
24
+ action = { method: 'post', url: endpoint }
25
+ @client.call_adyen_api(@service, action, request, headers, @version)
26
+ end
27
+
28
+ def async(request, headers: {})
29
+ endpoint = '/async'.gsub(/{.+?}/, '%s')
30
+ endpoint = endpoint.gsub(%r{^/}, '')
31
+ endpoint = format(endpoint)
32
+
33
+ action = { method: 'post', url: endpoint }
34
+ @client.call_adyen_api(@service, action, request, headers, @version)
35
+ end
36
+
37
+ end
38
+ end
@@ -0,0 +1,55 @@
1
+ require_relative '../service'
2
+ module Adyen
3
+
4
+ # NOTE: This class is auto generated by OpenAPI Generator
5
+ # Ref: https://openapi-generator.tech
6
+ #
7
+ # Do not edit the class manually.
8
+ class CapitalApi < Service
9
+ attr_accessor :service, :version
10
+
11
+ def initialize(client, version = DEFAULT_VERSION)
12
+ super(client, version, 'Transfers')
13
+ end
14
+
15
+ # Get a capital account
16
+ #
17
+ # Deprecated since Transfers API v4
18
+ # Use the `/grants` endpoint from the [Capital API](https://docs.adyen.com/api-explorer/capital/latest/get/grants) instead.
19
+ def get_capital_account(headers: {}, query_params: {})
20
+ endpoint = '/grants'.gsub(/{.+?}/, '%s')
21
+ endpoint = endpoint.gsub(%r{^/}, '')
22
+ endpoint = format(endpoint)
23
+ endpoint += create_query_string(query_params)
24
+ action = { method: 'get', url: endpoint }
25
+ @client.call_adyen_api(@service, action, {}, headers, @version)
26
+ end
27
+
28
+ # Get grant reference details
29
+ #
30
+ # Deprecated since Transfers API v4
31
+ # Use the `/grants/{grantId}` endpoint from the [Capital API](https://docs.adyen.com/api-explorer/capital/latest/get/grants/(grantId)) instead.
32
+ def get_grant_reference_details(id, headers: {})
33
+ endpoint = '/grants/{id}'.gsub(/{.+?}/, '%s')
34
+ endpoint = endpoint.gsub(%r{^/}, '')
35
+ endpoint = format(endpoint, id)
36
+
37
+ action = { method: 'get', url: endpoint }
38
+ @client.call_adyen_api(@service, action, {}, headers, @version)
39
+ end
40
+
41
+ # Request a grant payout
42
+ #
43
+ # Deprecated since Transfers API v4
44
+ # Use the `/grants` endpoint from the [Capital API](https://docs.adyen.com/api-explorer/capital/latest/post/grants) instead.
45
+ def request_grant_payout(request, headers: {})
46
+ endpoint = '/grants'.gsub(/{.+?}/, '%s')
47
+ endpoint = endpoint.gsub(%r{^/}, '')
48
+ endpoint = format(endpoint)
49
+
50
+ action = { method: 'post', url: endpoint }
51
+ @client.call_adyen_api(@service, action, request, headers, @version)
52
+ end
53
+
54
+ end
55
+ end
@@ -0,0 +1,36 @@
1
+ require_relative '../service'
2
+ module Adyen
3
+
4
+ # NOTE: This class is auto generated by OpenAPI Generator
5
+ # Ref: https://openapi-generator.tech
6
+ #
7
+ # Do not edit the class manually.
8
+ class TransactionsApi < Service
9
+ attr_accessor :service, :version
10
+
11
+ def initialize(client, version = DEFAULT_VERSION)
12
+ super(client, version, 'Transfers')
13
+ end
14
+
15
+ # Get all transactions
16
+ def get_all_transactions(headers: {}, query_params: {})
17
+ endpoint = '/transactions'.gsub(/{.+?}/, '%s')
18
+ endpoint = endpoint.gsub(%r{^/}, '')
19
+ endpoint = format(endpoint)
20
+ endpoint += create_query_string(query_params)
21
+ action = { method: 'get', url: endpoint }
22
+ @client.call_adyen_api(@service, action, {}, headers, @version)
23
+ end
24
+
25
+ # Get a transaction
26
+ def get_transaction(id, headers: {})
27
+ endpoint = '/transactions/{id}'.gsub(/{.+?}/, '%s')
28
+ endpoint = endpoint.gsub(%r{^/}, '')
29
+ endpoint = format(endpoint, id)
30
+
31
+ action = { method: 'get', url: endpoint }
32
+ @client.call_adyen_api(@service, action, {}, headers, @version)
33
+ end
34
+
35
+ end
36
+ end
@@ -0,0 +1,76 @@
1
+ require_relative '../service'
2
+ module Adyen
3
+
4
+ # NOTE: This class is auto generated by OpenAPI Generator
5
+ # Ref: https://openapi-generator.tech
6
+ #
7
+ # Do not edit the class manually.
8
+ class TransfersApi < Service
9
+ attr_accessor :service, :version
10
+
11
+ def initialize(client, version = DEFAULT_VERSION)
12
+ super(client, version, 'Transfers')
13
+ end
14
+
15
+ # Approve initiated transfers
16
+ def approve_initiated_transfers(request, headers: {})
17
+ endpoint = '/transfers/approve'.gsub(/{.+?}/, '%s')
18
+ endpoint = endpoint.gsub(%r{^/}, '')
19
+ endpoint = format(endpoint)
20
+
21
+ action = { method: 'post', url: endpoint }
22
+ @client.call_adyen_api(@service, action, request, headers, @version)
23
+ end
24
+
25
+ # Cancel initiated transfers
26
+ def cancel_initiated_transfers(request, headers: {})
27
+ endpoint = '/transfers/cancel'.gsub(/{.+?}/, '%s')
28
+ endpoint = endpoint.gsub(%r{^/}, '')
29
+ endpoint = format(endpoint)
30
+
31
+ action = { method: 'post', url: endpoint }
32
+ @client.call_adyen_api(@service, action, request, headers, @version)
33
+ end
34
+
35
+ # Get all transfers
36
+ def get_all_transfers(headers: {}, query_params: {})
37
+ endpoint = '/transfers'.gsub(/{.+?}/, '%s')
38
+ endpoint = endpoint.gsub(%r{^/}, '')
39
+ endpoint = format(endpoint)
40
+ endpoint += create_query_string(query_params)
41
+ action = { method: 'get', url: endpoint }
42
+ @client.call_adyen_api(@service, action, {}, headers, @version)
43
+ end
44
+
45
+ # Get a transfer
46
+ def get_transfer(id, headers: {})
47
+ endpoint = '/transfers/{id}'.gsub(/{.+?}/, '%s')
48
+ endpoint = endpoint.gsub(%r{^/}, '')
49
+ endpoint = format(endpoint, id)
50
+
51
+ action = { method: 'get', url: endpoint }
52
+ @client.call_adyen_api(@service, action, {}, headers, @version)
53
+ end
54
+
55
+ # Return a transfer
56
+ def return_transfer(request, transfer_id, headers: {})
57
+ endpoint = '/transfers/{transferId}/returns'.gsub(/{.+?}/, '%s')
58
+ endpoint = endpoint.gsub(%r{^/}, '')
59
+ endpoint = format(endpoint, transfer_id)
60
+
61
+ action = { method: 'post', url: endpoint }
62
+ @client.call_adyen_api(@service, action, request, headers, @version)
63
+ end
64
+
65
+ # Transfer funds
66
+ def transfer_funds(request, headers: {})
67
+ endpoint = '/transfers'.gsub(/{.+?}/, '%s')
68
+ endpoint = endpoint.gsub(%r{^/}, '')
69
+ endpoint = format(endpoint)
70
+
71
+ action = { method: 'post', url: endpoint }
72
+ @client.call_adyen_api(@service, action, request, headers, @version)
73
+ end
74
+
75
+ end
76
+ end
@@ -0,0 +1,34 @@
1
+ require_relative 'transfers/capital_api'
2
+ require_relative 'transfers/transactions_api'
3
+ require_relative 'transfers/transfers_api'
4
+
5
+ module Adyen
6
+
7
+ # NOTE: This class is auto generated by OpenAPI Generator
8
+ # Ref: https://openapi-generator.tech
9
+ #
10
+ # Do not edit the class manually.
11
+ class Transfers
12
+ attr_accessor :service, :version
13
+
14
+ DEFAULT_VERSION = 4
15
+ def initialize(client, version = DEFAULT_VERSION)
16
+ @service = 'Transfers'
17
+ @client = client
18
+ @version = version
19
+ end
20
+
21
+ def capital_api
22
+ @capital_api ||= Adyen::CapitalApi.new(@client, @version)
23
+ end
24
+
25
+ def transactions_api
26
+ @transactions_api ||= Adyen::TransactionsApi.new(@client, @version)
27
+ end
28
+
29
+ def transfers_api
30
+ @transfers_api ||= Adyen::TransfersApi.new(@client, @version)
31
+ end
32
+
33
+ end
34
+ end
@@ -3,45 +3,75 @@ module Adyen
3
3
  class HmacValidator
4
4
  HMAC_ALGORITHM = 'sha256'.freeze
5
5
  DATA_SEPARATOR = ':'.freeze
6
- NOTIFICATION_VALIDATION_KEYS = %w[
6
+ WEBHOOK_VALIDATION_KEYS = %w[
7
7
  pspReference originalReference merchantAccountCode merchantReference
8
8
  amount.value amount.currency eventCode success
9
9
  ].freeze
10
10
 
11
+ # <b>DEPRECATED:</b> Please use valid_webhook_hmac?() instead.
11
12
  def valid_notification_hmac?(notification_request_item, hmac_key)
12
- expected_sign = calculate_notification_hmac(notification_request_item, hmac_key)
13
- merchant_sign = fetch(notification_request_item, 'additionalData.hmacSignature')
13
+ valid_webhook_hmac?(notification_request_item, hmac_key)
14
+ end
15
+
16
+ # validates the HMAC signature of the NotificationRequestItem object. Use for webhooks that provide the
17
+ # hmacSignature as part of the payload `AdditionalData` (i.e. Payments)
18
+ #
19
+ # @param webhook_request_item [Object] The webhook request item.
20
+ # @param hmac_key [String] The HMAC key used to validate the payload.
21
+
22
+ # @return [Boolean] Returns true if the HMAC signature is valid, otherwise false.
23
+ def valid_webhook_hmac?(webhook_request_item, hmac_key)
24
+ expected_sign = calculate_webhook_hmac(webhook_request_item, hmac_key)
25
+ merchant_sign =
26
+ webhook_request_item.dig('additionalData', 'hmacSignature')
14
27
 
15
28
  expected_sign == merchant_sign
16
29
  end
17
30
 
18
- def calculate_notification_hmac(notification_request_item, hmac_key)
19
- data = data_to_sign(notification_request_item)
31
+ # validates the HMAC signature of a payload against an expected signature. Use for webhooks that provide the
32
+ # hmacSignature in the HTTP header (i.e. Banking, Management API)
33
+ #
34
+ # @param hmac_signature [String] The HMAC signature to validate.
35
+ # @param hmac_key [String] The HMAC key used to validate the payload.
36
+ # @param payload [String] The webhook payload.
37
+
38
+ # @return [Boolean] Returns true if the HMAC signature is valid, otherwise false.
39
+ def valid_webhook_payload_hmac?(hmac_signature, hmac_key, payload)
40
+ expected_sign = calculate_webhook_payload_hmac(payload, hmac_key)
41
+ puts(expected_sign)
42
+ expected_sign == hmac_signature
43
+ end
20
44
 
21
- Base64.strict_encode64(OpenSSL::HMAC.digest(HMAC_ALGORITHM, [hmac_key].pack('H*'), data))
45
+ # <b>DEPRECATED:</b> Please use calculate_webhook_hmac() instead.
46
+ def calculate_notification_hmac(notification_request_item, hmac_key)
47
+ calculate_webhook_hmac(notification_request_item, hmac_key)
22
48
  end
23
49
 
24
- def data_to_sign(notification_request_item)
25
- NOTIFICATION_VALIDATION_KEYS.map { |key| fetch(notification_request_item, key).to_s }
26
- .map { |value| value.gsub('\\', '\\\\').gsub(':', '\\:') }
27
- .join(DATA_SEPARATOR)
50
+
51
+ def calculate_webhook_payload_hmac(data, hmac_key)
52
+ Base64.strict_encode64(
53
+ OpenSSL::HMAC.digest(HMAC_ALGORITHM, [hmac_key].pack('H*'), data)
54
+ )
28
55
  end
29
56
 
30
- private
57
+ def calculate_webhook_hmac(webhook_request_item, hmac_key)
58
+ data = data_to_sign(webhook_request_item)
59
+
60
+ Base64.strict_encode64(
61
+ OpenSSL::HMAC.digest(HMAC_ALGORITHM, [hmac_key].pack('H*'), data)
62
+ )
63
+ end
31
64
 
32
- def fetch(hash, keys)
33
- value = hash
34
65
 
35
- keys.to_s.split('.').each do |key|
36
- value = if key.to_i.to_s == key
37
- value[key.to_i]
38
- else
39
- value[key].nil? ? value[key.to_sym] : value[key]
40
- end
41
- break if value.nil?
42
- end
66
+ # TODO: Deprecate instead of aliasing
67
+ alias valid_notification_hmac? valid_webhook_hmac?
68
+ alias calculate_notification_hmac calculate_webhook_hmac
43
69
 
44
- value
70
+ def data_to_sign(webhook_request_item)
71
+ WEBHOOK_VALIDATION_KEYS
72
+ .map { webhook_request_item.dig(*_1.split('.')).to_s }
73
+ .compact
74
+ .join(DATA_SEPARATOR)
45
75
  end
46
76
  end
47
77
  end
data/lib/adyen/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module Adyen
2
- NAME = "adyen-ruby-api-library"
3
- VERSION = "6.0.0".freeze
2
+ NAME = 'adyen-ruby-api-library'.freeze
3
+ VERSION = '10.1.2'.freeze
4
4
  end
@@ -1,15 +1,23 @@
1
- require_relative "adyen/version"
2
- require_relative "adyen/client"
3
- require_relative "adyen/errors"
4
- require_relative "adyen/services/checkout"
5
- require_relative "adyen/services/payments"
6
- require_relative "adyen/services/payouts"
7
- require_relative "adyen/services/recurring"
8
- require_relative "adyen/services/marketpay"
9
- require_relative "adyen/services/postfmapi"
10
- require_relative "adyen/services/service"
11
- require_relative "adyen/services/data_protection"
12
- require_relative "adyen/services/dispute"
13
- require_relative "adyen/services/bin_lookup"
14
- require_relative "adyen/hash_with_accessors"
15
- require_relative "adyen/utils/hmac_validator"
1
+ require_relative 'adyen/version'
2
+ require_relative 'adyen/client'
3
+ require_relative 'adyen/errors'
4
+ require_relative 'adyen/services/checkout'
5
+ require_relative 'adyen/services/payment'
6
+ require_relative 'adyen/services/payout'
7
+ require_relative 'adyen/services/recurring'
8
+ require_relative 'adyen/services/marketpay'
9
+ require_relative 'adyen/services/posTerminalManagement'
10
+ require_relative 'adyen/services/service'
11
+ require_relative 'adyen/services/dataProtection'
12
+ require_relative 'adyen/services/disputes'
13
+ require_relative 'adyen/services/binLookup'
14
+ require_relative 'adyen/hash_with_accessors'
15
+ require_relative 'adyen/utils/hmac_validator'
16
+ require_relative 'adyen/services/legalEntityManagement'
17
+ require_relative 'adyen/services/balancePlatform'
18
+ require_relative 'adyen/services/transfers'
19
+ require_relative 'adyen/services/management'
20
+ require_relative 'adyen/services/storedValue'
21
+ require_relative 'adyen/services/balanceControlService'
22
+ require_relative 'adyen/services/terminalCloudAPI'
23
+ require_relative 'adyen/services/posMobile'
data/renovate.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "extends": [
3
- "config:base"
4
- ]
2
+ "$schema": "https://docs.renovatebot.com/renovate-schema.json",
3
+ "extends": ["config:base"],
4
+ "minimumReleaseAge": "21 days"
5
5
  }
data/spec/account_spec.rb CHANGED
@@ -1,30 +1,30 @@
1
- require "spec_helper"
1
+ require 'spec_helper'
2
2
 
3
- RSpec.describe Adyen::Payments, service: "marketpay account service" do
3
+ RSpec.describe Adyen::Payment, service: 'marketpay account service' do
4
4
  # client instance to be used in dynamically generated tests
5
5
  client = create_client(:basic)
6
6
 
7
7
  # methods / values to test for
8
8
  # format is defined in spec_helper
9
9
  test_sets = [
10
- ["create_account_holder", "accountHolderCode", "TestAccountHolder781664"],
11
- ["get_account_holder", "pspReference", "8815263414367329"],
12
- ["update_account_holder", "pspReference", "9914762676580105"],
13
- ["update_account_holder_state", "pspReference", "8515090175978108"],
14
- ["suspend_account_holder", "pspReference", "9914762643560032"],
15
- ["un_suspend_account_holder", "pspReference", "9914762644860159"],
16
- ["close_account_holder", "pspReference", "9914713476670992"],
17
- ["create_account", "status", "Active"],
18
- ["update_account", "pspReference", "9914860311410009"],
19
- ["close_account", "status", "Closed"],
20
- ["upload_document", "pspReference", "9914762681460244"],
21
- ["get_uploaded_documents", "pspReference", "9914694369860322"],
22
- ["delete_bank_accounts", "pspReference", "9914694372670551"],
23
- ["delete_shareholders", "pspReference", "9914694372990637"],
24
- ["delete_signatories", "pspReference", "9914694372990637"],
25
- ["delete_payout_methods", "pspReference", "9914694372990637"],
26
- ["check_account_holder", "pspReference", "9914694372990637"],
10
+ %w[create_account_holder accountHolderCode TestAccountHolder781664],
11
+ %w[get_account_holder pspReference 8815263414367329],
12
+ %w[update_account_holder pspReference 9914762676580105],
13
+ %w[update_account_holder_state pspReference 8515090175978108],
14
+ %w[suspend_account_holder pspReference 9914762643560032],
15
+ %w[un_suspend_account_holder pspReference 9914762644860159],
16
+ %w[close_account_holder pspReference 9914713476670992],
17
+ %w[create_account status Active],
18
+ %w[update_account pspReference 9914860311410009],
19
+ %w[close_account status Closed],
20
+ %w[upload_document pspReference 9914762681460244],
21
+ %w[get_uploaded_documents pspReference 9914694369860322],
22
+ %w[delete_bank_accounts pspReference 9914694372670551],
23
+ %w[delete_shareholders pspReference 9914694372990637],
24
+ %w[delete_signatories pspReference 9914694372990637],
25
+ %w[delete_payout_methods pspReference 9914694372990637],
26
+ %w[check_account_holder pspReference 9914694372990637]
27
27
  ]
28
28
 
29
- generate_tests(client, "Account", test_sets, client.marketpay.account)
29
+ generate_tests(client, 'Account', test_sets, client.marketpay.account)
30
30
  end