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,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ module Sessions
5
+ # @!attribute callback_url
6
+ # @return [String]
7
+ class NonHostedCompletionInfo < CompletionInfo
8
+ attr_accessor :callback_url
9
+
10
+ def initialize
11
+ super CompletionInfoType::NON_HOSTED
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ module Sessions
5
+ module DeliveryTimeframe
6
+ ELECTRONIC_DELIVERY = 'electronic_delivery'
7
+ SAME_DAY = 'same_day'
8
+ OVERNIGHT = 'overnight'
9
+ TWO_DAY_OR_MORE = 'two_day_or_more'
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ module Sessions
5
+ # @!attribute number_of_payments
6
+ # @return [Integer]
7
+ # @!attribute days_between_payments
8
+ # @return [Integer]
9
+ # @!attribute expiry
10
+ # @return [String]
11
+ class Installment
12
+ attr_accessor :number_of_payments,
13
+ :days_between_payments,
14
+ :expiry
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ module Sessions
5
+ # @!attribute delivery_email
6
+ # @return [String]
7
+ # @!attribute delivery_timeframe
8
+ # @return [String] {DeliveryTimeframe}
9
+ # @!attribute is_preorder
10
+ # @return [TrueClass, FalseClass]
11
+ # @!attribute is_reorder
12
+ # @return [TrueClass, FalseClass]
13
+ # @!attribute shipping_indicator
14
+ # @return [String] {ShippingIndicator}
15
+ class MerchantRiskInfo
16
+ attr_accessor :delivery_email,
17
+ :delivery_timeframe,
18
+ :is_preorder,
19
+ :is_reorder,
20
+ :shipping_indicator
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ module Sessions
5
+ # @!attribute days_between_payments
6
+ # @return [Integer]
7
+ # @!attribute expiry
8
+ # @return [String]
9
+ class Recurring
10
+ attr_accessor :days_between_payments,
11
+ :expiry
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ module Sessions
5
+ # @!attribute address_line3
6
+ # @return [String]
7
+ class SessionAddress < CheckoutSdk::Common::Address
8
+ attr_accessor :address_line3
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ module Sessions
5
+ # @!attribute sub_entity_id
6
+ # @return [String]
7
+ class SessionMarketplaceData
8
+ attr_accessor :sub_entity_id
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,68 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ module Sessions
5
+ # @!attribute source
6
+ # @return [SessionSource]
7
+ # @!attribute amount
8
+ # @return [Integer]
9
+ # @!attribute currency
10
+ # @return [String] {CheckoutSdk::Common::Currency}
11
+ # @!attribute processing_channel_id
12
+ # @return [String]
13
+ # @!attribute marketplace
14
+ # @return [SessionMarketplaceData]
15
+ # @!attribute authentication_type
16
+ # @return [String] {AuthenticationType}
17
+ # @!attribute authentication_category
18
+ # @return [String] {Category}
19
+ # @!attribute account_info
20
+ # @return [CardHolderAccountInfo]
21
+ # @!attribute challenge_indicator
22
+ # @return [String] {CheckoutSdk::Common::ChallengeIndicator}
23
+ # @!attribute billing_descriptor
24
+ # @return [SessionsBillingDescriptor]
25
+ # @!attribute reference
26
+ # @return [String]
27
+ # @!attribute merchant_risk_info
28
+ # @return [MerchantRiskInfo]
29
+ # @!attribute prior_transaction_reference
30
+ # @return [String]
31
+ # @!attribute transaction_type
32
+ # @return [String] {TransactionType}
33
+ # @!attribute shipping_address
34
+ # @return [SessionAddress]
35
+ # @!attribute shipping_address_matches_billing
36
+ # @return [TrueClass, FalseClass]
37
+ # @!attribute completion
38
+ # @return [CompletionInfo]
39
+ # @!attribute channel_data
40
+ # @return [ChannelData]
41
+ # @!attribute recurring
42
+ # @return [Recurring]
43
+ # @!attribute installment
44
+ # @return [Installment]
45
+ class SessionRequest
46
+ attr_accessor :source,
47
+ :amount,
48
+ :currency,
49
+ :processing_channel_id,
50
+ :marketplace,
51
+ :authentication_type,
52
+ :authentication_category,
53
+ :account_info,
54
+ :challenge_indicator,
55
+ :billing_descriptor,
56
+ :reference,
57
+ :merchant_risk_info,
58
+ :prior_transaction_reference,
59
+ :transaction_type,
60
+ :shipping_address,
61
+ :shipping_address_matches_billing,
62
+ :completion,
63
+ :channel_data,
64
+ :recurring,
65
+ :installment
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ module Sessions
5
+ # @!attribute session_secret
6
+ # @return [String]
7
+ class SessionSecretCredentials < SdkCredentials
8
+ attr_accessor :session_secret
9
+
10
+ # @param [String] session_secret
11
+ # @return [SessionSecretCredentials]
12
+ def initialize(session_secret)
13
+ @session_secret = session_secret
14
+ end
15
+
16
+ # @param [String] authorization_type
17
+ # @return [CheckoutSdk::SdkAuthorization]
18
+ def get_authorization(authorization_type)
19
+ if authorization_type != AuthorizationType::CUSTOM
20
+ raise CheckoutAuthorizationException.invalid_authorization AuthorizationType::CUSTOM
21
+ end
22
+ raise CheckoutAuthorizationException.invalid_key AuthorizationType::CUSTOM if @session_secret.nil?
23
+
24
+ SdkAuthorization.new PlatformType::CUSTOM, @session_secret
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ module Sessions
5
+ module SessionSourceType
6
+ CARD = 'card'
7
+ ID = 'id'
8
+ TOKEN = 'token'
9
+ NETWORK_TOKEN = 'network_token'
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'checkout_sdk/sessions/authentication_method'
4
+ require 'checkout_sdk/sessions/authentication_type'
5
+ require 'checkout_sdk/sessions/card_holder_account_info'
6
+ require 'checkout_sdk/sessions/category'
7
+ require 'checkout_sdk/sessions/delivery_timeframe'
8
+ require 'checkout_sdk/sessions/installment'
9
+ require 'checkout_sdk/sessions/merchant_risk_info'
10
+ require 'checkout_sdk/sessions/recurring'
11
+ require 'checkout_sdk/sessions/session_address'
12
+ require 'checkout_sdk/sessions/session_marketplace_data'
13
+ require 'checkout_sdk/sessions/session_request'
14
+ require 'checkout_sdk/sessions/session_source_type'
15
+ require 'checkout_sdk/sessions/sessions_billing_descriptor'
16
+ require 'checkout_sdk/sessions/shipping_indicator'
17
+ require 'checkout_sdk/sessions/transaction_type'
18
+ require 'checkout_sdk/sessions/three_ds_method_completion_request'
19
+
20
+ # channel
21
+ require 'checkout_sdk/sessions/channel/channel_data'
22
+ require 'checkout_sdk/sessions/channel/channel_data_type'
23
+ require 'checkout_sdk/sessions/channel/sdk_ephemeral_public_key'
24
+ require 'checkout_sdk/sessions/channel/sdk_interface_type'
25
+ require 'checkout_sdk/sessions/channel/three_ds_method_completion'
26
+ require 'checkout_sdk/sessions/channel/uie_elements'
27
+ require 'checkout_sdk/sessions/channel/app_session'
28
+ require 'checkout_sdk/sessions/channel/browser_session'
29
+
30
+ # completion
31
+ require 'checkout_sdk/sessions/completion/completion_info'
32
+ require 'checkout_sdk/sessions/completion/completion_info_type'
33
+ require 'checkout_sdk/sessions/completion/hosted_completion_info'
34
+ require 'checkout_sdk/sessions/completion/non_hosted_completion_info'
35
+
36
+ # sources
37
+ require 'checkout_sdk/sessions/source/session_scheme'
38
+ require 'checkout_sdk/sessions/source/session_source'
39
+ require 'checkout_sdk/sessions/source/card_source'
40
+ require 'checkout_sdk/sessions/source/id_source'
41
+ require 'checkout_sdk/sessions/source/network_token_source'
42
+ require 'checkout_sdk/sessions/source/token_source'
43
+
44
+ # credentials
45
+ require 'checkout_sdk/sessions/session_secret_credentials'
46
+
47
+ require 'checkout_sdk/sessions/sessions_client'
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ module Sessions
5
+ # @!attribute name
6
+ # @return [String]
7
+ class SessionsBillingDescriptor
8
+ attr_accessor :name
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,64 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ module Sessions
5
+ class SessionsClient < Client
6
+ SESSIONS = 'sessions'
7
+ COLLECT_DATA = 'collect-data'
8
+ COMPLETE = 'complete'
9
+ ISSUER_FINGERPRINT = 'issuer-fingerprint'
10
+ private_constant :SESSIONS, :COLLECT_DATA, :COMPLETE, :ISSUER_FINGERPRINT
11
+
12
+ # @param [ApiClient] api_client
13
+ # @param [CheckoutConfiguration] configuration
14
+ def initialize(api_client, configuration)
15
+ super api_client, configuration, CheckoutSdk::AuthorizationType::OAUTH
16
+ end
17
+
18
+ # @param [SessionRequest] session_request
19
+ def request_session(session_request)
20
+ api_client.invoke_post(SESSIONS, sdk_authorization, session_request)
21
+ end
22
+
23
+ # @param [String] session_id
24
+ # @param [String, nil] session_secret
25
+ def get_session_details(session_id, session_secret = nil)
26
+ api_client.invoke_get(build_path(SESSIONS, session_id), custom_sdk_authorization(session_secret))
27
+ end
28
+
29
+ # @param [String] session_id
30
+ # @param [ChannelData] channel_data
31
+ # @param [String, nil] session_secret
32
+ def update_session(session_id, channel_data, session_secret = nil)
33
+ api_client.invoke_put(build_path(SESSIONS, session_id, COLLECT_DATA),
34
+ custom_sdk_authorization(session_secret),
35
+ channel_data)
36
+ end
37
+
38
+ # @param [String] session_id
39
+ # @param [String, nil] session_secret
40
+ def complete_session(session_id, session_secret = nil)
41
+ api_client.invoke_post(build_path(SESSIONS, session_id, COMPLETE), custom_sdk_authorization(session_secret))
42
+ end
43
+
44
+ # @param [String] session_id
45
+ # @param [ThreeDsMethodCompletionRequest] three_ds_method_completion_request
46
+ # @param [String, nil] session_secret
47
+ def update_3ds_method_completion(session_id, three_ds_method_completion_request, session_secret = nil)
48
+ api_client.invoke_put(build_path(SESSIONS, session_id, ISSUER_FINGERPRINT),
49
+ custom_sdk_authorization(session_secret),
50
+ three_ds_method_completion_request)
51
+ end
52
+
53
+ # @param [String, nil] session_secret
54
+ def custom_sdk_authorization(session_secret = nil)
55
+ if session_secret.nil?
56
+ sdk_authorization
57
+ else
58
+ SessionSecretCredentials.new(session_secret) \
59
+ .get_authorization(AuthorizationType::CUSTOM)
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ module Sessions
5
+ module ShippingIndicator
6
+ VISA = 'visa'
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ module Sessions
5
+ # @!attribute number
6
+ # @return [String]
7
+ # @!attribute expiry_month
8
+ # @return [Integer]
9
+ # @!attribute expiry_year
10
+ # @return [Integer]
11
+ # @!attribute name
12
+ # @return [String]
13
+ # @!attribute stored
14
+ # @return [TrueClass, FalseClass]
15
+ # @!attribute store_for_future_use
16
+ # @return [TrueClass, FalseClass]
17
+ class CardSource < SessionSource
18
+ attr_accessor :number,
19
+ :expiry_month,
20
+ :expiry_year,
21
+ :name,
22
+ :stored,
23
+ :store_for_future_use
24
+
25
+ def initialize
26
+ super SessionSourceType::CARD
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ module Sessions
5
+ # @!attribute id
6
+ # @return [String]
7
+ class IdSource < SessionSource
8
+ attr_accessor :id
9
+
10
+ def initialize
11
+ super SessionSourceType::ID
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ module Sessions
5
+ # @!attribute token
6
+ # @return [String]
7
+ # @!attribute expiry_month
8
+ # @return [Integer]
9
+ # @!attribute expiry_year
10
+ # @return [Integer]
11
+ # @!attribute name
12
+ # @return [String]
13
+ # @!attribute stored
14
+ # @return [TrueClass, FalseClass]
15
+ class NetworkTokenSource < SessionSource
16
+ attr_accessor :token,
17
+ :expiry_month,
18
+ :expiry_year,
19
+ :name,
20
+ :stored
21
+
22
+ def initialize
23
+ super SessionSourceType::NETWORK_TOKEN
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ module Sessions
5
+ module SessionScheme
6
+ VISA = 'visa'
7
+ MASTERCARD = 'mastercard'
8
+ JCB = 'jcb'
9
+ AMEX = 'amex'
10
+ DINERS = 'diners'
11
+ CARTES_BANCAIRES = 'cartes_bancaires'
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ module Sessions
5
+ # @!attribute type
6
+ # @return [String] {SessionSourceType}
7
+ # @!attribute scheme
8
+ # @return [String] {SessionScheme}
9
+ # @!attribute billing_address
10
+ # @return [SessionAddress]
11
+ # @!attribute home_phone
12
+ # @return [CheckoutSdk::Common::Phone]
13
+ # @!attribute mobile_phone
14
+ # @return [CheckoutSdk::Common::Phone]
15
+ # @!attribute work_phone
16
+ # @return [CheckoutSdk::Common::Phone]
17
+ # @!attribute email
18
+ # @return [String]
19
+ class SessionSource
20
+ attr_reader :type
21
+ attr_accessor :scheme,
22
+ :billing_address,
23
+ :home_phone,
24
+ :mobile_phone,
25
+ :work_phone,
26
+ :email
27
+
28
+ protected
29
+
30
+ # @abstract
31
+ # @param [String] type {SessionSourceType}
32
+ def initialize(type)
33
+ @type = type
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ module Sessions
5
+ # @!attribute token
6
+ # @return [String]
7
+ # @!attribute store_for_future_use
8
+ # @return [TrueClass, FalseClass]
9
+ class TokenSource < SessionSource
10
+ attr_accessor :token,
11
+ :store_for_future_use
12
+
13
+ def initialize
14
+ super SessionSourceType::TOKEN
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ module Sessions
5
+ # @!attribute three_ds_method_completion
6
+ # @return [String] {ThreeDsMethodCompletion}
7
+ class ThreeDsMethodCompletionRequest
8
+ attr_accessor :three_ds_method_completion
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ module Sessions
5
+ module TransactionType
6
+ GOODS_SERVICE = 'goods_service'
7
+ CHECK_ACCEPTANCE = 'check_acceptance'
8
+ ACCOUNT_FUNDING = 'account_funding'
9
+ QUASHI_CARD_TRANSACTION = 'quashi_card_transaction'
10
+ PREPAID_ACTIVATION_AND_LOAD = 'prepaid_activation_and_load'
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ class StaticKeysBuilder < AbstractCheckoutSdkBuilder
5
+ attr_accessor :secret_key, :public_key
6
+
7
+ # @param [String] secret_key
8
+ def with_secret_key(secret_key)
9
+ @secret_key = secret_key
10
+ self
11
+ end
12
+
13
+ # @param [String] public_key
14
+ def with_public_key(public_key)
15
+ @public_key = public_key
16
+ self
17
+ end
18
+
19
+ protected
20
+
21
+ def build
22
+ super
23
+ validate_secret_key(@secret_key_pattern)
24
+ validate_public_key(@public_key_pattern)
25
+ end
26
+
27
+ def validate_public_key(pattern)
28
+ raise CheckoutArgumentException, 'Invalid public key' if !public_key.nil? && !public_key.match(pattern)
29
+ end
30
+
31
+ def validate_secret_key(pattern)
32
+ raise CheckoutArgumentException, 'Invalid secret key' if secret_key.nil? || !secret_key.match(pattern)
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ # @!attribute secret_key
5
+ # @return [String]
6
+ # @!attribute public_key
7
+ # @return [String]
8
+ class StaticKeysSdkCredentials < SdkCredentials
9
+ attr_reader :secret_key, :public_key
10
+
11
+ # @param [String] secret_key
12
+ # @param [String] public_key
13
+ def initialize(secret_key, public_key)
14
+ @secret_key = secret_key
15
+ @public_key = public_key
16
+ end
17
+
18
+ # @param [String] authorization_type
19
+ # @return [CheckoutSdk::SdkAuthorization]
20
+ def get_authorization(authorization_type)
21
+ case authorization_type
22
+ when AuthorizationType::SECRET_KEY, AuthorizationType::SECRET_KEY_OR_OAUTH
23
+ raise CheckoutAuthorizationException.invalid_key AuthorizationType::SECRET_KEY if secret_key.nil?
24
+
25
+ SdkAuthorization.new(PlatformType::DEFAULT, @secret_key)
26
+ when AuthorizationType::PUBLIC_KEY, AuthorizationType::PUBLIC_KEY_OR_OAUTH
27
+ raise CheckoutAuthorizationException.invalid_key AuthorizationType::PUBLIC_KEY if public_key.nil?
28
+
29
+ SdkAuthorization.new(PlatformType::DEFAULT, @public_key)
30
+ else
31
+ raise CheckoutAuthorizationException.invalid_authorization authorization_type
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ module Tokens
5
+ # @!attribute version
6
+ # @return [String]
7
+ # @!attribute data
8
+ # @return [String]
9
+ # @!attribute signature
10
+ # @return [String]
11
+ # @!attribute header
12
+ # @return [Hash{String => Object]
13
+ class ApplePayTokenData
14
+ attr_accessor :version,
15
+ :data,
16
+ :signature,
17
+ :header
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CheckoutSdk
4
+ module Tokens
5
+ # @!attribute token_data
6
+ # @return [ApplePayTokenData]
7
+ class ApplePayTokenRequest < WalletTokenRequest
8
+ attr_accessor :token_data
9
+
10
+ def initialize
11
+ super CheckoutSdk::Tokens::TokenType::APPLE_PAY
12
+ end
13
+ end
14
+ end
15
+ end