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.
- checksums.yaml +4 -4
- data/.rubocop.yml +31 -0
- data/CODE_OF_CONDUCT.md +84 -0
- data/Gemfile +5 -2
- data/LICENSE.md +9 -0
- data/README.md +96 -110
- data/Rakefile +3 -1
- data/lib/checkout_sdk/abstract_checkout_sdk_builder.rb +28 -0
- data/lib/checkout_sdk/api_client.rb +135 -0
- data/lib/checkout_sdk/apm/apm.rb +12 -0
- data/lib/checkout_sdk/apm/ideal/ideal_client.rb +25 -0
- data/lib/checkout_sdk/apm/previous/klarna/credit_session_request.rb +30 -0
- data/lib/checkout_sdk/apm/previous/klarna/klarna.rb +24 -0
- data/lib/checkout_sdk/apm/previous/klarna/klarna_client.rb +55 -0
- data/lib/checkout_sdk/apm/previous/klarna/klarna_product.rb +30 -0
- data/lib/checkout_sdk/apm/previous/klarna/klarna_shipping_info.rb +33 -0
- data/lib/checkout_sdk/apm/previous/klarna/order_capture_request.rb +37 -0
- data/lib/checkout_sdk/apm/previous/sepa/sepa_client.rb +42 -0
- data/lib/checkout_sdk/authorization_type.rb +12 -0
- data/lib/checkout_sdk/checkout_api.rb +51 -0
- data/lib/checkout_sdk/checkout_configuration.rb +22 -0
- data/lib/checkout_sdk/checkout_oauth_sdk_builder.rb +52 -0
- data/lib/checkout_sdk/checkout_sdk_builder.rb +20 -0
- data/lib/checkout_sdk/checkout_static_keys_sdk_builder.rb +23 -0
- data/lib/checkout_sdk/checkout_utils.rb +15 -0
- data/lib/checkout_sdk/client.rb +46 -0
- data/lib/checkout_sdk/common/abstract_file_request.rb +11 -0
- data/lib/checkout_sdk/common/account_holder.rb +44 -0
- data/lib/checkout_sdk/common/account_holder_identification.rb +20 -0
- data/lib/checkout_sdk/common/account_holder_identification_type.rb +13 -0
- data/lib/checkout_sdk/common/account_holder_type.rb +11 -0
- data/lib/checkout_sdk/common/account_type.rb +11 -0
- data/lib/checkout_sdk/common/address.rb +26 -0
- data/lib/checkout_sdk/common/amount_allocations.rb +20 -0
- data/lib/checkout_sdk/common/bank_details.rb +17 -0
- data/lib/checkout_sdk/common/challenge_indicator.rb +12 -0
- data/lib/checkout_sdk/common/commission.rb +14 -0
- data/lib/checkout_sdk/common/common.rb +22 -0
- data/lib/checkout_sdk/common/country.rb +260 -0
- data/lib/checkout_sdk/common/currency.rb +168 -0
- data/lib/checkout_sdk/common/customer_request.rb +26 -0
- data/lib/checkout_sdk/common/file_purpose.rb +9 -0
- data/lib/checkout_sdk/common/file_request.rb +11 -0
- data/lib/checkout_sdk/common/instrument_type.rb +11 -0
- data/lib/checkout_sdk/common/payment_source_type.rb +52 -0
- data/lib/checkout_sdk/common/phone.rb +14 -0
- data/lib/checkout_sdk/common/update_customer_request.rb +14 -0
- data/lib/checkout_sdk/customers/customer_request.rb +26 -0
- data/lib/checkout_sdk/customers/customers.rb +4 -0
- data/lib/checkout_sdk/customers/customers_client.rb +37 -0
- data/lib/checkout_sdk/disputes/dispute_evidence_request.rb +60 -0
- data/lib/checkout_sdk/disputes/dispute_status.rb +19 -0
- data/lib/checkout_sdk/disputes/disputes.rb +6 -0
- data/lib/checkout_sdk/disputes/disputes_client.rb +55 -0
- data/lib/checkout_sdk/disputes/disputes_query_filter.rb +47 -0
- data/lib/checkout_sdk/environment.rb +59 -0
- data/lib/checkout_sdk/error.rb +30 -0
- data/lib/checkout_sdk/forex/forex.rb +4 -0
- data/lib/checkout_sdk/forex/forex_client.rb +21 -0
- data/lib/checkout_sdk/forex/quote_request.rb +23 -0
- data/lib/checkout_sdk/http_metadata.rb +9 -0
- data/lib/checkout_sdk/instruments/create/instrument_bank_account_request.rb +51 -0
- data/lib/checkout_sdk/instruments/create/instrument_request.rb +17 -0
- data/lib/checkout_sdk/instruments/create/instrument_token_request.rb +21 -0
- data/lib/checkout_sdk/instruments/get/bank_account_field_query.rb +14 -0
- data/lib/checkout_sdk/instruments/get/payment_network.rb +14 -0
- data/lib/checkout_sdk/instruments/instruments.rb +15 -0
- data/lib/checkout_sdk/instruments/instruments_client.rb +49 -0
- data/lib/checkout_sdk/instruments/update/update_instrument_bank_account_request.rb +51 -0
- data/lib/checkout_sdk/instruments/update/update_instrument_card_request.rb +27 -0
- data/lib/checkout_sdk/instruments/update/update_instrument_request.rb +17 -0
- data/lib/checkout_sdk/instruments/update/update_instrument_token_request.rb +15 -0
- data/lib/checkout_sdk/json_serializer.rb +54 -0
- data/lib/checkout_sdk/oauth_access_token.rb +27 -0
- data/lib/checkout_sdk/oauth_scopes.rb +41 -0
- data/lib/checkout_sdk/oauth_sdk_credentials.rb +112 -0
- data/lib/checkout_sdk/payments/airline_data.rb +17 -0
- data/lib/checkout_sdk/payments/authorization_request.rb +17 -0
- data/lib/checkout_sdk/payments/authorization_type.rb +11 -0
- data/lib/checkout_sdk/payments/billing_descriptor.rb +17 -0
- data/lib/checkout_sdk/payments/capture_request.rb +41 -0
- data/lib/checkout_sdk/payments/capture_type.rb +10 -0
- data/lib/checkout_sdk/payments/charge_bearer.rb +10 -0
- data/lib/checkout_sdk/payments/d_local_installments.rb +11 -0
- data/lib/checkout_sdk/payments/d_local_processing_settings.rb +17 -0
- data/lib/checkout_sdk/payments/destination/bank_account_destination.rb +42 -0
- data/lib/checkout_sdk/payments/destination/card_destination.rb +24 -0
- data/lib/checkout_sdk/payments/destination/destination.rb +19 -0
- data/lib/checkout_sdk/payments/destination/destination_type.rb +12 -0
- data/lib/checkout_sdk/payments/destination/id_destination.rb +18 -0
- data/lib/checkout_sdk/payments/destination/token_destination.rb +18 -0
- data/lib/checkout_sdk/payments/exemption.rb +17 -0
- data/lib/checkout_sdk/payments/flight_leg_details.rb +35 -0
- data/lib/checkout_sdk/payments/instruction_scheme.rb +11 -0
- data/lib/checkout_sdk/payments/merchant_initiated_reason.rb +12 -0
- data/lib/checkout_sdk/payments/network_token_type.rb +12 -0
- data/lib/checkout_sdk/payments/os_type.rb +10 -0
- data/lib/checkout_sdk/payments/passenger.rb +17 -0
- data/lib/checkout_sdk/payments/passenger_name.rb +11 -0
- data/lib/checkout_sdk/payments/payer.rb +17 -0
- data/lib/checkout_sdk/payments/payment_instruction.rb +32 -0
- data/lib/checkout_sdk/payments/payment_recipient.rb +20 -0
- data/lib/checkout_sdk/payments/payment_request.rb +86 -0
- data/lib/checkout_sdk/payments/payment_type.rb +13 -0
- data/lib/checkout_sdk/payments/payments.rb +82 -0
- data/lib/checkout_sdk/payments/payments_client.rb +86 -0
- data/lib/checkout_sdk/payments/payout_billing_descriptor.rb +11 -0
- data/lib/checkout_sdk/payments/payout_request.rb +38 -0
- data/lib/checkout_sdk/payments/preferred_schema.rb +11 -0
- data/lib/checkout_sdk/payments/processing_settings.rb +80 -0
- data/lib/checkout_sdk/payments/product.rb +47 -0
- data/lib/checkout_sdk/payments/product_type.rb +12 -0
- data/lib/checkout_sdk/payments/refund_request.rb +17 -0
- data/lib/checkout_sdk/payments/risk_request.rb +11 -0
- data/lib/checkout_sdk/payments/sender/corporate_sender.rb +27 -0
- data/lib/checkout_sdk/payments/sender/government_sender.rb +27 -0
- data/lib/checkout_sdk/payments/sender/individual_sender.rb +42 -0
- data/lib/checkout_sdk/payments/sender/instrument_sender.rb +11 -0
- data/lib/checkout_sdk/payments/sender/sender.rb +22 -0
- data/lib/checkout_sdk/payments/sender/sender_type.rb +12 -0
- data/lib/checkout_sdk/payments/sender/source_of_funds.rb +14 -0
- data/lib/checkout_sdk/payments/sender/ticket.rb +23 -0
- data/lib/checkout_sdk/payments/shipping_details.rb +17 -0
- data/lib/checkout_sdk/payments/shipping_preference.rb +11 -0
- data/lib/checkout_sdk/payments/source/apm/after_pay_source.rb +15 -0
- data/lib/checkout_sdk/payments/source/apm/alipay_plus_source.rb +47 -0
- data/lib/checkout_sdk/payments/source/apm/bancontact_source.rb +24 -0
- data/lib/checkout_sdk/payments/source/apm/benefit_source.rb +11 -0
- data/lib/checkout_sdk/payments/source/apm/eps_source.rb +15 -0
- data/lib/checkout_sdk/payments/source/apm/giropay_source.rb +27 -0
- data/lib/checkout_sdk/payments/source/apm/ideal_source.rb +21 -0
- data/lib/checkout_sdk/payments/source/apm/knet_source.rb +36 -0
- data/lib/checkout_sdk/payments/source/apm/mbway_source.rb +11 -0
- data/lib/checkout_sdk/payments/source/apm/multi_banco_source.rb +21 -0
- data/lib/checkout_sdk/payments/source/apm/p24_source.rb +24 -0
- data/lib/checkout_sdk/payments/source/apm/paypal_source.rb +11 -0
- data/lib/checkout_sdk/payments/source/apm/post_finance_source.rb +21 -0
- data/lib/checkout_sdk/payments/source/apm/qpay_source.rb +24 -0
- data/lib/checkout_sdk/payments/source/apm/sofort_source.rb +18 -0
- data/lib/checkout_sdk/payments/source/apm/stcpay_source.rb +11 -0
- data/lib/checkout_sdk/payments/source/apm/tamara_source.rb +15 -0
- data/lib/checkout_sdk/payments/source/apm/we_chat_pay_source.rb +15 -0
- data/lib/checkout_sdk/payments/source/bank_account_source.rb +30 -0
- data/lib/checkout_sdk/payments/source/card_source.rb +39 -0
- data/lib/checkout_sdk/payments/source/currency_account_source.rb +15 -0
- data/lib/checkout_sdk/payments/source/id_source.rb +21 -0
- data/lib/checkout_sdk/payments/source/network_token_source.rb +45 -0
- data/lib/checkout_sdk/payments/source/payment_request_source.rb +18 -0
- data/lib/checkout_sdk/payments/source/payout_request_source.rb +22 -0
- data/lib/checkout_sdk/payments/source/payout_source_type.rb +9 -0
- data/lib/checkout_sdk/payments/source/provider_token_source.rb +21 -0
- data/lib/checkout_sdk/payments/source/token_source.rb +24 -0
- data/lib/checkout_sdk/payments/terminal_type.rb +11 -0
- data/lib/checkout_sdk/payments/three_ds_flow_type.rb +11 -0
- data/lib/checkout_sdk/payments/three_ds_request.rb +56 -0
- data/lib/checkout_sdk/payments/user_action.rb +10 -0
- data/lib/checkout_sdk/payments/void_request.rb +14 -0
- data/lib/checkout_sdk/platform_type.rb +10 -0
- data/lib/checkout_sdk/previous/checkout_api.rb +29 -0
- data/lib/checkout_sdk/previous/checkout_previous_sdk_builder.rb +11 -0
- data/lib/checkout_sdk/previous/checkout_previous_static_keys_sdk_builder.rb +24 -0
- data/lib/checkout_sdk/previous/previous_static_keys_sdk_credentials.rb +38 -0
- data/lib/checkout_sdk/sdk_authorization.rb +25 -0
- data/lib/checkout_sdk/sdk_credentials.rb +12 -0
- data/lib/checkout_sdk/sessions/authentication_method.rb +14 -0
- data/lib/checkout_sdk/sessions/authentication_type.rb +10 -0
- data/lib/checkout_sdk/sessions/card_holder_account_info.rb +32 -0
- data/lib/checkout_sdk/sessions/category.rb +10 -0
- data/lib/checkout_sdk/sessions/channel/app_session.rb +36 -0
- data/lib/checkout_sdk/sessions/channel/browser_session.rb +42 -0
- data/lib/checkout_sdk/sessions/channel/channel_data.rb +19 -0
- data/lib/checkout_sdk/sessions/channel/channel_data_type.rb +10 -0
- data/lib/checkout_sdk/sessions/channel/sdk_ephemeral_public_key.rb +19 -0
- data/lib/checkout_sdk/sessions/channel/sdk_interface_type.rb +11 -0
- data/lib/checkout_sdk/sessions/channel/three_ds_method_completion.rb +11 -0
- data/lib/checkout_sdk/sessions/channel/uie_elements.rb +13 -0
- data/lib/checkout_sdk/sessions/completion/completion_info.rb +19 -0
- data/lib/checkout_sdk/sessions/completion/completion_info_type.rb +10 -0
- data/lib/checkout_sdk/sessions/completion/hosted_completion_info.rb +21 -0
- data/lib/checkout_sdk/sessions/completion/non_hosted_completion_info.rb +15 -0
- data/lib/checkout_sdk/sessions/delivery_timeframe.rb +12 -0
- data/lib/checkout_sdk/sessions/installment.rb +17 -0
- data/lib/checkout_sdk/sessions/merchant_risk_info.rb +23 -0
- data/lib/checkout_sdk/sessions/recurring.rb +14 -0
- data/lib/checkout_sdk/sessions/session_address.rb +11 -0
- data/lib/checkout_sdk/sessions/session_marketplace_data.rb +11 -0
- data/lib/checkout_sdk/sessions/session_request.rb +68 -0
- data/lib/checkout_sdk/sessions/session_secret_credentials.rb +28 -0
- data/lib/checkout_sdk/sessions/session_source_type.rb +12 -0
- data/lib/checkout_sdk/sessions/sessions.rb +47 -0
- data/lib/checkout_sdk/sessions/sessions_billing_descriptor.rb +11 -0
- data/lib/checkout_sdk/sessions/sessions_client.rb +64 -0
- data/lib/checkout_sdk/sessions/shipping_indicator.rb +9 -0
- data/lib/checkout_sdk/sessions/source/card_source.rb +30 -0
- data/lib/checkout_sdk/sessions/source/id_source.rb +15 -0
- data/lib/checkout_sdk/sessions/source/network_token_source.rb +27 -0
- data/lib/checkout_sdk/sessions/source/session_scheme.rb +14 -0
- data/lib/checkout_sdk/sessions/source/session_source.rb +37 -0
- data/lib/checkout_sdk/sessions/source/token_source.rb +18 -0
- data/lib/checkout_sdk/sessions/three_ds_method_completion_request.rb +11 -0
- data/lib/checkout_sdk/sessions/transaction_type.rb +13 -0
- data/lib/checkout_sdk/static_keys_builder.rb +35 -0
- data/lib/checkout_sdk/static_keys_sdk_credentials.rb +35 -0
- data/lib/checkout_sdk/tokens/apple_pay_token_data.rb +20 -0
- data/lib/checkout_sdk/tokens/apple_pay_token_request.rb +15 -0
- data/lib/checkout_sdk/tokens/card_token_request.rb +36 -0
- data/lib/checkout_sdk/tokens/google_pay_token_data.rb +17 -0
- data/lib/checkout_sdk/tokens/google_pay_token_request.rb +15 -0
- data/lib/checkout_sdk/tokens/token_type.rb +11 -0
- data/lib/checkout_sdk/tokens/tokens.rb +10 -0
- data/lib/checkout_sdk/tokens/tokens_client.rb +21 -0
- data/lib/checkout_sdk/tokens/wallet_token_request.rb +19 -0
- data/lib/checkout_sdk/version.rb +3 -1
- data/lib/checkout_sdk.rb +59 -21
- data/sig/checkout_sdk.rbs +4 -0
- metadata +254 -81
- data/.gitignore +0 -11
- data/.travis.yml +0 -7
- data/Gemfile.lock +0 -45
- data/LICENSE +0 -21
- data/bin/console +0 -14
- data/bin/setup +0 -8
- data/checkout_sdk.gemspec +0 -24
- data/documentation/.gitignore +0 -20
- data/documentation/docs/environment.md +0 -26
- data/documentation/docs/getting_started.md +0 -48
- data/documentation/docs/initialize.md +0 -19
- data/documentation/docs/install.md +0 -21
- data/documentation/docs/payments.md +0 -200
- data/documentation/docs/sources.md +0 -53
- data/documentation/docs/tokens.md +0 -88
- data/documentation/docusaurus.config.js +0 -60
- data/documentation/package-lock.json +0 -13511
- data/documentation/package.json +0 -32
- data/documentation/sidebars.js +0 -10
- data/documentation/src/css/custom.css +0 -103
- data/documentation/src/pages/index.js +0 -10
- data/documentation/src/pages/styles.module.css +0 -37
- data/documentation/static/img/favicon.png +0 -0
- data/documentation/static/img/logo.png +0 -0
- data/documentation/static/img/undraw_docusaurus_mountain.svg +0 -170
- data/documentation/static/img/undraw_docusaurus_react.svg +0 -169
- data/documentation/static/img/undraw_docusaurus_tree.svg +0 -1
- data/documentation/yarn.lock +0 -9369
- data/lib/checkout_sdk/api_resource.rb +0 -77
- data/lib/checkout_sdk/configuration.rb +0 -10
- data/lib/checkout_sdk/data/capture_payment.rb +0 -11
- data/lib/checkout_sdk/data/payment_request_source.rb +0 -145
- data/lib/checkout_sdk/data/payment_source.rb +0 -40
- data/lib/checkout_sdk/data/refund_payment.rb +0 -11
- data/lib/checkout_sdk/data/request_token.rb +0 -67
- data/lib/checkout_sdk/data/void_payment.rb +0 -10
- data/spec/checkout_sdk/api_resource_spec.rb +0 -126
- data/spec/checkout_sdk/data/payment_request_source_spec.rb +0 -126
- data/spec/checkout_sdk/data/request_token_spec.rb +0 -107
- data/spec/checkout_sdk_spec.rb +0 -21
- 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,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,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
|