checkout_sdk 0.3.2 → 1.0.0.beta.0

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 (257) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +31 -0
  3. data/CODE_OF_CONDUCT.md +84 -0
  4. data/Gemfile +5 -2
  5. data/LICENSE.md +9 -0
  6. data/README.md +96 -110
  7. data/Rakefile +3 -1
  8. data/lib/checkout_sdk/abstract_checkout_sdk_builder.rb +28 -0
  9. data/lib/checkout_sdk/api_client.rb +135 -0
  10. data/lib/checkout_sdk/apm/apm.rb +12 -0
  11. data/lib/checkout_sdk/apm/ideal/ideal_client.rb +25 -0
  12. data/lib/checkout_sdk/apm/previous/klarna/credit_session_request.rb +30 -0
  13. data/lib/checkout_sdk/apm/previous/klarna/klarna.rb +24 -0
  14. data/lib/checkout_sdk/apm/previous/klarna/klarna_client.rb +55 -0
  15. data/lib/checkout_sdk/apm/previous/klarna/klarna_product.rb +30 -0
  16. data/lib/checkout_sdk/apm/previous/klarna/klarna_shipping_info.rb +33 -0
  17. data/lib/checkout_sdk/apm/previous/klarna/order_capture_request.rb +37 -0
  18. data/lib/checkout_sdk/apm/previous/sepa/sepa_client.rb +42 -0
  19. data/lib/checkout_sdk/authorization_type.rb +12 -0
  20. data/lib/checkout_sdk/checkout_api.rb +51 -0
  21. data/lib/checkout_sdk/checkout_configuration.rb +22 -0
  22. data/lib/checkout_sdk/checkout_oauth_sdk_builder.rb +52 -0
  23. data/lib/checkout_sdk/checkout_sdk_builder.rb +20 -0
  24. data/lib/checkout_sdk/checkout_static_keys_sdk_builder.rb +23 -0
  25. data/lib/checkout_sdk/checkout_utils.rb +15 -0
  26. data/lib/checkout_sdk/client.rb +46 -0
  27. data/lib/checkout_sdk/common/abstract_file_request.rb +11 -0
  28. data/lib/checkout_sdk/common/account_holder.rb +44 -0
  29. data/lib/checkout_sdk/common/account_holder_identification.rb +20 -0
  30. data/lib/checkout_sdk/common/account_holder_identification_type.rb +13 -0
  31. data/lib/checkout_sdk/common/account_holder_type.rb +11 -0
  32. data/lib/checkout_sdk/common/account_type.rb +11 -0
  33. data/lib/checkout_sdk/common/address.rb +26 -0
  34. data/lib/checkout_sdk/common/amount_allocations.rb +20 -0
  35. data/lib/checkout_sdk/common/bank_details.rb +17 -0
  36. data/lib/checkout_sdk/common/challenge_indicator.rb +12 -0
  37. data/lib/checkout_sdk/common/commission.rb +14 -0
  38. data/lib/checkout_sdk/common/common.rb +22 -0
  39. data/lib/checkout_sdk/common/country.rb +260 -0
  40. data/lib/checkout_sdk/common/currency.rb +168 -0
  41. data/lib/checkout_sdk/common/customer_request.rb +26 -0
  42. data/lib/checkout_sdk/common/file_purpose.rb +9 -0
  43. data/lib/checkout_sdk/common/file_request.rb +11 -0
  44. data/lib/checkout_sdk/common/instrument_type.rb +11 -0
  45. data/lib/checkout_sdk/common/payment_source_type.rb +52 -0
  46. data/lib/checkout_sdk/common/phone.rb +14 -0
  47. data/lib/checkout_sdk/common/update_customer_request.rb +14 -0
  48. data/lib/checkout_sdk/customers/customer_request.rb +26 -0
  49. data/lib/checkout_sdk/customers/customers.rb +4 -0
  50. data/lib/checkout_sdk/customers/customers_client.rb +37 -0
  51. data/lib/checkout_sdk/disputes/dispute_evidence_request.rb +60 -0
  52. data/lib/checkout_sdk/disputes/dispute_status.rb +19 -0
  53. data/lib/checkout_sdk/disputes/disputes.rb +6 -0
  54. data/lib/checkout_sdk/disputes/disputes_client.rb +55 -0
  55. data/lib/checkout_sdk/disputes/disputes_query_filter.rb +47 -0
  56. data/lib/checkout_sdk/environment.rb +59 -0
  57. data/lib/checkout_sdk/error.rb +30 -0
  58. data/lib/checkout_sdk/forex/forex.rb +4 -0
  59. data/lib/checkout_sdk/forex/forex_client.rb +21 -0
  60. data/lib/checkout_sdk/forex/quote_request.rb +23 -0
  61. data/lib/checkout_sdk/http_metadata.rb +9 -0
  62. data/lib/checkout_sdk/instruments/create/instrument_bank_account_request.rb +51 -0
  63. data/lib/checkout_sdk/instruments/create/instrument_request.rb +17 -0
  64. data/lib/checkout_sdk/instruments/create/instrument_token_request.rb +21 -0
  65. data/lib/checkout_sdk/instruments/get/bank_account_field_query.rb +14 -0
  66. data/lib/checkout_sdk/instruments/get/payment_network.rb +14 -0
  67. data/lib/checkout_sdk/instruments/instruments.rb +15 -0
  68. data/lib/checkout_sdk/instruments/instruments_client.rb +49 -0
  69. data/lib/checkout_sdk/instruments/update/update_instrument_bank_account_request.rb +51 -0
  70. data/lib/checkout_sdk/instruments/update/update_instrument_card_request.rb +27 -0
  71. data/lib/checkout_sdk/instruments/update/update_instrument_request.rb +17 -0
  72. data/lib/checkout_sdk/instruments/update/update_instrument_token_request.rb +15 -0
  73. data/lib/checkout_sdk/json_serializer.rb +54 -0
  74. data/lib/checkout_sdk/oauth_access_token.rb +27 -0
  75. data/lib/checkout_sdk/oauth_scopes.rb +41 -0
  76. data/lib/checkout_sdk/oauth_sdk_credentials.rb +112 -0
  77. data/lib/checkout_sdk/payments/airline_data.rb +17 -0
  78. data/lib/checkout_sdk/payments/authorization_request.rb +17 -0
  79. data/lib/checkout_sdk/payments/authorization_type.rb +11 -0
  80. data/lib/checkout_sdk/payments/billing_descriptor.rb +17 -0
  81. data/lib/checkout_sdk/payments/capture_request.rb +41 -0
  82. data/lib/checkout_sdk/payments/capture_type.rb +10 -0
  83. data/lib/checkout_sdk/payments/charge_bearer.rb +10 -0
  84. data/lib/checkout_sdk/payments/d_local_installments.rb +11 -0
  85. data/lib/checkout_sdk/payments/d_local_processing_settings.rb +17 -0
  86. data/lib/checkout_sdk/payments/destination/bank_account_destination.rb +42 -0
  87. data/lib/checkout_sdk/payments/destination/card_destination.rb +24 -0
  88. data/lib/checkout_sdk/payments/destination/destination.rb +19 -0
  89. data/lib/checkout_sdk/payments/destination/destination_type.rb +12 -0
  90. data/lib/checkout_sdk/payments/destination/id_destination.rb +18 -0
  91. data/lib/checkout_sdk/payments/destination/token_destination.rb +18 -0
  92. data/lib/checkout_sdk/payments/exemption.rb +17 -0
  93. data/lib/checkout_sdk/payments/flight_leg_details.rb +35 -0
  94. data/lib/checkout_sdk/payments/instruction_scheme.rb +11 -0
  95. data/lib/checkout_sdk/payments/merchant_initiated_reason.rb +12 -0
  96. data/lib/checkout_sdk/payments/network_token_type.rb +12 -0
  97. data/lib/checkout_sdk/payments/os_type.rb +10 -0
  98. data/lib/checkout_sdk/payments/passenger.rb +17 -0
  99. data/lib/checkout_sdk/payments/passenger_name.rb +11 -0
  100. data/lib/checkout_sdk/payments/payer.rb +17 -0
  101. data/lib/checkout_sdk/payments/payment_instruction.rb +32 -0
  102. data/lib/checkout_sdk/payments/payment_recipient.rb +20 -0
  103. data/lib/checkout_sdk/payments/payment_request.rb +86 -0
  104. data/lib/checkout_sdk/payments/payment_type.rb +13 -0
  105. data/lib/checkout_sdk/payments/payments.rb +82 -0
  106. data/lib/checkout_sdk/payments/payments_client.rb +86 -0
  107. data/lib/checkout_sdk/payments/payout_billing_descriptor.rb +11 -0
  108. data/lib/checkout_sdk/payments/payout_request.rb +38 -0
  109. data/lib/checkout_sdk/payments/preferred_schema.rb +11 -0
  110. data/lib/checkout_sdk/payments/processing_settings.rb +80 -0
  111. data/lib/checkout_sdk/payments/product.rb +47 -0
  112. data/lib/checkout_sdk/payments/product_type.rb +12 -0
  113. data/lib/checkout_sdk/payments/refund_request.rb +17 -0
  114. data/lib/checkout_sdk/payments/risk_request.rb +11 -0
  115. data/lib/checkout_sdk/payments/sender/corporate_sender.rb +27 -0
  116. data/lib/checkout_sdk/payments/sender/government_sender.rb +27 -0
  117. data/lib/checkout_sdk/payments/sender/individual_sender.rb +42 -0
  118. data/lib/checkout_sdk/payments/sender/instrument_sender.rb +11 -0
  119. data/lib/checkout_sdk/payments/sender/sender.rb +22 -0
  120. data/lib/checkout_sdk/payments/sender/sender_type.rb +12 -0
  121. data/lib/checkout_sdk/payments/sender/source_of_funds.rb +14 -0
  122. data/lib/checkout_sdk/payments/sender/ticket.rb +23 -0
  123. data/lib/checkout_sdk/payments/shipping_details.rb +17 -0
  124. data/lib/checkout_sdk/payments/shipping_preference.rb +11 -0
  125. data/lib/checkout_sdk/payments/source/apm/after_pay_source.rb +15 -0
  126. data/lib/checkout_sdk/payments/source/apm/alipay_plus_source.rb +47 -0
  127. data/lib/checkout_sdk/payments/source/apm/bancontact_source.rb +24 -0
  128. data/lib/checkout_sdk/payments/source/apm/benefit_source.rb +11 -0
  129. data/lib/checkout_sdk/payments/source/apm/eps_source.rb +15 -0
  130. data/lib/checkout_sdk/payments/source/apm/giropay_source.rb +27 -0
  131. data/lib/checkout_sdk/payments/source/apm/ideal_source.rb +21 -0
  132. data/lib/checkout_sdk/payments/source/apm/knet_source.rb +36 -0
  133. data/lib/checkout_sdk/payments/source/apm/mbway_source.rb +11 -0
  134. data/lib/checkout_sdk/payments/source/apm/multi_banco_source.rb +21 -0
  135. data/lib/checkout_sdk/payments/source/apm/p24_source.rb +24 -0
  136. data/lib/checkout_sdk/payments/source/apm/paypal_source.rb +11 -0
  137. data/lib/checkout_sdk/payments/source/apm/post_finance_source.rb +21 -0
  138. data/lib/checkout_sdk/payments/source/apm/qpay_source.rb +24 -0
  139. data/lib/checkout_sdk/payments/source/apm/sofort_source.rb +18 -0
  140. data/lib/checkout_sdk/payments/source/apm/stcpay_source.rb +11 -0
  141. data/lib/checkout_sdk/payments/source/apm/tamara_source.rb +15 -0
  142. data/lib/checkout_sdk/payments/source/apm/we_chat_pay_source.rb +15 -0
  143. data/lib/checkout_sdk/payments/source/bank_account_source.rb +30 -0
  144. data/lib/checkout_sdk/payments/source/card_source.rb +39 -0
  145. data/lib/checkout_sdk/payments/source/currency_account_source.rb +15 -0
  146. data/lib/checkout_sdk/payments/source/id_source.rb +21 -0
  147. data/lib/checkout_sdk/payments/source/network_token_source.rb +45 -0
  148. data/lib/checkout_sdk/payments/source/payment_request_source.rb +18 -0
  149. data/lib/checkout_sdk/payments/source/payout_request_source.rb +22 -0
  150. data/lib/checkout_sdk/payments/source/payout_source_type.rb +9 -0
  151. data/lib/checkout_sdk/payments/source/provider_token_source.rb +21 -0
  152. data/lib/checkout_sdk/payments/source/token_source.rb +24 -0
  153. data/lib/checkout_sdk/payments/terminal_type.rb +11 -0
  154. data/lib/checkout_sdk/payments/three_ds_flow_type.rb +11 -0
  155. data/lib/checkout_sdk/payments/three_ds_request.rb +56 -0
  156. data/lib/checkout_sdk/payments/user_action.rb +10 -0
  157. data/lib/checkout_sdk/payments/void_request.rb +14 -0
  158. data/lib/checkout_sdk/platform_type.rb +10 -0
  159. data/lib/checkout_sdk/previous/checkout_api.rb +29 -0
  160. data/lib/checkout_sdk/previous/checkout_previous_sdk_builder.rb +11 -0
  161. data/lib/checkout_sdk/previous/checkout_previous_static_keys_sdk_builder.rb +24 -0
  162. data/lib/checkout_sdk/previous/previous_static_keys_sdk_credentials.rb +38 -0
  163. data/lib/checkout_sdk/sdk_authorization.rb +25 -0
  164. data/lib/checkout_sdk/sdk_credentials.rb +12 -0
  165. data/lib/checkout_sdk/sessions/authentication_method.rb +14 -0
  166. data/lib/checkout_sdk/sessions/authentication_type.rb +10 -0
  167. data/lib/checkout_sdk/sessions/card_holder_account_info.rb +32 -0
  168. data/lib/checkout_sdk/sessions/category.rb +10 -0
  169. data/lib/checkout_sdk/sessions/channel/app_session.rb +36 -0
  170. data/lib/checkout_sdk/sessions/channel/browser_session.rb +42 -0
  171. data/lib/checkout_sdk/sessions/channel/channel_data.rb +19 -0
  172. data/lib/checkout_sdk/sessions/channel/channel_data_type.rb +10 -0
  173. data/lib/checkout_sdk/sessions/channel/sdk_ephemeral_public_key.rb +19 -0
  174. data/lib/checkout_sdk/sessions/channel/sdk_interface_type.rb +11 -0
  175. data/lib/checkout_sdk/sessions/channel/three_ds_method_completion.rb +11 -0
  176. data/lib/checkout_sdk/sessions/channel/uie_elements.rb +13 -0
  177. data/lib/checkout_sdk/sessions/completion/completion_info.rb +19 -0
  178. data/lib/checkout_sdk/sessions/completion/completion_info_type.rb +10 -0
  179. data/lib/checkout_sdk/sessions/completion/hosted_completion_info.rb +21 -0
  180. data/lib/checkout_sdk/sessions/completion/non_hosted_completion_info.rb +15 -0
  181. data/lib/checkout_sdk/sessions/delivery_timeframe.rb +12 -0
  182. data/lib/checkout_sdk/sessions/installment.rb +17 -0
  183. data/lib/checkout_sdk/sessions/merchant_risk_info.rb +23 -0
  184. data/lib/checkout_sdk/sessions/recurring.rb +14 -0
  185. data/lib/checkout_sdk/sessions/session_address.rb +11 -0
  186. data/lib/checkout_sdk/sessions/session_marketplace_data.rb +11 -0
  187. data/lib/checkout_sdk/sessions/session_request.rb +68 -0
  188. data/lib/checkout_sdk/sessions/session_secret_credentials.rb +28 -0
  189. data/lib/checkout_sdk/sessions/session_source_type.rb +12 -0
  190. data/lib/checkout_sdk/sessions/sessions.rb +47 -0
  191. data/lib/checkout_sdk/sessions/sessions_billing_descriptor.rb +11 -0
  192. data/lib/checkout_sdk/sessions/sessions_client.rb +64 -0
  193. data/lib/checkout_sdk/sessions/shipping_indicator.rb +9 -0
  194. data/lib/checkout_sdk/sessions/source/card_source.rb +30 -0
  195. data/lib/checkout_sdk/sessions/source/id_source.rb +15 -0
  196. data/lib/checkout_sdk/sessions/source/network_token_source.rb +27 -0
  197. data/lib/checkout_sdk/sessions/source/session_scheme.rb +14 -0
  198. data/lib/checkout_sdk/sessions/source/session_source.rb +37 -0
  199. data/lib/checkout_sdk/sessions/source/token_source.rb +18 -0
  200. data/lib/checkout_sdk/sessions/three_ds_method_completion_request.rb +11 -0
  201. data/lib/checkout_sdk/sessions/transaction_type.rb +13 -0
  202. data/lib/checkout_sdk/static_keys_builder.rb +35 -0
  203. data/lib/checkout_sdk/static_keys_sdk_credentials.rb +35 -0
  204. data/lib/checkout_sdk/tokens/apple_pay_token_data.rb +20 -0
  205. data/lib/checkout_sdk/tokens/apple_pay_token_request.rb +15 -0
  206. data/lib/checkout_sdk/tokens/card_token_request.rb +36 -0
  207. data/lib/checkout_sdk/tokens/google_pay_token_data.rb +17 -0
  208. data/lib/checkout_sdk/tokens/google_pay_token_request.rb +15 -0
  209. data/lib/checkout_sdk/tokens/token_type.rb +11 -0
  210. data/lib/checkout_sdk/tokens/tokens.rb +10 -0
  211. data/lib/checkout_sdk/tokens/tokens_client.rb +21 -0
  212. data/lib/checkout_sdk/tokens/wallet_token_request.rb +19 -0
  213. data/lib/checkout_sdk/version.rb +3 -1
  214. data/lib/checkout_sdk.rb +59 -21
  215. data/sig/checkout_sdk.rbs +4 -0
  216. metadata +254 -81
  217. data/.gitignore +0 -11
  218. data/.travis.yml +0 -7
  219. data/Gemfile.lock +0 -45
  220. data/LICENSE +0 -21
  221. data/bin/console +0 -14
  222. data/bin/setup +0 -8
  223. data/checkout_sdk.gemspec +0 -24
  224. data/documentation/.gitignore +0 -20
  225. data/documentation/docs/environment.md +0 -26
  226. data/documentation/docs/getting_started.md +0 -48
  227. data/documentation/docs/initialize.md +0 -19
  228. data/documentation/docs/install.md +0 -21
  229. data/documentation/docs/payments.md +0 -200
  230. data/documentation/docs/sources.md +0 -53
  231. data/documentation/docs/tokens.md +0 -88
  232. data/documentation/docusaurus.config.js +0 -60
  233. data/documentation/package-lock.json +0 -13511
  234. data/documentation/package.json +0 -32
  235. data/documentation/sidebars.js +0 -10
  236. data/documentation/src/css/custom.css +0 -103
  237. data/documentation/src/pages/index.js +0 -10
  238. data/documentation/src/pages/styles.module.css +0 -37
  239. data/documentation/static/img/favicon.png +0 -0
  240. data/documentation/static/img/logo.png +0 -0
  241. data/documentation/static/img/undraw_docusaurus_mountain.svg +0 -170
  242. data/documentation/static/img/undraw_docusaurus_react.svg +0 -169
  243. data/documentation/static/img/undraw_docusaurus_tree.svg +0 -1
  244. data/documentation/yarn.lock +0 -9369
  245. data/lib/checkout_sdk/api_resource.rb +0 -77
  246. data/lib/checkout_sdk/configuration.rb +0 -10
  247. data/lib/checkout_sdk/data/capture_payment.rb +0 -11
  248. data/lib/checkout_sdk/data/payment_request_source.rb +0 -145
  249. data/lib/checkout_sdk/data/payment_source.rb +0 -40
  250. data/lib/checkout_sdk/data/refund_payment.rb +0 -11
  251. data/lib/checkout_sdk/data/request_token.rb +0 -67
  252. data/lib/checkout_sdk/data/void_payment.rb +0 -10
  253. data/spec/checkout_sdk/api_resource_spec.rb +0 -126
  254. data/spec/checkout_sdk/data/payment_request_source_spec.rb +0 -126
  255. data/spec/checkout_sdk/data/request_token_spec.rb +0 -107
  256. data/spec/checkout_sdk_spec.rb +0 -21
  257. data/spec/spec_helper.rb +0 -32
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ module Previous
5
+ module Apm
6
+ module Klarna
7
+ class KlarnaClient < Client
8
+ CREDIT_SESSIONS = 'credit-sessions'
9
+ ORDERS = 'orders'
10
+ CAPTURES = 'captures'
11
+ VOIDS = 'voids'
12
+ private_constant :CREDIT_SESSIONS, :ORDERS, :CAPTURES, :VOIDS
13
+
14
+ # @param [ApiClient] api_client
15
+ # @param [CheckoutConfiguration] configuration
16
+ def initialize(api_client, configuration)
17
+ super api_client, configuration, CheckoutSdk::AuthorizationType::SECRET_KEY
18
+ end
19
+
20
+ # @param credit_session_request [CreditSessionRequest]
21
+ def create_credit_session(credit_session_request)
22
+ api_client.invoke_post(build_path(base_url, CREDIT_SESSIONS), sdk_authorization, credit_session_request)
23
+ end
24
+
25
+ # @param session_id [String]
26
+ def get_credit_session(session_id)
27
+ api_client.invoke_get(build_path(base_url, CREDIT_SESSIONS, session_id), sdk_authorization)
28
+ end
29
+
30
+ # @param payment_id [String]
31
+ # @param order_capture_request [OrderCaptureRequest]
32
+ def capture_payment(payment_id, order_capture_request)
33
+ api_client.invoke_post(build_path(base_url, ORDERS, payment_id, CAPTURES),
34
+ sdk_authorization,
35
+ order_capture_request)
36
+ end
37
+
38
+ # @param payment_id [String]
39
+ # @param void_request [CheckoutSdk::Payments::VoidRequest]
40
+ def void_payment(payment_id, void_request)
41
+ api_client.invoke_post(build_path(base_url, ORDERS, payment_id, VOIDS),
42
+ sdk_authorization,
43
+ void_request)
44
+ end
45
+
46
+ private
47
+
48
+ def base_url
49
+ sandbox? ? 'klarna-external' : 'klarna'
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ module Previous
5
+ module Apm
6
+ module Klarna
7
+ # @!attribute name
8
+ # @return [String]
9
+ # @!attribute quantity
10
+ # @return [Integer]
11
+ # @!attribute unit_price
12
+ # @return [Integer]
13
+ # @!attribute tax_rate
14
+ # @return [Integer]
15
+ # @!attribute total_amount
16
+ # @return [Integer]
17
+ # @!attribute total_tax_amount
18
+ # @return [Integer]
19
+ class KlarnaProduct
20
+ attr_accessor :name,
21
+ :quantity,
22
+ :unit_price,
23
+ :tax_rate,
24
+ :total_amount,
25
+ :total_tax_amount
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ module Previous
5
+ module Apm
6
+ module Klarna
7
+ # @!attribute shipping_company
8
+ # @return [String]
9
+ # @!attribute shipping_method
10
+ # @return [String]
11
+ # @!attribute tracking_number
12
+ # @return [String]
13
+ # @!attribute tracking_uri
14
+ # @return [String]
15
+ # @!attribute return_shipping_company
16
+ # @return [String]
17
+ # @!attribute return_tracking_number
18
+ # @return [String]
19
+ # @!attribute return_tracking_uri
20
+ # @return [String]
21
+ class KlarnaShippingInfo
22
+ attr_accessor :shipping_company,
23
+ :shipping_method,
24
+ :tracking_number,
25
+ :tracking_uri,
26
+ :return_shipping_company,
27
+ :return_tracking_number,
28
+ :return_tracking_uri
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ module Previous
5
+ module Apm
6
+ module Klarna
7
+ # @!attribute type
8
+ # @return [CheckoutSdk::Common::PaymentSourceType]
9
+ # @!attribute amount
10
+ # @return [Integer]
11
+ # @!attribute reference
12
+ # @return [String]
13
+ # @!attribute metadata
14
+ # @return [Hash(String=>Object)]
15
+ # @!attribute klarna
16
+ # @return [Klarna]
17
+ # @!attribute shipping_info
18
+ # @return [KlarnaShippingInfo]
19
+ # @!attribute shipping_delay
20
+ # @return [Integer]
21
+ class OrderCaptureRequest
22
+ attr_reader :type
23
+ attr_accessor :amount,
24
+ :reference,
25
+ :metadata,
26
+ :klarna,
27
+ :shipping_info,
28
+ :shipping_delay
29
+
30
+ def initialize
31
+ @type = CheckoutSdk::Common::PaymentSourceType::KLARNA
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ module Previous
5
+ module Apm
6
+ module Sepa
7
+ class SepaClient < Client
8
+ SEPA_MANDATES = 'sepa/mandates'
9
+ PPRO = 'ppro'
10
+ CANCEL = 'cancel'
11
+ private_constant :SEPA_MANDATES, :PPRO, :CANCEL
12
+
13
+ # @param [ApiClient] api_client
14
+ # @param [CheckoutConfiguration] configuration
15
+ def initialize(api_client, configuration)
16
+ super api_client, configuration, CheckoutSdk::AuthorizationType::SECRET_KEY
17
+ end
18
+
19
+ # @param mandate_id [String]
20
+ def get_mandate(mandate_id)
21
+ api_client.invoke_get(build_path(SEPA_MANDATES, mandate_id), sdk_authorization)
22
+ end
23
+
24
+ # @param mandate_id [String]
25
+ def cancel_mandate(mandate_id)
26
+ api_client.invoke_post(build_path(SEPA_MANDATES, mandate_id, CANCEL), sdk_authorization)
27
+ end
28
+
29
+ # @param mandate_id [String]
30
+ def get_mandate_via_ppro(mandate_id)
31
+ api_client.invoke_get(build_path(PPRO, SEPA_MANDATES, mandate_id), sdk_authorization)
32
+ end
33
+
34
+ # @param mandate_id [String]
35
+ def cancel_mandate_via_ppro(mandate_id)
36
+ api_client.invoke_post(build_path(PPRO, SEPA_MANDATES, mandate_id, CANCEL), sdk_authorization)
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ module AuthorizationType
5
+ PUBLIC_KEY = 'PUBLIC_KEY'
6
+ SECRET_KEY = 'SECRET_KEY'
7
+ PUBLIC_KEY_OR_OAUTH = 'PUBLIC_KEY_OR_OAUTH'
8
+ SECRET_KEY_OR_OAUTH = 'SECRET_KEY_OR_OAUTH'
9
+ OAUTH = 'OAUTH'
10
+ CUSTOM = 'CUSTOM'
11
+ end
12
+ end
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ # @!attribute customers
5
+ # @return [CheckoutSdk::Customers::CustomersClient]
6
+ # @!attribute disputes
7
+ # @return [CheckoutSdk::Disputes::DisputesClient]
8
+ # @!attribute forex
9
+ # @return [CheckoutSdk::Forex::ForexClient]
10
+ # @!attribute instruments
11
+ # @return [CheckoutSdk::Instruments::InstrumentsClient]
12
+ # @!attribute payments
13
+ # @return [CheckoutSdk::Payments::PaymentsClient]
14
+ # @!attribute sessions
15
+ # @return [CheckoutSdk::Sessions::SessionsClient]
16
+ # @!attribute tokens
17
+ # @return [CheckoutSdk::Tokens::TokensClient]
18
+ # @!attribute ideal
19
+ # @return [CheckoutSdk::Apm::IdealClient]
20
+ class CheckoutApi
21
+ attr_reader :customers,
22
+ :disputes,
23
+ :forex,
24
+ :instruments,
25
+ :payments,
26
+ :sessions,
27
+ :tokens,
28
+ :ideal
29
+
30
+ # @param [CheckoutConfiguration] configuration
31
+ def initialize(configuration)
32
+ api_client = base_api_client configuration
33
+ @customers = CheckoutSdk::Customers::CustomersClient.new api_client, configuration
34
+ @disputes = CheckoutSdk::Disputes::DisputesClient.new api_client, configuration
35
+ @forex = CheckoutSdk::Forex::ForexClient.new api_client, configuration
36
+ @instruments = CheckoutSdk::Instruments::InstrumentsClient.new api_client, configuration
37
+ @payments = CheckoutSdk::Payments::PaymentsClient.new api_client, configuration
38
+ @sessions = CheckoutSdk::Sessions::SessionsClient.new api_client, configuration
39
+ @tokens = CheckoutSdk::Tokens::TokensClient.new api_client, configuration
40
+ @ideal = CheckoutSdk::Apm::IdealClient.new api_client, configuration
41
+ end
42
+
43
+ private
44
+
45
+ # @param [CheckoutConfiguration] configuration
46
+ # @return [ApiClient]
47
+ def base_api_client(configuration)
48
+ CheckoutSdk::ApiClient.new configuration, configuration.environment.base_uri
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ # @!attribute credentials
5
+ # @return [SdkCredentials]
6
+ # @!attribute environment
7
+ # @return [Environment]
8
+ # @!attribute http_client
9
+ # @return [Object]
10
+ class CheckoutConfiguration
11
+ attr_accessor :credentials, :environment, :http_client
12
+
13
+ # @param [SdkCredentials] credentials
14
+ # @param [Environment] environment
15
+ # @param [Object] http_client
16
+ def initialize(credentials, environment, http_client)
17
+ @credentials = credentials
18
+ @environment = environment
19
+ @http_client = http_client
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,52 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ # @!attribute client_id
5
+ # @return [String]
6
+ # @!attribute client_secret
7
+ # @return [String]
8
+ # @!attribute authorization_uri
9
+ # @return [String]
10
+ # @!attribute scopes
11
+ # @return [Array(CheckoutSdk::OAuthScopes)]
12
+ class CheckoutOAuthSdkBuilder < AbstractCheckoutSdkBuilder
13
+ attr_accessor :client_id,
14
+ :client_secret,
15
+ :authorization_uri,
16
+ :scopes
17
+
18
+ # @param [String] client_id
19
+ # @param [String] client_secret
20
+ # @return [CheckoutOAuthSdkBuilder]
21
+ def with_client_credentials(client_id, client_secret)
22
+ @client_id = client_id
23
+ @client_secret = client_secret
24
+ self
25
+ end
26
+
27
+ # @param [String] authorization_uri
28
+ # @return [CheckoutOAuthSdkBuilder]
29
+ def with_authorization_uri(authorization_uri)
30
+ @authorization_uri = authorization_uri
31
+ self
32
+ end
33
+
34
+ # @param [Array(CheckoutSdk::OAuthScopes)] scopes
35
+ # @return [CheckoutOAuthSdkBuilder]
36
+ def with_scopes(scopes)
37
+ @scopes = scopes
38
+ self
39
+ end
40
+
41
+ # @return [CheckoutSdk::CheckoutApi]
42
+ def build
43
+ CheckoutSdk::CheckoutApi.new(
44
+ CheckoutConfiguration.new(
45
+ OAuthSdkCredentials.new(client_id, client_secret, scopes, http_client, environment, authorization_uri),
46
+ environment,
47
+ http_client
48
+ )
49
+ )
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ class CheckoutSdkBuilder
5
+ # @return [CheckoutSdk::CheckoutStaticKeysSdkBuilder]
6
+ def static_keys
7
+ CheckoutSdk::CheckoutStaticKeysSdkBuilder.new
8
+ end
9
+
10
+ # @return [CheckoutSdk::CheckoutOAuthSdkBuilder]
11
+ def oauth
12
+ CheckoutSdk::CheckoutOAuthSdkBuilder.new
13
+ end
14
+
15
+ # @return [CheckoutSdk::Previous::CheckoutPreviousSdkBuilder]
16
+ def previous
17
+ CheckoutSdk::Previous::CheckoutPreviousSdkBuilder.new
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ class CheckoutStaticKeysSdkBuilder < StaticKeysBuilder
5
+ SECRET_KEY_PATTERN = '^sk_(sbox_)?[a-z2-7]{26}[a-z2-7*#$=]$'
6
+ PUBLIC_KEY_PATTERN = '^pk_(sbox_)?[a-z2-7]{26}[a-z2-7*#$=]$'
7
+ private_constant :SECRET_KEY_PATTERN, :PUBLIC_KEY_PATTERN
8
+
9
+ # @return [CheckoutSdk::CheckoutApi]
10
+ def build
11
+ @secret_key_pattern = SECRET_KEY_PATTERN
12
+ @public_key_pattern = PUBLIC_KEY_PATTERN
13
+ super
14
+ CheckoutApi.new(
15
+ CheckoutConfiguration.new(
16
+ StaticKeysSdkCredentials.new(secret_key, public_key),
17
+ environment,
18
+ http_client
19
+ )
20
+ )
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ class CheckoutUtils
5
+ # @return [CheckoutSdk::HttpMetadata]
6
+ def self.map_to_http_metadata(response)
7
+ metadata = CheckoutSdk::HttpMetadata.new
8
+ # TODO: convert to hash
9
+ metadata.headers = response[:headers]
10
+ metadata.status_code = response[:status]
11
+ metadata.body = response[:body]
12
+ metadata
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ # @!attribute api_client
5
+ # @return [ApiClient]
6
+ # @!attribute authorization_type
7
+ # @return [CheckoutConfiguration]
8
+ # @!attribute configuration
9
+ # @return [String] {AuthorizationType}
10
+ class Client
11
+ attr_reader :api_client,
12
+ :authorization_type,
13
+ :configuration
14
+ protected :api_client, :authorization_type, :configuration
15
+
16
+ # @param [CheckoutSdk::ApiClient] api_client
17
+ # @param [CheckoutConfiguration] configuration
18
+ # @param [String] authorization_type {AuthorizationType}
19
+ def initialize(api_client, configuration, authorization_type)
20
+ @api_client = api_client
21
+ @authorization_type = authorization_type
22
+ @configuration = configuration
23
+ end
24
+
25
+ protected
26
+
27
+ # @param [Array] args
28
+ def build_path(*args)
29
+ args.join('/')
30
+ end
31
+
32
+ # @return [TrueClass, FalseClass]
33
+ def sandbox?
34
+ @configuration.environment.is_sandbox
35
+ end
36
+
37
+ # @param [String, nil] authorization_type {AuthorizationType}
38
+ def sdk_authorization(authorization_type = nil)
39
+ if authorization_type.nil?
40
+ configuration.credentials.get_authorization(@authorization_type)
41
+ else
42
+ configuration.credentials.get_authorization(authorization_type)
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ module Common
5
+ # @!attribute file
6
+ # @return [String]
7
+ class AbstractFileRequest
8
+ attr_accessor :file
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ module Common
5
+ # @!attribute type
6
+ # @return [String] {AccountHolderType}
7
+ # @!attribute first_name
8
+ # @return [String]
9
+ # @!attribute last_name
10
+ # @return [String]
11
+ # @!attribute company_name
12
+ # @return [String]
13
+ # @!attribute tax_id
14
+ # @return [String]
15
+ # @!attribute date_of_birth
16
+ # @return [String]
17
+ # @!attribute country_of_birth
18
+ # @return [Country]
19
+ # @!attribute residential_status
20
+ # @return [String]
21
+ # @!attribute billing_address
22
+ # @return [Address]
23
+ # @!attribute phone
24
+ # @return [Phone]
25
+ # @!attribute identification
26
+ # @return [AccountHolderIdentification]
27
+ # @!attribute email
28
+ # @return [String]
29
+ class AccountHolder
30
+ attr_accessor :type,
31
+ :first_name,
32
+ :last_name,
33
+ :company_name,
34
+ :tax_id,
35
+ :date_of_birth,
36
+ :country_of_birth,
37
+ :residential_status,
38
+ :billing_address,
39
+ :phone,
40
+ :identification,
41
+ :email
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ module Common
5
+ # @!attribute type
6
+ # @return [String] {AccountHolderIdentificationType}
7
+ # @!attribute number
8
+ # @return [String]
9
+ # @!attribute issuing_country
10
+ # @return [String] {Country}
11
+ # @!attribute date_of_expiry
12
+ # @return [String]
13
+ class AccountHolderIdentification
14
+ attr_accessor :type,
15
+ :number,
16
+ :issuing_country,
17
+ :date_of_expiry
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ module Common
5
+ module AccountHolderIdentificationType
6
+ PASSPORT = 'passport'
7
+ DRIVING_LICENSE = 'driving_licence'
8
+ NATIONAL_ID = 'national_id'
9
+ COMPANY_REGISTRATION = 'company_registration'
10
+ TAX_ID = 'tax_id'
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ module Common
5
+ module AccountHolderType
6
+ INDIVIDUAL = 'individual'
7
+ CORPORATE = 'corporate'
8
+ INSTRUMENT = 'instrument'
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ module Common
5
+ module AccountType
6
+ SAVINGS = 'savings'
7
+ CURRENT = 'current'
8
+ CASH = 'cash'
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ module Common
5
+ # @!attribute address_line1
6
+ # @return [String]
7
+ # @!attribute address_line2
8
+ # @return [String]
9
+ # @!attribute city
10
+ # @return [String]
11
+ # @!attribute state
12
+ # @return [String]
13
+ # @!attribute zip
14
+ # @return [String]
15
+ # @!attribute country
16
+ # @return [String]
17
+ class Address
18
+ attr_accessor :address_line1,
19
+ :address_line2,
20
+ :city,
21
+ :state,
22
+ :zip,
23
+ :country
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ module Common
5
+ # @!attribute id
6
+ # @return [String]
7
+ # @!attribute amount
8
+ # @return [Integer]
9
+ # @!attribute reference
10
+ # @return [String]
11
+ # @!attribute commission
12
+ # @return [Commission]
13
+ class AmountAllocations
14
+ attr_accessor :id,
15
+ :amount,
16
+ :reference,
17
+ :commission
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ module Common
5
+ # @!attribute name
6
+ # @return [String]
7
+ # @!attribute branch
8
+ # @return [String]
9
+ # @!attribute address
10
+ # @return [Address]
11
+ class BankDetails
12
+ attr_accessor :name,
13
+ :branch,
14
+ :address
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ module Common
5
+ module ChallengeIndicator
6
+ NO_PREFERENCE = 'no_preference'
7
+ NO_CHALLENGE_REQUESTED = 'no_challenge_requested'
8
+ CHALLENGE_REQUESTED = 'challenge_requested'
9
+ CHALLENGE_REQUESTED_MANDATE = 'challenge_requested_mandate'
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ module Common
5
+ # @!attribute amount
6
+ # @return [Integer]
7
+ # @!attribute percentage
8
+ # @return [Integer]
9
+ class Commission
10
+ attr_accessor :amount,
11
+ :percentage
12
+ end
13
+ end
14
+ end