checkout_sdk 0.3.0 → 1.0.0.beta.0

Sign up to get free protection for your applications and to get access to all the features.
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