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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 61215b9de7ba034430b475ae7e70caaf9e28403e9932d7dee5c2092cab206843
4
- data.tar.gz: e0363ffc4090d847ecc2e1a7c976a91adf58d3f70d75d88609a51aee5f4dc518
3
+ metadata.gz: c365b64ddb38cf735b8e56490bb4c392a0d78d7d1250df09b78a303eae5e25e0
4
+ data.tar.gz: 6652c1d479abf0193ad9fa7bdf58c8dfbf47bd713f54c6964f657d5115a5df63
5
5
  SHA512:
6
- metadata.gz: 2dc2019edf4bb02922b573b45e151a472cb3cb178b55677ffbb52d3867fb3514b1aabf76458338a8d832d1116a215fa0286c963a086c8ed2fd156ee94b4e5422
7
- data.tar.gz: 45dee79d7372364092e9b3a9fd789d2b7553ac4052ebf0d6701bed7f2c62ad0772b7eb25702233feffe9ed13d158af7c958fa0a71f07a5740e869dda88402351
6
+ metadata.gz: 8ac3a03f3c60386082b9d6f35c5524af91e09daace138bbf457393a1f2fe119abae2f46c743f31dbd1f0f40406c1ad75edee92efc2a793c13a23a7a586105ee5
7
+ data.tar.gz: 748fb3f6cfbc34a33beff6b9cc25f40bf0dd392422491f1f8648a35fed7570bf48e708e902951ecaefbcaed2bb603dc1c0a5edc1e4f8efbecfd0620ce6ca5f22
data/.github/CODEOWNERS CHANGED
@@ -1 +1 @@
1
- * @crrood @Aleffio @wboereboom @cyattilakiss
1
+ * @Adyen/developer-relations
@@ -0,0 +1,18 @@
1
+ changelog:
2
+ exclude:
3
+ authors:
4
+ - renovate[bot]
5
+ - dependabot[bot]
6
+ categories:
7
+ - title: Breaking Changes 🛠
8
+ labels:
9
+ - Breaking change
10
+ - title: New Features 💎
11
+ labels:
12
+ - Feature
13
+ - title: Fixes ⛑️
14
+ labels:
15
+ - Fix
16
+ - title: Other Changes 🖇️
17
+ labels:
18
+ - "*"
@@ -0,0 +1,37 @@
1
+ name: "CodeQL"
2
+
3
+ on:
4
+ schedule:
5
+ - cron: "40 12 * * 0"
6
+
7
+ jobs:
8
+ analyze:
9
+ name: Analyze
10
+ runs-on: ubuntu-latest
11
+ permissions:
12
+ actions: read
13
+ contents: read
14
+ security-events: write
15
+
16
+ strategy:
17
+ fail-fast: false
18
+ matrix:
19
+ language: [ javascript ]
20
+
21
+ steps:
22
+ - name: Checkout
23
+ uses: actions/checkout@v4
24
+
25
+ - name: Initialize CodeQL
26
+ uses: github/codeql-action/init@v3
27
+ with:
28
+ languages: ${{ matrix.language }}
29
+ queries: +security-and-quality
30
+
31
+ - name: Autobuild
32
+ uses: github/codeql-action/autobuild@v3
33
+
34
+ - name: Perform CodeQL Analysis
35
+ uses: github/codeql-action/analyze@v3
36
+ with:
37
+ category: "/language:${{ matrix.language }}"
@@ -0,0 +1,15 @@
1
+ name: Label New Issues
2
+ on:
3
+ issues:
4
+ types: [opened]
5
+
6
+ jobs:
7
+ add-label:
8
+ runs-on: ubuntu-latest
9
+ steps:
10
+ - name: Add 'needs response' label to new issues
11
+ uses: actions-ecosystem/action-add-labels@v1
12
+ with:
13
+ github_token: ${{ secrets.GITHUB_TOKEN }}
14
+ labels: 'needs response'
15
+
@@ -0,0 +1,40 @@
1
+ name: Release
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ inputs:
6
+ pre-release:
7
+ required: false
8
+ type: boolean
9
+ default: false
10
+ description: "This release will be labeled as non-production ready"
11
+ github-release:
12
+ required: false
13
+ type: boolean
14
+ default: false
15
+ description: "Publish Github release for the current version"
16
+ # Monitor pull request events
17
+ pull_request:
18
+ types:
19
+ - closed
20
+ branches:
21
+ - main
22
+
23
+ jobs:
24
+ release:
25
+ permissions:
26
+ contents: write
27
+ pull-requests: write
28
+ runs-on: ubuntu-latest
29
+ steps:
30
+ - uses: actions/checkout@v4
31
+ - name: Prepare the next main release
32
+ uses: Adyen/release-automation-action@v1.3.1
33
+ with:
34
+ token: ${{ secrets.ADYEN_AUTOMATION_BOT_ACCESS_TOKEN }}
35
+ develop-branch: main
36
+ version-files: lib/adyen/version.rb
37
+ release-title: Adyen Ruby API Library
38
+ pre-release: ${{ inputs.pre-release || false }}
39
+ github-release: ${{ inputs.github-release || false }}
40
+ separator: .pre.beta
@@ -9,10 +9,10 @@ jobs:
9
9
  matrix:
10
10
  os: [ubuntu-latest]
11
11
  # Due to https://github.com/actions/runner/issues/849, we have to use quotes for '3.0'
12
- ruby: [2.5, 2.6, 2.7, '3.0', head]
12
+ ruby: [2.7, '3.0', 3.1, 3.2, head]
13
13
  runs-on: ${{ matrix.os }}
14
14
  steps:
15
- - uses: actions/checkout@v2
15
+ - uses: actions/checkout@v4
16
16
  - uses: ruby/setup-ruby@v1
17
17
  with:
18
18
  ruby-version: ${{ matrix.ruby }}
@@ -0,0 +1,18 @@
1
+ name: Publish Gem
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+
7
+ jobs:
8
+ build:
9
+ runs-on: ubuntu-latest
10
+
11
+ steps:
12
+ - uses: actions/checkout@v4
13
+ - name: Release Gem on RubyGems
14
+ if: contains(github.ref, 'refs/tags/v')
15
+ uses: cadwallion/publish-rubygems-action@v1.1.0
16
+ env:
17
+ GITHUB_TOKEN: ${{secrets.TOKEN_RUBYGEMS_RELEASES_WITH_EXPIRATION}}
18
+ RUBYGEMS_API_KEY: ${{secrets.RUBYGEMS_API_KEY}}
@@ -0,0 +1,26 @@
1
+ name: Close Stale Issues
2
+ on:
3
+ schedule:
4
+ - cron: '30 8 * * *'
5
+
6
+ jobs:
7
+ stale:
8
+ runs-on: ubuntu-latest
9
+ steps:
10
+ - uses: actions/stale@v9
11
+ with:
12
+ repo-token: ${{ secrets.GITHUB_TOKEN }}
13
+ stale-issue-message: 'This issue has been automatically marked as stale due to inactivity and will be closed in 7 days if no further activity occurs.'
14
+ close-issue-message: 'This issue was closed due to inactivity. Please reopen if you still encounter this problem or have more information to add.'
15
+ stale-pr-message: "This PR hasn't received any updates in a year and will be automatically closed in 30 days. Feel free to re-open if you plan to continue working on this pull request"
16
+ days-before-stale: -1
17
+ days-before-close: -1
18
+ days-before-issue-stale: 14
19
+ days-before-issue-close: 7
20
+ stale-issue-label: 'stale'
21
+ exempt-issue-labels: 'do not stale, needs response'
22
+ days-before-pr-stale: 365
23
+ days-before-pr-close: 30
24
+ exempt-pr-labels: 'do not stale'
25
+ only-pr-labels: awaiting-changes,blocked,work-in-progress,awaiting-upstream
26
+ remove-pr-stale-when-updated: true
data/.gitignore CHANGED
@@ -15,3 +15,6 @@ design.txt
15
15
  .DS_Store
16
16
 
17
17
  .idea
18
+ main.rb
19
+ build/
20
+ openapi-generator-cli-6.0.1.jar
data/.rubocop.yml ADDED
@@ -0,0 +1,8 @@
1
+ Style/FrozenStringLiteralComment:
2
+ Enabled: false
3
+ Metrics/BlockLength:
4
+ Enabled: false
5
+ Documentation:
6
+ Enabled: false
7
+ Naming/FileName:
8
+ Enabled: false
data/CONTRIBUTING.md CHANGED
@@ -3,7 +3,7 @@
3
3
  ## How to contribute step-by-step
4
4
 
5
5
  1. Fork the `Adyen/adyen-ruby-api-library` repository.
6
- 2. Create a new branch from `develop` in your fork. This makes it easier for you to keep track of your changes.
6
+ 2. Create a new branch from `main` in your fork. This makes it easier for you to keep track of your changes.
7
7
  3. Make the desired changes to the code.
8
8
  * If you are adding new functionality or fixing a bug, we recommend you add unit tests that cover it.
9
9
  4. Push the changes to your fork.
data/Gemfile CHANGED
@@ -1,12 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- source "https://rubygems.org"
3
+ source 'https://rubygems.org'
4
4
 
5
- ruby ">= 2.1.0"
5
+ ruby '>= 2.7.0'
6
6
 
7
- gem "faraday"
7
+ gem 'faraday'
8
8
 
9
- gem "bundler", :group => :development
10
- gem "webmock", :group => :development
11
- gem "rspec", :group => :development
12
- gem "activesupport", :group => :development
9
+ gem 'activesupport', group: :development
10
+ gem 'bundler', group: :development
11
+ gem 'rspec', group: :development
12
+ gem 'webmock', group: :development
data/Makefile ADDED
@@ -0,0 +1,79 @@
1
+ generator:=ruby
2
+ openapi-generator-version:=6.4.0
3
+ openapi-generator-url:=https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/$(openapi-generator-version)/openapi-generator-cli-$(openapi-generator-version).jar
4
+ openapi-generator-jar:=build/openapi-generator-cli.jar
5
+ openapi-generator-cli:=java -jar build/openapi-generator-cli.jar
6
+ output:=build/out
7
+
8
+ services:=balancePlatform checkout legalEntityManagement management payout transfers
9
+ singleFileServices:=balanceControlService binLookup dataProtection recurring storedValue payment posTerminalManagement disputes
10
+
11
+ binLookup: spec=BinLookupService-v54
12
+ checkout: spec=CheckoutService-v71
13
+ dataProtection: spec=DataProtectionService-v1
14
+ storedValue: spec=StoredValueService-v46
15
+ posTerminalManagement: spec=TfmAPIService-v1
16
+ payment: spec=PaymentService-v68
17
+ recurring: spec=RecurringService-v68
18
+ payout: spec=PayoutService-v68
19
+ management: spec=ManagementService-v3
20
+ legalEntityManagement: spec=LegalEntityService-v3
21
+ balancePlatform: spec=BalancePlatformService-v2
22
+ balanceControlService: spec=BalanceControlService-v1
23
+ transfers: spec=TransferService-v4
24
+ disputes: spec=DisputeService-v30
25
+
26
+ allServices: $(services) $(singleFileServices)
27
+
28
+ $(services): build/spec $(openapi-generator-jar)
29
+ wget $(openapi-generator-url) -O build/openapi-generator-cli.jar
30
+ rm -rf $(output)
31
+ $(openapi-generator-cli) generate \
32
+ -i build/spec/json/$(spec).json \
33
+ -g $(generator) \
34
+ -c ./templates/config.yaml \
35
+ -o $(output) \
36
+ --global-property apis,apiTests=false,apiDocs=false,supportingFiles=api-single.rb\
37
+ --additional-properties serviceName=$@\
38
+ --skip-validate-spec
39
+ rm -f $(output)/lib/openapi_client/api/*-small.rb
40
+ mkdir -p lib/adyen/services/$@
41
+ mv $(output)/lib/openapi_client/api/*.rb lib/adyen/services/$@
42
+ mv $(output)/api/api-single.rb lib/adyen/services/$@.rb
43
+ rm -rf $(output)
44
+
45
+ $(singleFileServices): build/spec
46
+ wget $(openapi-generator-url) -O build/openapi-generator-cli.jar
47
+ jq -e 'del(.paths[][].tags)' build/spec/json/$(spec).json > build/spec/json/$(spec).tmp
48
+ mv build/spec/json/$(spec).tmp build/spec/json/$(spec).json
49
+ rm -rf $(output)
50
+ $(openapi-generator-cli) generate \
51
+ -i build/spec/json/$(spec).json \
52
+ -g $(generator) \
53
+ -c ./templates/config.yaml \
54
+ -o $(output) \
55
+ --global-property apis,apiTests=false,apiDocs=false\
56
+ --additional-properties serviceName=$@\
57
+ --skip-validate-spec
58
+ mv $(output)/lib/openapi_client/api/*-small.rb lib/adyen/services/$@.rb
59
+ rm -rf $(output)
60
+
61
+ templates: $(openapi-generator-jar)
62
+ $(openapi-generator-cli) author template -g $(generator) -o build/templates
63
+
64
+ # Download the generator
65
+ $(openapi-generator-jar):
66
+ wget --quiet -o /dev/null $(openapi-generator-url) -O $(openapi-generator-jar)
67
+
68
+ build/spec:
69
+ git clone https://github.com/Adyen/adyen-openapi.git build/spec
70
+ perl -i -pe's/"openapi" : "3.[0-9].[0-9]"/"openapi" : "3.0.0"/' build/spec/json/*.json
71
+
72
+ # Releases
73
+
74
+ version:
75
+ perl -lne 'print "currentVersion=$$1" if /(\d+\.\d+\.\d+)/' < lib/adyen/version.rb >> "$$GITHUB_OUTPUT"
76
+
77
+ version_files:=lib/adyen/version.rb
78
+ bump:
79
+ perl -i -pe 's/$$ENV{"CURRENT_VERSION"}/$$ENV{"NEXT_VERSION"}/' $(version_files)
data/README.md CHANGED
@@ -1,23 +1,31 @@
1
+ ![Ruby](https://user-images.githubusercontent.com/93914435/236416787-3da4dd32-0a7d-43f7-9aa4-8d77697c85f9.png)
1
2
  # Adyen API Library for Ruby
2
3
 
3
-
4
4
  This is the officially supported Ruby library for using Adyen's APIs.
5
5
 
6
- ## Integration
7
- The library supports all APIs under the following services:
6
+ ## Supported APIs
7
+
8
+ This library supports the following:
9
+
10
+ | API name | API version | Description | API object |
11
+ |-------------------------------------------------------------------------------------------------------------------------------|:-----------:|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------|
12
+ | [BIN lookup API](https://docs.adyen.com/api-explorer/BinLookup/54/overview) | v54 | The BIN Lookup API provides endpoints for retrieving information based on a given BIN. | [BinLookup](lib/adyen/services/binLookup.rb) |
13
+ | [Checkout API](https://docs.adyen.com/api-explorer/Checkout/71/overview) | v71 | Our latest integration for accepting online payments. | [CheckoutAPI](lib/adyen/services/checkout.rb) |
14
+ | [Configuration API](https://docs.adyen.com/api-explorer/balanceplatform/2/overview) | v2 | The Configuration API enables you to create a platform where you can onboard your users as account holders and create balance accounts, cards, and business accounts. | [BalancePlatform](lib/adyen/services/balancePlatform.rb) |
15
+ | [DataProtection API](https://docs.adyen.com/development-resources/data-protection-api) | v1 | Adyen Data Protection API provides a way for you to process [Subject Erasure Requests](https://gdpr-info.eu/art-17-gdpr/) as mandated in GDPR. Use our API to submit a request to delete shopper's data, including payment details and other related information (for example, delivery address or shopper email) | [DataProtection](lib/adyen/services/dataProtection.rb) |
16
+ | [Legal Entity Management API](https://docs.adyen.com/api-explorer/legalentity/3/overview) | v3 | Manage legal entities that contain information required for verification. | [LegalEntityManagement](lib/adyen/services/legalEntityManagement.rb) |
17
+ | [Management API](https://docs.adyen.com/api-explorer/Management/3/overview) | v3 | Configure and manage your Adyen company and merchant accounts, stores, and payment terminals. | [Management](lib/adyen/services/management.rb) |
18
+ | [Payments API](https://docs.adyen.com/api-explorer/Payment/68/overview) | v68 | Our classic integration for online payments. | [Classic Integration API](lib/adyen/services/payment.rb) |
19
+ | [Payouts API](https://docs.adyen.com/api-explorer/Payout/68/overview) | v68 | Endpoints for sending funds to your customers. | [Payout](lib/adyen/services/payout.rb) |
20
+ | [POS Terminal Management API](https://docs.adyen.com/api-explorer/postfmapi/1/overview) | v1 | Endpoints for managing your point-of-sale payment terminals. | [TerminalManagement](lib/adyen/services/posTerminalManagement.rb) |
21
+ | [Recurring API](https://docs.adyen.com/api-explorer/Recurring/68/overview) | v68 | Endpoints for managing saved payment details. | [Recurring](lib/adyen/services/recurring.rb) |
22
+ | [Stored Value API](https://docs.adyen.com/payment-methods/gift-cards/stored-value-api) | v46 | Manage both online and point-of-sale gift cards and other stored-value cards. | [StoredValue](lib/adyen/services/storedValue.rb) |
23
+ | [Transfers API](https://docs.adyen.com/api-explorer/transfers/4/overview) | v4 | The Transfers API provides endpoints that can be used to get information about all your transactions, move funds within your balance platform or send funds from your balance platform to a transfer instrument. | [Transfers](lib/adyen/services/transfers.rb) |
24
+ | [Cloud-based Terminal API](https://docs.adyen.com/point-of-sale/design-your-integration/terminal-api/terminal-api-reference/) | - | Our point-of-sale integration. | [TerminalCloudAPI](lib/adyen/services/terminalCloudAPI.rb) |
25
+ | [Disputes API](https://docs.adyen.com/api-explorer/Disputes/30/overview) | v30 | You can use the [Disputes API](https://docs.adyen.com/risk-management/disputes-api) to automate the dispute handling process so that you can respond to disputes and chargebacks as soon as they are initiated. The Disputes API lets you retrieve defense reasons, supply and delete defense documents, and accept or defend disputes. | [Disputes](lib/adyen/services/disputes.rb) |
26
+ | [POS Mobile API](https://docs.adyen.com/api-explorer/possdk/68/overview) | v68 | The POS Mobile API is used in the mutual authentication flow between an Adyen Android or iOS [POS Mobile SDK](https://docs.adyen.com/point-of-sale/ipp-mobile/) and the Adyen payments platform. The POS Mobile SDK for Android or iOS devices enables businesses to accept in-person payments using a commercial off-the-shelf (COTS) device like a phone. For example, Tap to Pay transactions, or transactions on a mobile device in combination with a card reader. | [POS Mobile](lib/adyen/services/posMobile.rb) |
27
+ | [Payments App API](https://docs.adyen.com/api-explorer/payments-app/1/overview) | v1 | The Payments App API is used to Board and manage the Adyen Payments App on your Android mobile devices. | [paymentsApp](lib/adyen/services/paymentsApp.rb) |
8
28
 
9
- * [Checkout API](https://docs.adyen.com/api-explorer/#/CheckoutService/v68/overview): Our latest integration for accepting online payments. Current supported version: **v68**
10
- * [Payments API](https://docs.adyen.com/api-explorer/#/Payment/v64/overview): Our classic integration for online payments. Current supported version: **v64**
11
- * [Recurring API](https://docs.adyen.com/api-explorer/#/Recurring/v49/overview): Endpoints for managing saved payment details. Current supported version: **v49**
12
- * [Payouts API](https://docs.adyen.com/api-explorer/#/Payout/v64/overview): Endpoints for sending funds to your customers. Current supported version: **v64**
13
- * [Platforms APIs](https://docs.adyen.com/platforms/api): Set of APIs when using Adyen for Platforms.
14
- * [Account API](https://docs.adyen.com/api-explorer/#/Account/v6/overview) Current supported version: **v6**
15
- * [Fund API](https://docs.adyen.com/api-explorer/#/Fund/v6/overview) Current supported version: **v6**
16
- * [Notification Configuration API](https://docs.adyen.com/api-explorer/#/NotificationConfigurationService/v6/overview) Current supported version: **v6**
17
- * [POS Terminal Management API](https://docs.adyen.com/api-explorer/#/postfmapi/v1/overview): Current supported version: **v1**
18
- * [Adyen BinLookup API](https://docs.adyen.com/api-explorer/#/BinLookup/v50/overview): Current supported version: **v50**
19
- * [Data Protection API](https://docs.adyen.com/development-resources/data-protection-api): Current supported version: **v1**
20
- * [Disputes API](https://docs.adyen.com/risk-management/disputes-api): Current supported version: **v50**
21
29
 
22
30
 
23
31
  For more information, refer to our [documentation](https://docs.adyen.com/) or the [API Explorer](https://docs.adyen.com/api-explorer/).
@@ -25,7 +33,7 @@ For more information, refer to our [documentation](https://docs.adyen.com/) or t
25
33
  ## Prerequisites
26
34
  - [Adyen test account](https://docs.adyen.com/get-started-with-adyen)
27
35
  - [API key](https://docs.adyen.com/development-resources/api-credentials#generate-api-key). For testing, your API credential needs to have the [API PCI Payments role](https://docs.adyen.com/development-resources/api-credentials#roles).
28
- - Ruby >= 2.1
36
+ - Ruby >= 2.7
29
37
 
30
38
  ## Installation
31
39
 
@@ -64,7 +72,7 @@ adyen.api_key = 'AF5XXXXXXXXXXXXXXXXXXXX'
64
72
 
65
73
  - Make a Payment
66
74
  ~~~~ruby
67
- response = adyen.checkout.payments({
75
+ response = adyen.checkout.payments_api.payments({
68
76
  :amount => {
69
77
  :currency => "EUR",
70
78
  :value => 1000
@@ -84,7 +92,7 @@ response = adyen.checkout.payments({
84
92
 
85
93
  - Change API Version
86
94
  ~~~~ruby
87
- adyen.checkout.version = 68
95
+ adyen.checkout.version = 69
88
96
  ~~~~
89
97
 
90
98
  ### Example integration
@@ -97,10 +105,140 @@ To run the tests use :
97
105
  bundle install --with development
98
106
  ~~~~
99
107
 
108
+ ## Using the Cloud Terminal API Integration
109
+ In order to submit In-Person requests with [Terminal API over Cloud](https://docs.adyen.com/point-of-sale/design-your-integration/choose-your-architecture/cloud/) you need to initialize the client in the same way as explained above for Ecommerce transactions:
110
+ ``` ruby
111
+ # Step 1: Require the parts of the module you want to use
112
+ require 'adyen-ruby-api-library'
113
+
114
+ # Step 2: Initialize the client object
115
+ adyen = Adyen::Client.new(api_key: 'YOUR_API_KEY', env: :test)
116
+
117
+ # Step 3: Create the request
118
+ serviceID = "123456789"
119
+ saleID = "POS-SystemID12345"
120
+ POIID = "Your Device Name(eg V400m-123456789)"
121
+
122
+ # Use a unique transaction for every transaction you perform
123
+ transactionID = "TransactionID"
124
+
125
+ request =
126
+ {
127
+ "SaleToPOIRequest": {
128
+ "MessageHeader": {
129
+ "MessageClass": "Service",
130
+ "MessageCategory": "Payment",
131
+ "MessageType": "Request",
132
+ "ServiceID": serviceID,
133
+ "SaleID": saleID,
134
+ "POIID": POIID,
135
+ "ProtocolVersion": "3.0"
136
+ },
137
+ "PaymentRequest": {
138
+ "SaleData": {
139
+ "SaleTransactionID": {
140
+ "TransactionID": transactionID,
141
+ "TimeStamp": "2023-08-23T09:48:55"
142
+ },
143
+ "SaleToAcquirerData": "eyJhcHBsaWNhdGlvbkluZm8iOnsiYWR5ZW5MaWJyYXJ5Ijp7Im5hbWUiOiJhZ....",
144
+ "TokenRequestedType": "Transaction"
145
+ },
146
+ "PaymentTransaction": {
147
+ "AmountsReq": {
148
+ "Currency": "EUR",
149
+ "RequestedAmount": 10
150
+ }
151
+ }
152
+ }
153
+ }
154
+ }
155
+
156
+ # Step 4: Make the request
157
+ response = adyen.terminal_cloud_api.sync(request)
158
+ ```
159
+
160
+ ### Optional: perform an abort request
161
+
162
+ To perform an [abort request](https://docs.adyen.com/point-of-sale/basic-tapi-integration/cancel-a-transaction/) you can use the following example:
163
+ ``` ruby
164
+ abortRequest =
165
+ {
166
+ "MessageHeader": {
167
+ "MessageClass": "Service",
168
+ "MessageCategory": "Abort",
169
+ "MessageType": "Request",
170
+ "ServiceID": serviceID,
171
+ "SaleID": saleID,
172
+ "POIID": POIID,
173
+ "ProtocolVersion": "3.0"
174
+ },
175
+ "AbortRequest": {
176
+ "AbortReason": "MerchantAbort",
177
+ "MessageReference": {
178
+ "MessageCategory": "Payment",
179
+ "SaleID": saleID,
180
+ # Service ID of the payment you're aborting
181
+ "ServiceID": serviceID,
182
+ "POIID": POIID
183
+ }
184
+ }
185
+ }
186
+
187
+ response = adyen.terminal_cloud_api.sync(abortRequest)
188
+ ```
189
+
190
+ ### Optional: perform a status request
191
+
192
+ To perform a [status request](https://docs.adyen.com/point-of-sale/basic-tapi-integration/verify-transaction-status/) you can use the following example:
193
+ ``` ruby
194
+ statusRequest =
195
+ {
196
+ "MessageHeader": {
197
+ "MessageClass": "Service",
198
+ "MessageCategory": "TransactionStatus",
199
+ "MessageType": "Request",
200
+ "ServiceID": serviceID,
201
+ "SaleID": saleID,
202
+ "POIID": POIID,
203
+ "ProtocolVersion": "3.0"
204
+ },
205
+ "TransactionStatusRequest": {
206
+ "ReceiptReprintFlag": true,
207
+ "DocumentQualifier": [
208
+ "CashierReceipt",
209
+ "CustomerReceipt"
210
+ ],
211
+ "MessageReference": {
212
+ "SaleID": saleID,
213
+ # serviceID of the transaction you want the status update for
214
+ "ServiceID": serviceID,
215
+ "MessageCategory": "Payment"
216
+ }
217
+ }
218
+ }
219
+
220
+ response = adyen.terminal_cloud_api.sync(statusRequest)
221
+ ```
222
+
223
+ ## OAuth usage (for Partners)
224
+ If you are using our OAuth service to make API requests on your customer's behalf, and you already got your Access Token as explained in the [OAuth Integration Guide](https://docs.adyen.com/development-resources/oauth/integration/#page-introduction), you can setup your Client like in the following example:
225
+
226
+ ~~~~ruby
227
+ adyen = Adyen::Client.new
228
+
229
+ adyen.oauth_token = "oauth_token"
230
+
231
+ ~~~~
232
+
233
+ The APIs available to use through OAuth in this library depend on the [OAuth Scopes](https://docs.adyen.com/development-resources/oauth/scopes/) defined when [Registering your OAuth client](https://docs.adyen.com/development-resources/oauth/integration/#step-1-register-your-client).
234
+
235
+ ## Feedback
236
+ We value your input! Help us enhance our API Libraries and improve the integration experience by providing your feedback. Please take a moment to fill out [our feedback form](https://forms.gle/A4EERrR6CWgKWe5r9) to share your thoughts, suggestions or ideas.
237
+
100
238
  ## Contributing
101
239
 
102
240
  We encourage you to contribute to this repository, so everyone can benefit from new features, bug fixes, and any other improvements.
103
- Have a look at our [contributing guidelines](https://github.com/Adyen/adyen-ruby-api-library/blob/develop/CONTRIBUTING.md) to find out how to raise a pull request.
241
+ Have a look at our [contributing guidelines](/CONTRIBUTING.md) to find out how to raise a pull request.
104
242
 
105
243
  ## Support
106
244
  If you have a feature request, or spotted a bug or a technical problem, [create an issue here](https://github.com/Adyen/adyen-ruby-api-library/issues/new/choose).
@@ -108,7 +246,7 @@ If you have a feature request, or spotted a bug or a technical problem, [create
108
246
  For other questions, [contact our Support Team](https://www.adyen.help/hc/en-us/requests/new?ticket_form_id=360000705420).
109
247
 
110
248
  ## Licence
111
- This repository is available under the [MIT license](https://github.com/Adyen/adyen-ruby-api-library/blob/master/LICENSE).
249
+ This repository is available under the [MIT license](https://github.com/Adyen/adyen-ruby-api-library/blob/main/LICENSE).
112
250
 
113
251
  ## See also
114
252
  * [Example integration](https://github.com/adyen-examples/adyen-rails-online-payments)
data/Rakefile CHANGED
@@ -1,6 +1,6 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
3
 
4
4
  RSpec::Core::RakeTask.new(:spec)
5
5
 
6
- task :default => :spec
6
+ task default: :spec
data/VERSION ADDED
@@ -0,0 +1,2 @@
1
+ 10.1.2
2
+
@@ -3,12 +3,15 @@ require_relative 'lib/adyen/version'
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = 'adyen-ruby-api-library'
5
5
  spec.version = Adyen::VERSION
6
- spec.required_ruby_version = '>= 2.1.0'
6
+ spec.required_ruby_version = '>= 2.7.0'
7
7
  spec.authors = ['Adyen']
8
8
  spec.email = ['support@adyen.com']
9
9
 
10
10
  spec.summary = 'Official Adyen Ruby API Library'
11
- spec.description = 'Official Adyen API Library for Ruby. Simplifies integrating with the Adyen API, including Checkout, Marketpay, payments, recurring, and payouts. For support please reach out to support@adyen.com. If you would like to contribute please submit a comment or pull request at https://github.com/Adyen/adyen-ruby-api-library.'
11
+ spec.description = 'Official Adyen API Library for Ruby. Simplifies integrating with the Adyen API,\
12
+ including Checkout, Marketpay, payments, recurring, and payouts. For support please reach out to \
13
+ support@adyen.com. If you would like to contribute please submit \
14
+ a comment or pull request at https://github.com/Adyen/adyen-ruby-api-library.'
12
15
  spec.homepage = 'https://www.adyen.com'
13
16
  spec.license = 'MIT'
14
17
 
@@ -22,7 +25,7 @@ Gem::Specification.new do |spec|
22
25
 
23
26
  spec.add_dependency 'faraday'
24
27
 
28
+ spec.add_development_dependency 'activesupport'
25
29
  spec.add_development_dependency 'bundler'
26
30
  spec.add_development_dependency 'webmock'
27
- spec.add_development_dependency 'activesupport'
28
31
  end
data/bin/console CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require_relative "../lib/adyen-ruby-api-library.rb"
3
+ require_relative '../lib/adyen-ruby-api-library'
4
4
 
5
5
  # You can add fixtures and/or initialization code here to make experimenting
6
6
  # with your gem easier. You can also use a different console, if you like.
@@ -9,5 +9,5 @@ require_relative "../lib/adyen-ruby-api-library.rb"
9
9
  # require "pry"
10
10
  # Pry.start
11
11
 
12
- require "irb"
12
+ require 'irb'
13
13
  IRB.start(__FILE__)