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.
- checksums.yaml +4 -4
- data/.github/CODEOWNERS +1 -1
- data/.github/release.yml +18 -0
- data/.github/workflows/codeql.yml +37 -0
- data/.github/workflows/label_new_issues.yml +15 -0
- data/.github/workflows/release.yml +40 -0
- data/.github/workflows/ruby.yml +2 -2
- data/.github/workflows/rubygems_release.yml +18 -0
- data/.github/workflows/stale.yml +26 -0
- data/.gitignore +3 -0
- data/.rubocop.yml +8 -0
- data/CONTRIBUTING.md +1 -1
- data/Gemfile +7 -7
- data/Makefile +79 -0
- data/README.md +158 -20
- data/Rakefile +3 -3
- data/VERSION +2 -0
- data/adyen-ruby-api-library.gemspec +6 -3
- data/bin/console +2 -2
- data/lib/adyen/client.rb +213 -99
- data/lib/adyen/errors.rb +30 -22
- data/lib/adyen/hash_with_accessors.rb +12 -7
- data/lib/adyen/services/balanceControlService.rb +27 -0
- data/lib/adyen/services/balancePlatform/account_holders_api.rb +76 -0
- data/lib/adyen/services/balancePlatform/balance_accounts_api.rb +116 -0
- data/lib/adyen/services/balancePlatform/bank_account_validation_api.rb +26 -0
- data/lib/adyen/services/balancePlatform/card_orders_api.rb +36 -0
- data/lib/adyen/services/balancePlatform/grant_accounts_api.rb +26 -0
- data/lib/adyen/services/balancePlatform/grant_offers_api.rb +36 -0
- data/lib/adyen/services/balancePlatform/manage_card_pin_api.rb +46 -0
- data/lib/adyen/services/balancePlatform/manage_sca_devices_api.rb +56 -0
- data/lib/adyen/services/balancePlatform/network_tokens_api.rb +36 -0
- data/lib/adyen/services/balancePlatform/payment_instrument_groups_api.rb +46 -0
- data/lib/adyen/services/balancePlatform/payment_instruments_api.rb +86 -0
- data/lib/adyen/services/balancePlatform/platform_api.rb +46 -0
- data/lib/adyen/services/balancePlatform/transaction_rules_api.rb +56 -0
- data/lib/adyen/services/balancePlatform/transfer_routes_api.rb +26 -0
- data/lib/adyen/services/balancePlatform.rb +89 -0
- data/lib/adyen/services/binLookup.rb +37 -0
- data/lib/adyen/services/checkout/donations_api.rb +36 -0
- data/lib/adyen/services/checkout/modifications_api.rb +76 -0
- data/lib/adyen/services/checkout/orders_api.rb +46 -0
- data/lib/adyen/services/checkout/payment_links_api.rb +46 -0
- data/lib/adyen/services/checkout/payments_api.rb +76 -0
- data/lib/adyen/services/checkout/recurring_api.rb +46 -0
- data/lib/adyen/services/checkout/utility_api.rb +48 -0
- data/lib/adyen/services/checkout.rb +29 -108
- data/lib/adyen/services/dataProtection.rb +27 -0
- data/lib/adyen/services/disputes.rb +67 -0
- data/lib/adyen/services/legalEntityManagement/business_lines_api.rb +56 -0
- data/lib/adyen/services/legalEntityManagement/documents_api.rb +56 -0
- data/lib/adyen/services/legalEntityManagement/hosted_onboarding_api.rb +46 -0
- data/lib/adyen/services/legalEntityManagement/legal_entities_api.rb +76 -0
- data/lib/adyen/services/legalEntityManagement/pci_questionnaires_api.rb +66 -0
- data/lib/adyen/services/legalEntityManagement/tax_e_delivery_consent_api.rb +36 -0
- data/lib/adyen/services/legalEntityManagement/terms_of_service_api.rb +66 -0
- data/lib/adyen/services/legalEntityManagement/transfer_instruments_api.rb +56 -0
- data/lib/adyen/services/legalEntityManagement.rb +59 -0
- data/lib/adyen/services/management/account_company_level_api.rb +46 -0
- data/lib/adyen/services/management/account_merchant_level_api.rb +56 -0
- data/lib/adyen/services/management/account_store_level_api.rb +96 -0
- data/lib/adyen/services/management/allowed_origins_company_level_api.rb +56 -0
- data/lib/adyen/services/management/allowed_origins_merchant_level_api.rb +56 -0
- data/lib/adyen/services/management/android_files_company_level_api.rb +76 -0
- data/lib/adyen/services/management/api_credentials_company_level_api.rb +56 -0
- data/lib/adyen/services/management/api_credentials_merchant_level_api.rb +56 -0
- data/lib/adyen/services/management/api_key_company_level_api.rb +26 -0
- data/lib/adyen/services/management/api_key_merchant_level_api.rb +26 -0
- data/lib/adyen/services/management/client_key_company_level_api.rb +26 -0
- data/lib/adyen/services/management/client_key_merchant_level_api.rb +26 -0
- data/lib/adyen/services/management/my_api_credential_api.rb +76 -0
- data/lib/adyen/services/management/payment_methods_merchant_level_api.rb +76 -0
- data/lib/adyen/services/management/payout_settings_merchant_level_api.rb +66 -0
- data/lib/adyen/services/management/split_configuration_merchant_level_api.rb +106 -0
- data/lib/adyen/services/management/terminal_actions_company_level_api.rb +36 -0
- data/lib/adyen/services/management/terminal_actions_terminal_level_api.rb +26 -0
- data/lib/adyen/services/management/terminal_orders_company_level_api.rb +116 -0
- data/lib/adyen/services/management/terminal_orders_merchant_level_api.rb +116 -0
- data/lib/adyen/services/management/terminal_settings_company_level_api.rb +56 -0
- data/lib/adyen/services/management/terminal_settings_merchant_level_api.rb +56 -0
- data/lib/adyen/services/management/terminal_settings_store_level_api.rb +96 -0
- data/lib/adyen/services/management/terminal_settings_terminal_level_api.rb +56 -0
- data/lib/adyen/services/management/terminals_terminal_level_api.rb +36 -0
- data/lib/adyen/services/management/users_company_level_api.rb +56 -0
- data/lib/adyen/services/management/users_merchant_level_api.rb +56 -0
- data/lib/adyen/services/management/webhooks_company_level_api.rb +86 -0
- data/lib/adyen/services/management/webhooks_merchant_level_api.rb +86 -0
- data/lib/adyen/services/management.rb +164 -0
- data/lib/adyen/services/marketpay.rb +42 -36
- data/lib/adyen/services/payment.rb +149 -0
- data/lib/adyen/services/paymentsApp.rb +67 -0
- data/lib/adyen/services/payout/initialization_api.rb +46 -0
- data/lib/adyen/services/payout/instant_payouts_api.rb +26 -0
- data/lib/adyen/services/payout/reviewing_api.rb +36 -0
- data/lib/adyen/services/payout.rb +34 -0
- data/lib/adyen/services/posMobile.rb +27 -0
- data/lib/adyen/services/posTerminalManagement.rb +82 -0
- data/lib/adyen/services/recurring.rb +70 -13
- data/lib/adyen/services/service.rb +8 -2
- data/lib/adyen/services/storedValue.rb +77 -0
- data/lib/adyen/services/terminalCloudAPI.rb +38 -0
- data/lib/adyen/services/transfers/capital_api.rb +55 -0
- data/lib/adyen/services/transfers/transactions_api.rb +36 -0
- data/lib/adyen/services/transfers/transfers_api.rb +76 -0
- data/lib/adyen/services/transfers.rb +34 -0
- data/lib/adyen/utils/hmac_validator.rb +52 -22
- data/lib/adyen/version.rb +2 -2
- data/lib/adyen-ruby-api-library.rb +23 -15
- data/renovate.json +3 -3
- data/spec/account_spec.rb +20 -20
- data/spec/balance_control_spec.rb +43 -0
- data/spec/balance_platform_spec.rb +129 -0
- data/spec/bin_lookup_spec.rb +69 -11
- data/spec/checkout-oauth_spec.rb +588 -0
- data/spec/checkout_spec.rb +591 -314
- data/spec/client_spec.rb +240 -45
- data/spec/data_protection_spec.rb +4 -4
- data/spec/disputes_spec.rb +45 -0
- data/spec/errors_spec.rb +44 -15
- data/spec/fund_spec.rb +10 -10
- data/spec/hash_with_accessors_spec.rb +18 -8
- data/spec/hop_spec.rb +4 -4
- data/spec/lem_spec.rb +63 -0
- data/spec/management-oauth_spec.rb +62 -0
- data/spec/management_spec.rb +66 -0
- data/spec/mocks/requests/BalanceControl/balance_transfer.json +10 -0
- data/spec/mocks/requests/BalancePlatform/create_account_holder.json +5 -0
- data/spec/mocks/requests/BalancePlatform/update_account_holder.json +10 -0
- data/spec/mocks/requests/Checkout/amount_updates.json +22 -0
- data/spec/mocks/requests/Checkout/apple_pay_sessions.json +5 -0
- data/spec/mocks/requests/Checkout/capture.json +34 -0
- data/spec/mocks/requests/Checkout/generic_cancel.json +5 -0
- data/spec/mocks/requests/Checkout/modifications_request.json +0 -0
- data/spec/mocks/requests/Checkout/psp_cancel.json +4 -0
- data/spec/mocks/requests/Checkout/refund.json +34 -0
- data/spec/mocks/requests/DisputesService/retrieve_applicable_defense_reasons.json +4 -0
- data/spec/mocks/requests/LegalEntityManagement/create_business_line.json +15 -0
- data/spec/mocks/requests/Management/create_store.json +15 -0
- data/spec/mocks/requests/Recurring/create_permit.json +6 -0
- data/spec/mocks/requests/StoredValue/issue_giftcard.json +12 -0
- data/spec/mocks/requests/TerminalCloudAPI/connected_terminals.json +3 -0
- data/spec/mocks/requests/TerminalCloudAPI/sync_payment.json +29 -0
- data/spec/mocks/requests/Transfers/get_transactions.json +82 -0
- data/spec/mocks/requests/Transfers/make_transfer.json +32 -0
- data/spec/mocks/responses/BalanceControl/balance_transfer.json +14 -0
- data/spec/mocks/responses/BalancePlatform/create_account_holder.json +41 -0
- data/spec/mocks/responses/BalancePlatform/get_balance_account.json +15 -0
- data/spec/mocks/responses/BalancePlatform/update_account_holder.json +16 -0
- data/spec/mocks/responses/Checkout/amount_updates.json +24 -0
- data/spec/mocks/responses/Checkout/apple_pay_sessions.json +3 -0
- data/spec/mocks/responses/Checkout/capture.json +37 -0
- data/spec/mocks/responses/Checkout/generic_cancel.json +7 -0
- data/spec/mocks/responses/Checkout/modifications.json +0 -0
- data/spec/mocks/responses/Checkout/psp_cancel.json +7 -0
- data/spec/mocks/responses/Checkout/refund.json +37 -0
- data/spec/mocks/responses/Checkout/stored_payment_methods.json +1 -0
- data/spec/mocks/responses/DisputesService/retrieve_applicable_defense_reasons.json +71 -0
- data/spec/mocks/responses/LegalEntityManagement/create_business_line.json +17 -0
- data/spec/mocks/responses/Management/create_store.json +23 -0
- data/spec/mocks/responses/Management/get_companies.json +42 -0
- data/spec/mocks/responses/Recurring/create_permit.json +4 -0
- data/spec/mocks/responses/StoredValue/issue_giftcard.json +13 -0
- data/spec/mocks/responses/TerminalCloudAPI/connected_terminals.json +5 -0
- data/spec/mocks/responses/TerminalCloudAPI/sync_payment.json +18 -0
- data/spec/mocks/responses/Transfers/get_transactions.json +82 -0
- data/spec/mocks/responses/Transfers/make_transfer.json +36 -0
- data/spec/mocks/responses/Webhooks/backslash_webhook.json +41 -0
- data/spec/mocks/responses/Webhooks/colon_webhook.json +41 -0
- data/spec/mocks/responses/Webhooks/forwardslash_webhook.json +41 -0
- data/spec/mocks/responses/Webhooks/mixed_webhook.json +41 -0
- data/spec/notification_spec.rb +9 -9
- data/spec/payments_spec.rb +39 -22
- data/spec/payouts_spec.rb +39 -15
- data/spec/pos_terminal_management_spec.rb +44 -0
- data/spec/recurring_spec.rb +8 -8
- data/spec/service_spec.rb +4 -0
- data/spec/spec_helper.rb +42 -46
- data/spec/stored_value_spec.rb +44 -0
- data/spec/terminal_cloud_api_spec.rb +91 -0
- data/spec/transfers_spec.rb +64 -0
- data/spec/utils/hmac_validator_spec.rb +53 -23
- data/templates/api-single.mustache +32 -0
- data/templates/api-small.mustache +39 -0
- data/templates/api.mustache +38 -0
- data/templates/config.yaml +10 -0
- metadata +160 -47
- data/.github/dependabot.yml +0 -8
- data/docs/checkout.html +0 -128
- data/docs/index.html +0 -50
- data/docs/install-library.html +0 -61
- data/docs/javascripts/prism.js +0 -5
- data/docs/javascripts/scale.fix.js +0 -17
- data/docs/marketpay.html +0 -171
- data/docs/params.json +0 -1
- data/docs/payment.html +0 -106
- data/docs/payout.html +0 -135
- data/docs/recurring.html +0 -113
- data/docs/stylesheets/github-light.css +0 -115
- data/docs/stylesheets/prism.css +0 -140
- data/docs/stylesheets/styles.css +0 -324
- data/docs/using-library.html +0 -67
- data/lib/adyen/services/bin_lookup.rb +0 -18
- data/lib/adyen/services/data_protection.rb +0 -17
- data/lib/adyen/services/dispute.rb +0 -20
- data/lib/adyen/services/payments.rb +0 -34
- data/lib/adyen/services/payouts.rb +0 -22
- data/lib/adyen/services/postfmapi.rb +0 -19
- data/spec/dispute_spec.rb +0 -17
- data/spec/mocks/requests/DisputeService/defend_dispute.json +0 -5
- data/spec/mocks/requests/DisputeService/delete_dispute_defense_document.json +0 -5
- data/spec/mocks/requests/DisputeService/retrieve_applicable_defense_reasons.json +0 -4
- data/spec/mocks/requests/DisputeService/supply_defense_document.json +0 -11
- data/spec/mocks/requests/Recurring/store_token.json +0 -15
- data/spec/mocks/responses/DisputeService/defend_dispute.json +0 -5
- data/spec/mocks/responses/DisputeService/delete_dispute_defense_document.json +0 -5
- data/spec/mocks/responses/DisputeService/retrieve_applicable_defense_reasons.json +0 -28
- data/spec/mocks/responses/DisputeService/supply_defense_document.json +0 -5
- data/spec/mocks/responses/Recurring/store_token.json +0 -7
- 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
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
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,
|
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
|
-
|
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
|
-
|
13
|
-
|
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
|
-
|
19
|
-
|
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
|
-
|
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
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
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
|
-
|
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
|
-
|
36
|
-
|
37
|
-
|
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
|
-
|
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,15 +1,23 @@
|
|
1
|
-
require_relative
|
2
|
-
require_relative
|
3
|
-
require_relative
|
4
|
-
require_relative
|
5
|
-
require_relative
|
6
|
-
require_relative
|
7
|
-
require_relative
|
8
|
-
require_relative
|
9
|
-
require_relative
|
10
|
-
require_relative
|
11
|
-
require_relative
|
12
|
-
require_relative
|
13
|
-
require_relative
|
14
|
-
require_relative
|
15
|
-
require_relative
|
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
data/spec/account_spec.rb
CHANGED
@@ -1,30 +1,30 @@
|
|
1
|
-
require
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
|
-
RSpec.describe Adyen::
|
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
|
-
[
|
11
|
-
[
|
12
|
-
[
|
13
|
-
[
|
14
|
-
[
|
15
|
-
[
|
16
|
-
[
|
17
|
-
[
|
18
|
-
[
|
19
|
-
[
|
20
|
-
[
|
21
|
-
[
|
22
|
-
[
|
23
|
-
[
|
24
|
-
[
|
25
|
-
[
|
26
|
-
[
|
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,
|
29
|
+
generate_tests(client, 'Account', test_sets, client.marketpay.account)
|
30
30
|
end
|