onlinepayments-sdk-ruby 4.23.0 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +0 -0
- data/LICENSE.txt +0 -0
- data/README.md +5 -6
- data/Rakefile +0 -0
- data/lib/onlinepayments/sdk/api_exception.rb +47 -35
- data/lib/onlinepayments/sdk/api_resource.rb +49 -97
- data/lib/onlinepayments/sdk/authentication/authenticator.rb +19 -0
- data/lib/onlinepayments/sdk/authentication/authorization_type.rb +15 -0
- data/lib/onlinepayments/sdk/authentication/v1hmac_authenticator.rb +109 -0
- data/lib/onlinepayments/sdk/authentication.rb +1 -0
- data/lib/onlinepayments/sdk/authorization_exception.rb +14 -8
- data/lib/onlinepayments/sdk/call_context.rb +30 -21
- data/lib/onlinepayments/sdk/client.rb +36 -18
- data/lib/onlinepayments/sdk/communication/communication_exception.rb +19 -0
- data/lib/onlinepayments/sdk/communication/connection.rb +48 -0
- data/lib/onlinepayments/sdk/communication/default_connection.rb +427 -0
- data/lib/onlinepayments/sdk/communication/metadata_provider.rb +160 -0
- data/lib/onlinepayments/sdk/communication/multipart_form_data_object.rb +52 -0
- data/lib/onlinepayments/sdk/communication/multipart_form_data_request.rb +13 -0
- data/lib/onlinepayments/sdk/communication/not_found_exception.rb +19 -0
- data/lib/onlinepayments/sdk/communication/param_request.rb +14 -0
- data/lib/onlinepayments/sdk/communication/pooled_connection.rb +26 -0
- data/lib/onlinepayments/sdk/communication/request_header.rb +62 -0
- data/lib/onlinepayments/sdk/communication/request_param.rb +28 -0
- data/lib/onlinepayments/sdk/communication/response_exception.rb +56 -0
- data/lib/onlinepayments/sdk/communication/response_header.rb +78 -0
- data/lib/onlinepayments/sdk/communication.rb +1 -0
- data/lib/onlinepayments/sdk/communicator.rb +475 -268
- data/lib/onlinepayments/sdk/communicator_configuration.rb +162 -53
- data/lib/onlinepayments/sdk/declined_payment_exception.rb +28 -21
- data/lib/onlinepayments/sdk/declined_payout_exception.rb +28 -23
- data/lib/onlinepayments/sdk/declined_refund_exception.rb +28 -23
- data/lib/onlinepayments/sdk/declined_transaction_exception.rb +16 -10
- data/lib/onlinepayments/sdk/domain/account_on_file.rb +44 -35
- data/lib/onlinepayments/sdk/domain/account_on_file_attribute.rb +42 -28
- data/lib/onlinepayments/sdk/domain/account_on_file_display_hints.rb +29 -24
- data/lib/onlinepayments/sdk/domain/acquirer_information.rb +27 -22
- data/lib/onlinepayments/sdk/domain/acquirer_selection_information.rb +34 -24
- data/lib/onlinepayments/sdk/domain/additional_order_input.rb +43 -38
- data/lib/onlinepayments/sdk/domain/address.rb +65 -43
- data/lib/onlinepayments/sdk/domain/address_personal.rb +78 -52
- data/lib/onlinepayments/sdk/domain/airline_data.rb +204 -123
- data/lib/onlinepayments/sdk/domain/airline_flight_leg.rb +158 -95
- data/lib/onlinepayments/sdk/domain/airline_passenger.rb +59 -39
- data/lib/onlinepayments/sdk/domain/amount_breakdown.rb +27 -20
- data/lib/onlinepayments/sdk/domain/amount_of_money.rb +27 -20
- data/lib/onlinepayments/sdk/domain/api_error.rb +73 -47
- data/lib/onlinepayments/sdk/domain/apple_pay_line_item.rb +72 -0
- data/lib/onlinepayments/sdk/domain/apple_pay_recurring_payment_request.rb +61 -0
- data/lib/onlinepayments/sdk/domain/bank_account_iban.rb +20 -16
- data/lib/onlinepayments/sdk/domain/browser_data.rb +51 -35
- data/lib/onlinepayments/sdk/domain/calculate_surcharge_request.rb +27 -24
- data/lib/onlinepayments/sdk/domain/calculate_surcharge_response.rb +22 -20
- data/lib/onlinepayments/sdk/domain/cancel_payment_request.rb +27 -22
- data/lib/onlinepayments/sdk/domain/cancel_payment_response.rb +20 -18
- data/lib/onlinepayments/sdk/domain/capture.rb +41 -32
- data/lib/onlinepayments/sdk/domain/capture_output.rb +106 -78
- data/lib/onlinepayments/sdk/domain/capture_payment_request.rb +43 -26
- data/lib/onlinepayments/sdk/domain/capture_response.rb +41 -32
- data/lib/onlinepayments/sdk/domain/capture_status_output.rb +20 -16
- data/lib/onlinepayments/sdk/domain/captures_response.rb +22 -20
- data/lib/onlinepayments/sdk/domain/card.rb +41 -28
- data/lib/onlinepayments/sdk/domain/card_essentials.rb +41 -28
- data/lib/onlinepayments/sdk/domain/card_fraud_results.rb +34 -24
- data/lib/onlinepayments/sdk/domain/card_info.rb +27 -20
- data/lib/onlinepayments/sdk/domain/card_payment_method_specific_input.rb +199 -128
- data/lib/onlinepayments/sdk/domain/card_payment_method_specific_input_base.rb +149 -104
- data/lib/onlinepayments/sdk/domain/card_payment_method_specific_input_for_hosted_checkout.rb +36 -28
- data/lib/onlinepayments/sdk/domain/card_payment_method_specific_output.rb +133 -100
- data/lib/onlinepayments/sdk/domain/card_payout_method_specific_input.rb +41 -30
- data/lib/onlinepayments/sdk/domain/card_recurrence_details.rb +20 -16
- data/lib/onlinepayments/sdk/domain/card_source.rb +41 -30
- data/lib/onlinepayments/sdk/domain/card_without_cvv.rb +34 -24
- data/lib/onlinepayments/sdk/domain/company_information.rb +20 -16
- data/lib/onlinepayments/sdk/domain/complete_payment_card_payment_method_specific_input.rb +20 -18
- data/lib/onlinepayments/sdk/domain/complete_payment_request.rb +27 -24
- data/lib/onlinepayments/sdk/domain/complete_payment_response.rb +35 -31
- data/lib/onlinepayments/sdk/domain/contact_details.rb +51 -35
- data/lib/onlinepayments/sdk/domain/create_hosted_checkout_request.rb +76 -59
- data/lib/onlinepayments/sdk/domain/create_hosted_checkout_response.rb +60 -43
- data/lib/onlinepayments/sdk/domain/create_hosted_tokenization_request.rb +57 -42
- data/lib/onlinepayments/sdk/domain/create_hosted_tokenization_response.rb +57 -44
- data/lib/onlinepayments/sdk/domain/create_mandate_request.rb +71 -48
- data/lib/onlinepayments/sdk/domain/create_mandate_response.rb +27 -24
- data/lib/onlinepayments/sdk/domain/create_mandate_with_return_url.rb +71 -48
- data/lib/onlinepayments/sdk/domain/create_payment_link_request.rb +120 -87
- data/lib/onlinepayments/sdk/domain/create_payment_request.rb +82 -60
- data/lib/onlinepayments/sdk/domain/create_payment_response.rb +35 -31
- data/lib/onlinepayments/sdk/domain/create_payout_request.rb +61 -40
- data/lib/onlinepayments/sdk/domain/create_token_request.rb +27 -22
- data/lib/onlinepayments/sdk/domain/created_payment_output.rb +27 -22
- data/lib/onlinepayments/sdk/domain/created_token_response.rb +50 -38
- data/lib/onlinepayments/sdk/domain/credit_card_specific_input_hosted_tokenization.rb +29 -26
- data/lib/onlinepayments/sdk/domain/credit_card_validation_rules_hosted_tokenization.rb +27 -20
- data/lib/onlinepayments/sdk/domain/currency_conversion.rb +27 -22
- data/lib/onlinepayments/sdk/domain/currency_conversion_input.rb +27 -20
- data/lib/onlinepayments/sdk/domain/currency_conversion_request.rb +27 -24
- data/lib/onlinepayments/sdk/domain/currency_conversion_response.rb +34 -28
- data/lib/onlinepayments/sdk/domain/currency_conversion_result.rb +27 -20
- data/lib/onlinepayments/sdk/domain/currency_conversion_specific_input.rb +20 -16
- data/lib/onlinepayments/sdk/domain/customer.rb +87 -68
- data/lib/onlinepayments/sdk/domain/customer_account.rb +77 -55
- data/lib/onlinepayments/sdk/domain/customer_account_authentication.rb +34 -20
- data/lib/onlinepayments/sdk/domain/customer_bank_account.rb +34 -24
- data/lib/onlinepayments/sdk/domain/customer_device.rb +64 -44
- data/lib/onlinepayments/sdk/domain/customer_device_output.rb +20 -16
- data/lib/onlinepayments/sdk/domain/customer_output.rb +20 -18
- data/lib/onlinepayments/sdk/domain/customer_payment_activity.rb +34 -24
- data/lib/onlinepayments/sdk/domain/customer_token.rb +35 -31
- data/lib/onlinepayments/sdk/domain/data_object.rb +32 -0
- data/lib/onlinepayments/sdk/domain/dcc_card_source.rb +41 -30
- data/lib/onlinepayments/sdk/domain/dcc_proposal.rb +51 -41
- data/lib/onlinepayments/sdk/domain/decrypted_payment_data.rb +51 -35
- data/lib/onlinepayments/sdk/domain/directory_entry.rb +34 -24
- data/lib/onlinepayments/sdk/domain/discount.rb +20 -16
- data/lib/onlinepayments/sdk/domain/empty_validator.rb +7 -6
- data/lib/onlinepayments/sdk/domain/error_response.rb +29 -24
- data/lib/onlinepayments/sdk/domain/external_cardholder_authentication_data.rb +86 -55
- data/lib/onlinepayments/sdk/domain/external_token_linked.rb +35 -24
- data/lib/onlinepayments/sdk/domain/feedbacks.rb +30 -0
- data/lib/onlinepayments/sdk/domain/fixed_list_validator.rb +22 -20
- data/lib/onlinepayments/sdk/domain/fraud_fields.rb +37 -28
- data/lib/onlinepayments/sdk/domain/fraud_results.rb +20 -16
- data/lib/onlinepayments/sdk/domain/g_pay_three_d_secure.rb +50 -36
- data/lib/onlinepayments/sdk/domain/get_hosted_checkout_response.rb +27 -22
- data/lib/onlinepayments/sdk/domain/get_hosted_tokenization_response.rb +27 -22
- data/lib/onlinepayments/sdk/domain/get_iin_details_request.rb +27 -22
- data/lib/onlinepayments/sdk/domain/get_iin_details_response.rb +52 -38
- data/lib/onlinepayments/sdk/domain/get_mandate_response.rb +20 -18
- data/lib/onlinepayments/sdk/domain/get_payment_product_groups_response.rb +22 -20
- data/lib/onlinepayments/sdk/domain/get_payment_products_response.rb +22 -20
- data/lib/onlinepayments/sdk/domain/get_privacy_policy_response.rb +20 -16
- data/lib/onlinepayments/sdk/domain/gift_card_purchase.rb +27 -22
- data/lib/onlinepayments/sdk/domain/hosted_checkout_specific_input.rb +83 -56
- data/lib/onlinepayments/sdk/domain/hosted_checkout_specific_output.rb +27 -20
- data/lib/onlinepayments/sdk/domain/iin_detail.rb +34 -24
- data/lib/onlinepayments/sdk/domain/label_template_element.rb +27 -20
- data/lib/onlinepayments/sdk/domain/length_validator.rb +27 -20
- data/lib/onlinepayments/sdk/domain/line_item.rb +44 -31
- data/lib/onlinepayments/sdk/domain/line_item_invoice_data.rb +20 -16
- data/lib/onlinepayments/sdk/domain/loan_recipient.rb +51 -35
- data/lib/onlinepayments/sdk/domain/lodging_data.rb +20 -16
- data/lib/onlinepayments/sdk/domain/mandate_address.rb +51 -35
- data/lib/onlinepayments/sdk/domain/mandate_address_response.rb +51 -35
- data/lib/onlinepayments/sdk/domain/mandate_contact_details.rb +20 -16
- data/lib/onlinepayments/sdk/domain/mandate_customer.rb +52 -44
- data/lib/onlinepayments/sdk/domain/mandate_customer_response.rb +52 -44
- data/lib/onlinepayments/sdk/domain/mandate_merchant_action.rb +27 -22
- data/lib/onlinepayments/sdk/domain/mandate_personal_information.rb +27 -22
- data/lib/onlinepayments/sdk/domain/mandate_personal_information_response.rb +27 -22
- data/lib/onlinepayments/sdk/domain/mandate_personal_name.rb +27 -20
- data/lib/onlinepayments/sdk/domain/mandate_personal_name_response.rb +27 -20
- data/lib/onlinepayments/sdk/domain/mandate_redirect_data.rb +27 -20
- data/lib/onlinepayments/sdk/domain/mandate_response.rb +64 -44
- data/lib/onlinepayments/sdk/domain/merchant_action.rb +43 -28
- data/lib/onlinepayments/sdk/domain/mobile_payment_data.rb +27 -20
- data/lib/onlinepayments/sdk/domain/mobile_payment_method_hosted_checkout_specific_input.rb +43 -26
- data/lib/onlinepayments/sdk/domain/mobile_payment_method_specific_input.rb +71 -50
- data/lib/onlinepayments/sdk/domain/mobile_payment_method_specific_output.rb +58 -45
- data/lib/onlinepayments/sdk/domain/mobile_payment_product302_specific_input.rb +32 -0
- data/lib/onlinepayments/sdk/domain/mobile_payment_product320_specific_input.rb +20 -18
- data/lib/onlinepayments/sdk/domain/mobile_three_d_secure_challenge_parameters.rb +51 -0
- data/lib/onlinepayments/sdk/domain/multiple_payment_information.rb +27 -20
- data/lib/onlinepayments/sdk/domain/omnichannel_payout_specific_input.rb +20 -16
- data/lib/onlinepayments/sdk/domain/operation_output.rb +67 -45
- data/lib/onlinepayments/sdk/domain/operation_payment_references.rb +30 -0
- data/lib/onlinepayments/sdk/domain/order.rb +75 -66
- data/lib/onlinepayments/sdk/domain/order_line_details.rb +79 -47
- data/lib/onlinepayments/sdk/domain/order_references.rb +34 -24
- data/lib/onlinepayments/sdk/domain/order_status_output.rb +52 -38
- data/lib/onlinepayments/sdk/domain/order_type_information.rb +27 -20
- data/lib/onlinepayments/sdk/domain/other_details.rb +37 -0
- data/lib/onlinepayments/sdk/domain/payment_account_on_file.rb +27 -20
- data/lib/onlinepayments/sdk/domain/payment_context.rb +34 -26
- data/lib/onlinepayments/sdk/domain/payment_creation_output.rb +41 -28
- data/lib/onlinepayments/sdk/domain/payment_details_response.rb +60 -49
- data/lib/onlinepayments/sdk/domain/payment_error_response.rb +37 -31
- data/lib/onlinepayments/sdk/domain/payment_link_event.rb +34 -24
- data/lib/onlinepayments/sdk/domain/payment_link_order_input.rb +34 -28
- data/lib/onlinepayments/sdk/domain/payment_link_order_output.rb +34 -28
- data/lib/onlinepayments/sdk/domain/payment_link_response.rb +74 -51
- data/lib/onlinepayments/sdk/domain/payment_link_specific_input.rb +36 -24
- data/lib/onlinepayments/sdk/domain/payment_output.rb +115 -94
- data/lib/onlinepayments/sdk/domain/payment_product.rb +117 -85
- data/lib/onlinepayments/sdk/domain/payment_product130_specific_input.rb +20 -18
- data/lib/onlinepayments/sdk/domain/payment_product130_specific_three_d_secure.rb +41 -28
- data/lib/onlinepayments/sdk/domain/payment_product3012.rb +27 -20
- data/lib/onlinepayments/sdk/domain/payment_product3012_specific_input.rb +51 -0
- data/lib/onlinepayments/sdk/domain/payment_product302_specific_data.rb +22 -20
- data/lib/onlinepayments/sdk/domain/payment_product3203_specific_output.rb +27 -24
- data/lib/onlinepayments/sdk/domain/payment_product3208_specific_input.rb +20 -16
- data/lib/onlinepayments/sdk/domain/payment_product3208_specific_output.rb +20 -16
- data/lib/onlinepayments/sdk/domain/payment_product3209_specific_input.rb +20 -16
- data/lib/onlinepayments/sdk/domain/payment_product3209_specific_output.rb +20 -16
- data/lib/onlinepayments/sdk/domain/payment_product320_specific_data.rb +29 -24
- data/lib/onlinepayments/sdk/domain/payment_product5001_specific_output.rb +48 -16
- data/lib/onlinepayments/sdk/domain/payment_product5100_specific_input.rb +20 -16
- data/lib/onlinepayments/sdk/domain/payment_product5402_specific_output.rb +20 -16
- data/lib/onlinepayments/sdk/domain/payment_product5404.rb +27 -20
- data/lib/onlinepayments/sdk/domain/payment_product5407.rb +27 -20
- data/lib/onlinepayments/sdk/domain/payment_product5500_specific_output.rb +41 -24
- data/lib/onlinepayments/sdk/domain/payment_product771_specific_output.rb +20 -16
- data/lib/onlinepayments/sdk/domain/payment_product840_customer_account.rb +72 -47
- data/lib/onlinepayments/sdk/domain/payment_product840_specific_output.rb +43 -38
- data/lib/onlinepayments/sdk/domain/payment_product_display_hints.rb +34 -24
- data/lib/onlinepayments/sdk/domain/payment_product_field.rb +41 -32
- data/lib/onlinepayments/sdk/domain/payment_product_field_data_restrictions.rb +27 -22
- data/lib/onlinepayments/sdk/domain/payment_product_field_display_element.rb +41 -28
- data/lib/onlinepayments/sdk/domain/payment_product_field_display_hints.rb +84 -56
- data/lib/onlinepayments/sdk/domain/payment_product_field_form_element.rb +30 -24
- data/lib/onlinepayments/sdk/domain/payment_product_field_tooltip.rb +28 -20
- data/lib/onlinepayments/sdk/domain/payment_product_field_validators.rb +83 -73
- data/lib/onlinepayments/sdk/domain/payment_product_filter.rb +32 -29
- data/lib/onlinepayments/sdk/domain/payment_product_filter_hosted_tokenization.rb +22 -20
- data/lib/onlinepayments/sdk/domain/payment_product_filters_hosted_checkout.rb +27 -24
- data/lib/onlinepayments/sdk/domain/payment_product_filters_hosted_tokenization.rb +27 -24
- data/lib/onlinepayments/sdk/domain/payment_product_group.rb +44 -37
- data/lib/onlinepayments/sdk/domain/payment_product_networks_response.rb +22 -20
- data/lib/onlinepayments/sdk/domain/payment_references.rb +27 -20
- data/lib/onlinepayments/sdk/domain/payment_response.rb +51 -41
- data/lib/onlinepayments/sdk/domain/payment_status_output.rb +66 -46
- data/lib/onlinepayments/sdk/domain/payout_error_response.rb +37 -31
- data/lib/onlinepayments/sdk/domain/payout_output.rb +27 -22
- data/lib/onlinepayments/sdk/domain/payout_response.rb +41 -32
- data/lib/onlinepayments/sdk/domain/payout_result.rb +41 -32
- data/lib/onlinepayments/sdk/domain/payout_status_output.rb +34 -24
- data/lib/onlinepayments/sdk/domain/personal_information.rb +34 -26
- data/lib/onlinepayments/sdk/domain/personal_information_token.rb +20 -18
- data/lib/onlinepayments/sdk/domain/personal_name.rb +34 -24
- data/lib/onlinepayments/sdk/domain/personal_name_token.rb +27 -20
- data/lib/onlinepayments/sdk/domain/product_directory.rb +22 -20
- data/lib/onlinepayments/sdk/domain/protection_eligibility.rb +27 -20
- data/lib/onlinepayments/sdk/domain/range_validator.rb +27 -20
- data/lib/onlinepayments/sdk/domain/rate_details.rb +51 -35
- data/lib/onlinepayments/sdk/domain/redirect_data.rb +27 -20
- data/lib/onlinepayments/sdk/domain/redirect_payment_method_specific_input.rb +139 -88
- data/lib/onlinepayments/sdk/domain/redirect_payment_method_specific_output.rb +95 -75
- data/lib/onlinepayments/sdk/domain/redirect_payment_product3203_specific_input.rb +20 -16
- data/lib/onlinepayments/sdk/domain/redirect_payment_product3302_specific_input.rb +44 -0
- data/lib/onlinepayments/sdk/domain/redirect_payment_product3306_specific_input.rb +20 -16
- data/lib/onlinepayments/sdk/domain/redirect_payment_product5001_specific_input.rb +20 -16
- data/lib/onlinepayments/sdk/domain/redirect_payment_product5300_specific_input.rb +74 -0
- data/lib/onlinepayments/sdk/domain/redirect_payment_product5406_specific_input.rb +20 -18
- data/lib/onlinepayments/sdk/domain/redirect_payment_product5408_specific_input.rb +27 -22
- data/lib/onlinepayments/sdk/domain/redirect_payment_product5410_specific_input.rb +32 -0
- data/lib/onlinepayments/sdk/domain/redirect_payment_product809_specific_input.rb +20 -16
- data/lib/onlinepayments/sdk/domain/redirect_payment_product840_specific_input.rb +41 -20
- data/lib/onlinepayments/sdk/domain/redirection_data.rb +20 -16
- data/lib/onlinepayments/sdk/domain/refund_card_method_specific_output.rb +34 -26
- data/lib/onlinepayments/sdk/domain/refund_e_wallet_method_specific_output.rb +34 -26
- data/lib/onlinepayments/sdk/domain/refund_error_response.rb +37 -31
- data/lib/onlinepayments/sdk/domain/refund_mobile_method_specific_output.rb +34 -24
- data/lib/onlinepayments/sdk/domain/refund_output.rb +89 -64
- data/lib/onlinepayments/sdk/domain/refund_payment_product840_customer_account.rb +34 -24
- data/lib/onlinepayments/sdk/domain/refund_payment_product840_specific_output.rb +20 -18
- data/lib/onlinepayments/sdk/domain/refund_redirect_method_specific_output.rb +27 -20
- data/lib/onlinepayments/sdk/domain/refund_request.rb +43 -24
- data/lib/onlinepayments/sdk/domain/refund_response.rb +41 -32
- data/lib/onlinepayments/sdk/domain/refunds_response.rb +22 -20
- data/lib/onlinepayments/sdk/domain/regular_expression_validator.rb +20 -16
- data/lib/onlinepayments/sdk/domain/send_test_request.rb +30 -0
- data/lib/onlinepayments/sdk/domain/sepa_direct_debit_payment_method_specific_input.rb +27 -22
- data/lib/onlinepayments/sdk/domain/sepa_direct_debit_payment_method_specific_input_base.rb +27 -22
- data/lib/onlinepayments/sdk/domain/sepa_direct_debit_payment_method_specific_output.rb +34 -28
- data/lib/onlinepayments/sdk/domain/sepa_direct_debit_payment_product771_specific_input.rb +27 -22
- data/lib/onlinepayments/sdk/domain/sepa_direct_debit_payment_product771_specific_input_base.rb +27 -22
- data/lib/onlinepayments/sdk/domain/session_request.rb +22 -20
- data/lib/onlinepayments/sdk/domain/session_response.rb +53 -39
- data/lib/onlinepayments/sdk/domain/shipping.rb +76 -52
- data/lib/onlinepayments/sdk/domain/shipping_method.rb +41 -28
- data/lib/onlinepayments/sdk/domain/shopping_cart.rb +62 -48
- data/lib/onlinepayments/sdk/domain/shopping_cart_extension.rb +51 -43
- data/lib/onlinepayments/sdk/domain/show_form_data.rb +35 -31
- data/lib/onlinepayments/sdk/domain/subsequent_card_payment_method_specific_input.rb +60 -39
- data/lib/onlinepayments/sdk/domain/subsequent_payment_product5001_specific_input.rb +20 -16
- data/lib/onlinepayments/sdk/domain/subsequent_payment_request.rb +35 -31
- data/lib/onlinepayments/sdk/domain/subsequent_payment_response.rb +20 -18
- data/lib/onlinepayments/sdk/domain/surcharge.rb +59 -48
- data/lib/onlinepayments/sdk/domain/surcharge_calculation_card.rb +27 -20
- data/lib/onlinepayments/sdk/domain/surcharge_for_payment_link.rb +20 -16
- data/lib/onlinepayments/sdk/domain/surcharge_rate.rb +41 -28
- data/lib/onlinepayments/sdk/domain/surcharge_specific_input.rb +27 -22
- data/lib/onlinepayments/sdk/domain/surcharge_specific_output.rb +34 -28
- data/lib/onlinepayments/sdk/domain/test_connection.rb +20 -16
- data/lib/onlinepayments/sdk/domain/three_d_secure.rb +98 -63
- data/lib/onlinepayments/sdk/domain/three_d_secure_base.rb +78 -52
- data/lib/onlinepayments/sdk/domain/three_d_secure_data.rb +34 -24
- data/lib/onlinepayments/sdk/domain/three_d_secure_results.rb +107 -67
- data/lib/onlinepayments/sdk/domain/token_card.rb +27 -22
- data/lib/onlinepayments/sdk/domain/token_card_data.rb +27 -18
- data/lib/onlinepayments/sdk/domain/token_card_specific_input.rb +20 -18
- data/lib/onlinepayments/sdk/domain/token_data.rb +27 -18
- data/lib/onlinepayments/sdk/domain/token_e_wallet.rb +28 -22
- data/lib/onlinepayments/sdk/domain/token_response.rb +58 -45
- data/lib/onlinepayments/sdk/domain/transaction.rb +20 -18
- data/lib/onlinepayments/sdk/domain/uploadable_file.rb +33 -0
- data/lib/onlinepayments/sdk/domain/validate_credentials_request.rb +37 -0
- data/lib/onlinepayments/sdk/domain/validate_credentials_response.rb +30 -0
- data/lib/onlinepayments/sdk/domain/value_mapping_element.rb +29 -24
- data/lib/onlinepayments/sdk/domain.rb +4 -0
- data/lib/onlinepayments/sdk/exception_factory.rb +76 -0
- data/lib/onlinepayments/sdk/factory.rb +163 -118
- data/lib/onlinepayments/sdk/idempotence_exception.rb +23 -19
- data/lib/onlinepayments/sdk/json/default_marshaller.rb +34 -0
- data/lib/onlinepayments/sdk/json/marshaller.rb +27 -0
- data/lib/onlinepayments/sdk/json/marshaller_syntax_exception.rb +9 -0
- data/lib/onlinepayments/sdk/json.rb +1 -0
- data/lib/onlinepayments/sdk/logging/communicator_logger.rb +18 -16
- data/lib/onlinepayments/sdk/logging/log_message_builder.rb +80 -47
- data/lib/onlinepayments/sdk/logging/logging_capable.rb +1 -1
- data/lib/onlinepayments/sdk/logging/obfuscation/body_obfuscator.rb +113 -0
- data/lib/onlinepayments/sdk/logging/obfuscation/header_obfuscator.rb +54 -0
- data/lib/onlinepayments/sdk/logging/obfuscation/obfuscation_capable.rb +21 -0
- data/lib/onlinepayments/sdk/logging/obfuscation/obfuscation_rule.rb +47 -0
- data/lib/onlinepayments/sdk/logging/obfuscation.rb +1 -0
- data/lib/onlinepayments/sdk/logging/request_log_message_builder.rb +40 -29
- data/lib/onlinepayments/sdk/logging/response_log_message_builder.rb +30 -23
- data/lib/onlinepayments/sdk/logging/ruby_communicator_logger.rb +49 -45
- data/lib/onlinepayments/sdk/logging/stdout_communicator_logger.rb +20 -23
- data/lib/onlinepayments/sdk/logging.rb +1 -10
- data/lib/onlinepayments/sdk/merchant/captures/captures_client.rb +57 -0
- data/lib/onlinepayments/sdk/merchant/captures.rb +4 -0
- data/lib/onlinepayments/sdk/merchant/complete/complete_client.rb +60 -0
- data/lib/onlinepayments/sdk/merchant/complete.rb +4 -0
- data/lib/onlinepayments/sdk/merchant/hostedcheckout/hosted_checkout_client.rb +72 -71
- data/lib/onlinepayments/sdk/merchant/hostedcheckout.rb +4 -0
- data/lib/onlinepayments/sdk/merchant/hostedtokenization/hosted_tokenization_client.rb +72 -71
- data/lib/onlinepayments/sdk/merchant/hostedtokenization.rb +4 -0
- data/lib/onlinepayments/sdk/merchant/mandates/mandates_client.rb +165 -164
- data/lib/onlinepayments/sdk/merchant/mandates.rb +4 -0
- data/lib/onlinepayments/sdk/merchant/merchant_client.rb +116 -64
- data/lib/onlinepayments/sdk/merchant/paymentlinks/payment_links_client.rb +102 -101
- data/lib/onlinepayments/sdk/merchant/paymentlinks.rb +4 -0
- data/lib/onlinepayments/sdk/merchant/payments/payments_client.rb +233 -332
- data/lib/onlinepayments/sdk/merchant/payments.rb +4 -0
- data/lib/onlinepayments/sdk/merchant/payouts/payouts_client.rb +73 -71
- data/lib/onlinepayments/sdk/merchant/payouts.rb +4 -0
- data/lib/onlinepayments/sdk/merchant/privacypolicy/get_privacy_policy_params.rb +32 -0
- data/lib/onlinepayments/sdk/merchant/privacypolicy/privacy_policy_client.rb +54 -0
- data/lib/onlinepayments/sdk/merchant/privacypolicy.rb +4 -0
- data/lib/onlinepayments/sdk/merchant/productgroups/get_product_group_params.rb +50 -47
- data/lib/onlinepayments/sdk/merchant/productgroups/get_product_groups_params.rb +50 -47
- data/lib/onlinepayments/sdk/merchant/productgroups/product_groups_client.rb +72 -72
- data/lib/onlinepayments/sdk/merchant/productgroups.rb +4 -0
- data/lib/onlinepayments/sdk/merchant/products/get_payment_product_networks_params.rb +27 -25
- data/lib/onlinepayments/sdk/merchant/products/get_payment_product_params.rb +50 -47
- data/lib/onlinepayments/sdk/merchant/products/get_payment_products_params.rb +50 -47
- data/lib/onlinepayments/sdk/merchant/products/get_product_directory_params.rb +21 -19
- data/lib/onlinepayments/sdk/merchant/products/products_client.rb +134 -136
- data/lib/onlinepayments/sdk/merchant/products.rb +4 -0
- data/lib/onlinepayments/sdk/merchant/refunds/refunds_client.rb +57 -0
- data/lib/onlinepayments/sdk/merchant/refunds.rb +4 -0
- data/lib/onlinepayments/sdk/merchant/services/services_client.rb +124 -155
- data/lib/onlinepayments/sdk/merchant/services.rb +4 -0
- data/lib/onlinepayments/sdk/merchant/sessions/sessions_client.rb +42 -41
- data/lib/onlinepayments/sdk/merchant/sessions.rb +4 -0
- data/lib/onlinepayments/sdk/merchant/tokens/tokens_client.rb +101 -100
- data/lib/onlinepayments/sdk/merchant/tokens.rb +4 -0
- data/lib/onlinepayments/sdk/merchant/webhooks/webhooks_client.rb +83 -0
- data/lib/onlinepayments/sdk/merchant/webhooks.rb +4 -0
- data/lib/onlinepayments/sdk/merchant.rb +4 -0
- data/lib/onlinepayments/sdk/platform_exception.rb +19 -0
- data/lib/onlinepayments/sdk/proxy_configuration.rb +60 -60
- data/lib/onlinepayments/sdk/reference_exception.rb +14 -9
- data/lib/onlinepayments/sdk/validation_exception.rb +14 -9
- data/lib/onlinepayments/sdk/webhooks/api_version_mismatch_exception.rb +17 -15
- data/lib/onlinepayments/sdk/webhooks/in_memory_secret_key_store.rb +46 -43
- data/lib/onlinepayments/sdk/webhooks/secret_key_not_available_exception.rb +16 -12
- data/lib/onlinepayments/sdk/webhooks/secret_key_store.rb +13 -11
- data/lib/onlinepayments/sdk/webhooks/signature_validation_exception.rb +15 -14
- data/lib/onlinepayments/sdk/webhooks/signature_validator.rb +81 -0
- data/lib/onlinepayments/sdk/webhooks/webhooks_event.rb +84 -53
- data/lib/onlinepayments/sdk/webhooks/webhooks_helper.rb +28 -90
- data/lib/onlinepayments/sdk/webhooks.rb +1 -11
- data/lib/onlinepayments/sdk.rb +4 -26
- data/onlinepayments-sdk-ruby.gemspec +3 -2
- metadata +89 -35
- data/lib/onlinepayments/sdk/authenticator.rb +0 -16
- data/lib/onlinepayments/sdk/communication_exception.rb +0 -16
- data/lib/onlinepayments/sdk/connection.rb +0 -41
- data/lib/onlinepayments/sdk/data_object.rb +0 -31
- data/lib/onlinepayments/sdk/defaultimpl/authorization_type.rb +0 -24
- data/lib/onlinepayments/sdk/defaultimpl/default_authenticator.rb +0 -108
- data/lib/onlinepayments/sdk/defaultimpl/default_connection.rb +0 -365
- data/lib/onlinepayments/sdk/defaultimpl/default_marshaller.rb +0 -32
- data/lib/onlinepayments/sdk/defaultimpl.rb +0 -6
- data/lib/onlinepayments/sdk/endpoint_configuration.rb +0 -127
- data/lib/onlinepayments/sdk/exceptions.rb +0 -8
- data/lib/onlinepayments/sdk/logging/logging_util.rb +0 -286
- data/lib/onlinepayments/sdk/marshaller.rb +0 -24
- data/lib/onlinepayments/sdk/marshaller_syntax_exception.rb +0 -6
- data/lib/onlinepayments/sdk/merchant/services/get_privacy_policy_params.rb +0 -30
- data/lib/onlinepayments/sdk/meta_data_provider.rb +0 -150
- data/lib/onlinepayments/sdk/modules.rb +0 -62
- data/lib/onlinepayments/sdk/multipart_form_data_object.rb +0 -44
- data/lib/onlinepayments/sdk/multipart_form_data_request.rb +0 -9
- data/lib/onlinepayments/sdk/not_found_exception.rb +0 -16
- data/lib/onlinepayments/sdk/param_request.rb +0 -11
- data/lib/onlinepayments/sdk/payment_platform_exception.rb +0 -15
- data/lib/onlinepayments/sdk/pooled_connection.rb +0 -21
- data/lib/onlinepayments/sdk/request_header.rb +0 -50
- data/lib/onlinepayments/sdk/request_param.rb +0 -23
- data/lib/onlinepayments/sdk/response_exception.rb +0 -47
- data/lib/onlinepayments/sdk/response_header.rb +0 -42
- data/lib/onlinepayments/sdk/uploadable_file.rb +0 -30
- data/lib/onlinepayments/sdk/webhooks/webhooks.rb +0 -22
- data/lib/onlinepayments/sdk/webhooks/webhooks_helper_builder.rb +0 -25
@@ -1,286 +0,0 @@
|
|
1
|
-
module OnlinePayments::SDK
|
2
|
-
module Logging
|
3
|
-
|
4
|
-
# Class responsible for obfuscating sensitive data in a message body.
|
5
|
-
class ValueObfuscator
|
6
|
-
|
7
|
-
class << self
|
8
|
-
|
9
|
-
alias_method :private_new, :new
|
10
|
-
|
11
|
-
protected :private_new, :new
|
12
|
-
end
|
13
|
-
|
14
|
-
public
|
15
|
-
|
16
|
-
def self.INSTANCE
|
17
|
-
# use lazy instantiation
|
18
|
-
@@INSTANCE ||= ValueObfuscator.new
|
19
|
-
end
|
20
|
-
|
21
|
-
# Obfuscates the parameter value.
|
22
|
-
def obfuscate_value(value)
|
23
|
-
(value.nil? or value.empty?) ? value : "*#{value.length}"
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
# end of ValueObfuscator
|
28
|
-
|
29
|
-
# Class responsible for obfuscating sensitive data.
|
30
|
-
class SensitiveValueObfuscator
|
31
|
-
|
32
|
-
class << self
|
33
|
-
|
34
|
-
alias_method :private_new, :new
|
35
|
-
|
36
|
-
protected :private_new, :new
|
37
|
-
end
|
38
|
-
|
39
|
-
public
|
40
|
-
|
41
|
-
def self.INSTANCE
|
42
|
-
# use lazy instantiation
|
43
|
-
@@INSTANCE ||= SensitiveValueObfuscator.new
|
44
|
-
end
|
45
|
-
|
46
|
-
# @return an arbitrary number of '*', or null/empty if the value is null/empty.
|
47
|
-
def obfuscate_value(value)
|
48
|
-
value.nil? or value.empty? ? value : "***"
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
# end of SensitiveValueObfuscator
|
53
|
-
|
54
|
-
class Obfuscator
|
55
|
-
def initialize(obfuscators, case_insensitive)
|
56
|
-
raise ArgumentError unless obfuscators.is_a? Hash
|
57
|
-
@obfuscators = copy(obfuscators, case_insensitive)
|
58
|
-
end
|
59
|
-
|
60
|
-
private
|
61
|
-
|
62
|
-
# case insensitive hash
|
63
|
-
# @private
|
64
|
-
class HashClod < Hash
|
65
|
-
|
66
|
-
def initialize(other)
|
67
|
-
other.each { |k, v| self.[]=(k, v) }
|
68
|
-
end
|
69
|
-
|
70
|
-
def [](key)
|
71
|
-
super _insensitive(key)
|
72
|
-
end
|
73
|
-
|
74
|
-
def []=(key, value)
|
75
|
-
super _insensitive(key), value
|
76
|
-
end
|
77
|
-
|
78
|
-
protected
|
79
|
-
|
80
|
-
def _insensitive(key)
|
81
|
-
key.respond_to?(:upcase) ? key.upcase : key
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
# end of HashClod
|
86
|
-
|
87
|
-
def copy(obfuscators, case_insensitive)
|
88
|
-
cp = case_insensitive ? HashClod.new(obfuscators) : obfuscators
|
89
|
-
Marshal.load(Marshal.dump(cp)) # deep copy
|
90
|
-
end
|
91
|
-
|
92
|
-
public
|
93
|
-
|
94
|
-
def obfuscate_value(key, value)
|
95
|
-
obfuscator = @obfuscators[key]
|
96
|
-
if obfuscator.nil?
|
97
|
-
value
|
98
|
-
else
|
99
|
-
obfuscator.obfuscate_value(value)
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
|
-
# A convenient wrapper to build obfuscators
|
104
|
-
class Builder
|
105
|
-
attr_accessor :obfuscators
|
106
|
-
|
107
|
-
def initialize
|
108
|
-
raise NotImplementedError, "#{self.class.name} is not implemented."
|
109
|
-
end
|
110
|
-
|
111
|
-
def with_field(key)
|
112
|
-
@obfuscators[key] = ValueObfuscator.INSTANCE
|
113
|
-
self
|
114
|
-
end
|
115
|
-
|
116
|
-
def with_sensitive_field(key)
|
117
|
-
@obfuscators[key] = SensitiveValueObfuscator.INSTANCE
|
118
|
-
self
|
119
|
-
end
|
120
|
-
|
121
|
-
def build
|
122
|
-
raise NotImplementedError, "#{self.class.name}#build() is not implemented."
|
123
|
-
end
|
124
|
-
end
|
125
|
-
|
126
|
-
# Builder
|
127
|
-
end
|
128
|
-
|
129
|
-
# Obfuscator
|
130
|
-
|
131
|
-
# Class that obfuscates headers of a message
|
132
|
-
class HeaderObfuscator < Obfuscator
|
133
|
-
def initialize(obfuscators)
|
134
|
-
# case insensitive
|
135
|
-
super(obfuscators, true)
|
136
|
-
end
|
137
|
-
|
138
|
-
def self.builder
|
139
|
-
Builder.new
|
140
|
-
end
|
141
|
-
|
142
|
-
class Builder < Obfuscator::Builder
|
143
|
-
def initialize
|
144
|
-
@obfuscators = {}
|
145
|
-
end
|
146
|
-
|
147
|
-
def with_field(name)
|
148
|
-
raise ArgumentError unless name.is_a? String
|
149
|
-
super(name)
|
150
|
-
end
|
151
|
-
|
152
|
-
def with_sensitive_field(name)
|
153
|
-
raise ArgumentError unless name.is_a? String
|
154
|
-
super(name)
|
155
|
-
end
|
156
|
-
|
157
|
-
def build
|
158
|
-
HeaderObfuscator.new(obfuscators)
|
159
|
-
end
|
160
|
-
end
|
161
|
-
end
|
162
|
-
|
163
|
-
# end of HeadObfuscator
|
164
|
-
|
165
|
-
# Class that obfuscates properties in the JSON body of a message
|
166
|
-
class PropertyObfuscator < Obfuscator
|
167
|
-
def initialize(obfuscators)
|
168
|
-
# case sensitive
|
169
|
-
super(obfuscators, false)
|
170
|
-
@property_pattern = build_property_pattern(obfuscators.keys)
|
171
|
-
end
|
172
|
-
|
173
|
-
private
|
174
|
-
|
175
|
-
def build_property_pattern(pn)
|
176
|
-
return /$^/ if pn.empty? # no possible match
|
177
|
-
# Regex to create:
|
178
|
-
# (["'])(X|Y|Z)\1\s*:\s*(?:(["'])(.*?)(?<!\\)\3|([^"'\s\[\{]\S*))
|
179
|
-
# Groups:
|
180
|
-
# 1: opening " or ' for the property name
|
181
|
-
# 2: property name
|
182
|
-
# 3: opening " or ' for the value
|
183
|
-
# 4: quoted value
|
184
|
-
# 5: non-quoted-value
|
185
|
-
# The negative lookbehind is to allow escaped quotes to be part of
|
186
|
-
# the value. What this does not allow currently is having values end
|
187
|
-
# with a \ (which would be escaped to \\).
|
188
|
-
regex = pn.inject("([\"'])(") { |r, p| "#{r}#{Regexp.quote(p)}|" }.chop <<
|
189
|
-
")\\1\\s*:\\s*(?:([\"'])(.*?)(?<!\\\\)\\3|([^\"'\\s\\[\\{]((?!,)\\S)*))"
|
190
|
-
/#{regex}/m # dotall mode
|
191
|
-
end
|
192
|
-
|
193
|
-
public
|
194
|
-
|
195
|
-
def obfuscate(body)
|
196
|
-
return nil if body.nil?
|
197
|
-
return "" if body.empty?
|
198
|
-
|
199
|
-
body.gsub(@property_pattern) do
|
200
|
-
m = Regexp.last_match
|
201
|
-
property_name = m[2]
|
202
|
-
value = m[4] || m[5]
|
203
|
-
# copy value 'cause it's part of m[0]
|
204
|
-
m[0].sub(value, obfuscate_value(property_name, value.dup))
|
205
|
-
end
|
206
|
-
end
|
207
|
-
|
208
|
-
def self.builder
|
209
|
-
Builder.new
|
210
|
-
end
|
211
|
-
|
212
|
-
class Builder < Obfuscator::Builder
|
213
|
-
def initialize
|
214
|
-
@obfuscators = {}
|
215
|
-
end
|
216
|
-
|
217
|
-
def with_field(property)
|
218
|
-
raise ArgumentError unless property.is_a? String
|
219
|
-
super(property)
|
220
|
-
end
|
221
|
-
|
222
|
-
def with_sensitive_field(property)
|
223
|
-
raise ArgumentError unless property.is_a? String
|
224
|
-
super(property)
|
225
|
-
end
|
226
|
-
|
227
|
-
def build
|
228
|
-
PropertyObfuscator.new(obfuscators)
|
229
|
-
end
|
230
|
-
end
|
231
|
-
end
|
232
|
-
|
233
|
-
# end of property obfuscator
|
234
|
-
|
235
|
-
module LoggingUtil
|
236
|
-
@@PROPERTY_OBFUSCATOR = PropertyObfuscator.builder
|
237
|
-
.with_field("cardNumber")
|
238
|
-
.with_field("expiryDate")
|
239
|
-
.with_field("cvv")
|
240
|
-
.with_field("iban")
|
241
|
-
.with_field("accountNumber")
|
242
|
-
.with_field("reformattedAccountNumber")
|
243
|
-
.with_field("additionalInfo")
|
244
|
-
.with_field("cardholderName")
|
245
|
-
.with_field("dateOfBirth")
|
246
|
-
.with_field("emailAddress")
|
247
|
-
.with_field("faxNumber")
|
248
|
-
.with_field("firstName")
|
249
|
-
.with_field("houseNumber")
|
250
|
-
.with_field("mobilePhoneNumber")
|
251
|
-
.with_field("passengerName")
|
252
|
-
.with_field("phoneNumber")
|
253
|
-
.with_field("street")
|
254
|
-
.with_field("surname")
|
255
|
-
.with_field("workPhoneNumber")
|
256
|
-
.with_field("zip")
|
257
|
-
.with_field("bin")
|
258
|
-
.with_field("value")
|
259
|
-
.with_sensitive_field("keyId")
|
260
|
-
.with_sensitive_field("secretKey")
|
261
|
-
.with_sensitive_field("publicKey")
|
262
|
-
.with_sensitive_field("userAuthenticationToken")
|
263
|
-
.with_sensitive_field("encryptedPayload")
|
264
|
-
.with_sensitive_field("decryptedPayload")
|
265
|
-
.with_sensitive_field("encryptedCustomerInput")
|
266
|
-
.build
|
267
|
-
|
268
|
-
@@HEADER_OBFUSCATOR = HeaderObfuscator.builder
|
269
|
-
.with_sensitive_field("Authorization")
|
270
|
-
.with_sensitive_field("WWW-Authenticate")
|
271
|
-
.with_sensitive_field("Proxy-Authenticate")
|
272
|
-
.with_sensitive_field("Proxy-Authorization")
|
273
|
-
.with_sensitive_field("X-GCS-Authentication-Token")
|
274
|
-
.with_sensitive_field("X-GCS-CallerPassword")
|
275
|
-
.build
|
276
|
-
|
277
|
-
def self.obfuscate_body(body)
|
278
|
-
@@PROPERTY_OBFUSCATOR.obfuscate(body)
|
279
|
-
end
|
280
|
-
|
281
|
-
def self.obfuscate_header(name, value)
|
282
|
-
@@HEADER_OBFUSCATOR.obfuscate_value(name, value)
|
283
|
-
end
|
284
|
-
end # end of LoggingUtil
|
285
|
-
end
|
286
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
module OnlinePayments::SDK
|
2
|
-
|
3
|
-
# Class responsible for marshalling and unmarshalling objects to and from JSON
|
4
|
-
class Marshaller
|
5
|
-
|
6
|
-
# Marshals _request_object_ to JSON format by calling #to_h on it.
|
7
|
-
#
|
8
|
-
# @param request_object [OnlinePayments::SDK::DataObject] the object to format
|
9
|
-
# @return [String] _request_object_ converted to JSON
|
10
|
-
def marshal(request_object)
|
11
|
-
raise NotImplementedError
|
12
|
-
end
|
13
|
-
|
14
|
-
# Unmarshals a JSON string into an object of type _type_.
|
15
|
-
# The new object is initialized by calling .new_from_hash with contents of the JSON as a Hash object.
|
16
|
-
#
|
17
|
-
# @param response_json [String] The JSON to unmarshal
|
18
|
-
# @param type [Type] The class of the object that will be instantiated using _type.new_from_hash_
|
19
|
-
# @return The JSON unmarshalled to the given type
|
20
|
-
def unmarshal(response_json, type)
|
21
|
-
raise NotImplementedError
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
@@ -1,30 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# This class was auto-generated.
|
3
|
-
#
|
4
|
-
require 'onlinepayments/sdk/param_request'
|
5
|
-
require 'onlinepayments/sdk/request_param'
|
6
|
-
|
7
|
-
module OnlinePayments::SDK
|
8
|
-
module Merchant
|
9
|
-
module Services
|
10
|
-
|
11
|
-
# Query parameters for 'Get Privacy Policy'.
|
12
|
-
# @attr [String] locale
|
13
|
-
# @attr [Integer] payment_product_id
|
14
|
-
class GetPrivacyPolicyParams < OnlinePayments::SDK::ParamRequest
|
15
|
-
|
16
|
-
attr_accessor :locale
|
17
|
-
|
18
|
-
attr_accessor :payment_product_id
|
19
|
-
|
20
|
-
# @return [Array<OnlinePayments::SDK::RequestParam>] representing the attributes of this class
|
21
|
-
def to_request_parameters
|
22
|
-
result = []
|
23
|
-
result << RequestParam.new('locale', @locale) unless @locale.nil?
|
24
|
-
result << RequestParam.new('paymentProductId', @payment_product_id.to_s) unless @payment_product_id.nil?
|
25
|
-
result
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
@@ -1,150 +0,0 @@
|
|
1
|
-
require 'onlinepayments/sdk/domain/shopping_cart_extension'
|
2
|
-
require 'base64'
|
3
|
-
|
4
|
-
module OnlinePayments::SDK
|
5
|
-
|
6
|
-
# Manages metadata about the server using the SDK
|
7
|
-
#
|
8
|
-
# @attr_reader [Array<OnlinePayments::SDK::RequestHeader>] meta_data_headers List of headers that should be used in all requests.
|
9
|
-
class MetaDataProvider
|
10
|
-
SDK_VERSION = '0.0.1'.freeze
|
11
|
-
SERVER_META_INFO_HEADER = 'X-GCS-ServerMetaInfo'.freeze
|
12
|
-
PROHIBITED_HEADERS = [SERVER_META_INFO_HEADER,
|
13
|
-
'X-GCS-Idempotence-Key', 'Date', 'Content-Type', 'Authorization'].sort!.freeze
|
14
|
-
CHARSET = 'utf-8'.freeze
|
15
|
-
|
16
|
-
# Stores metadata about the server so it can be sent to the Online Payments platform
|
17
|
-
class ServerMetaInfo < DataObject
|
18
|
-
@platform_identifier = nil
|
19
|
-
@sdk_identifier = nil
|
20
|
-
@sdk_creator = nil
|
21
|
-
@integrator = nil
|
22
|
-
@shopping_cart_extension = nil
|
23
|
-
|
24
|
-
# String containing system information (Operating system and Ruby version).
|
25
|
-
attr_accessor :platform_identifier
|
26
|
-
|
27
|
-
# String containing this SDK version.
|
28
|
-
attr_accessor :sdk_identifier
|
29
|
-
|
30
|
-
attr_accessor :sdk_creator
|
31
|
-
|
32
|
-
attr_accessor :integrator
|
33
|
-
|
34
|
-
attr_accessor :shopping_cart_extension
|
35
|
-
|
36
|
-
# Returns the values of all attributes as a hash.
|
37
|
-
def to_h
|
38
|
-
hash = super
|
39
|
-
hash['platformIdentifier'] = @platform_identifier if @platform_identifier
|
40
|
-
hash['sdkIdentifier'] = @sdk_identifier if @sdk_identifier
|
41
|
-
hash['sdkCreator'] = @sdk_creator if @sdk_creator
|
42
|
-
hash['integrator'] = @integrator if @integrator
|
43
|
-
hash['shoppingCartExtension'] = @shopping_cart_extension.to_h if @shopping_cart_extension
|
44
|
-
hash
|
45
|
-
end
|
46
|
-
|
47
|
-
# Initializes the ServerMetaInfo object with properties stored in the parameter hash
|
48
|
-
def from_hash(hash)
|
49
|
-
super
|
50
|
-
@platform_identifier = hash['platformIdentifier'] if hash.has_key? 'platformIdentifier'
|
51
|
-
@sdk_identifier = hash['sdkIdentifier'] if hash.has_key? 'sdkIdentifier'
|
52
|
-
@sdk_creator = hash['sdkCreator'] if hash.has_key? 'sdkCreator'
|
53
|
-
@integrator = hash['integrator'] if hash.has_key? 'integrator'
|
54
|
-
@shopping_cart_extension = Domain::ShoppingCartExtension.new_from_hash(hash['shoppingCartExtension']) if hash.has_key? 'shoppingCartExtension'
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
# Create a new MetaDataProvider instance that can be used to access platform-related information
|
59
|
-
#
|
60
|
-
# @param integrator [String] Name of the integrator
|
61
|
-
# @param shopping_cart_extension [OnlinePayments::SDK::Domain::ShoppingCartExtension] shopping cart-related metadata.
|
62
|
-
# @param additional_request_headers [Array<OnlinePayments::SDK::RequestHeader>] list of additional headers to include in all requests made.
|
63
|
-
# The following headers are not allowed due to conflicts with already added headers:
|
64
|
-
# 'X-GCS-Idempotence-Key', 'Date', 'Content-Type', 'Authorization' and 'X-GCS-ServerMetaInfo'
|
65
|
-
def initialize(integrator, shopping_cart_extension: nil, additional_request_headers: [].freeze)
|
66
|
-
|
67
|
-
MetaDataProvider.validate_additional_request_headers(additional_request_headers)
|
68
|
-
server_meta_info = ServerMetaInfo.new
|
69
|
-
server_meta_info.platform_identifier = get_platform_identifier
|
70
|
-
server_meta_info.sdk_identifier = get_sdk_identifier
|
71
|
-
server_meta_info.sdk_creator = 'OnlinePayments'
|
72
|
-
server_meta_info.integrator = integrator
|
73
|
-
server_meta_info.shopping_cart_extension = shopping_cart_extension if shopping_cart_extension
|
74
|
-
server_meta_info_string = DefaultImpl::DefaultMarshaller.INSTANCE.marshal(server_meta_info)
|
75
|
-
server_meta_info_header = RequestHeader.new(
|
76
|
-
SERVER_META_INFO_HEADER,
|
77
|
-
Base64.strict_encode64(server_meta_info_string.force_encoding('iso-8859-1').encode(CHARSET)))
|
78
|
-
if additional_request_headers.nil? || additional_request_headers.empty?
|
79
|
-
@meta_data_headers = [server_meta_info_header].freeze
|
80
|
-
else
|
81
|
-
request_headers = [server_meta_info_header]
|
82
|
-
request_headers += additional_request_headers
|
83
|
-
@meta_data_headers = request_headers.freeze
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
# Checks that none of the {OnlinePayments::SDK::RequestHeaders} in _additional_request_headers_ is equal to any of the forbidden headers.
|
88
|
-
# The forbidden headers are:
|
89
|
-
#'X-GCS-Idempotence-Key', 'Date', 'Content-Type', 'Authorization' and 'X-GCS-ServerMetaInfo'
|
90
|
-
# If a header is found that is equal to one of the forbidden headers an ArgumentError is raised.
|
91
|
-
def self.validate_additional_request_headers(additional_request_headers)
|
92
|
-
if additional_request_headers
|
93
|
-
additional_request_headers.each { |additional_request_header|
|
94
|
-
validate_additional_request_header(additional_request_header)
|
95
|
-
}
|
96
|
-
end
|
97
|
-
end
|
98
|
-
|
99
|
-
# Checks that the {OnlinePayments::SDK::RequestHeaders} _additional_request_header_ is equal to any of the forbidden headers.
|
100
|
-
# The forbidden headers are:
|
101
|
-
#'X-GCS-Idempotence-Key', 'Date', 'Content-Type', 'Authorization' and 'X-GCS-ServerMetaInfo'
|
102
|
-
# If the header is equal to one of the forbidden headers an ArgumentError is raised.
|
103
|
-
def self.validate_additional_request_header(additional_request_header)
|
104
|
-
if MetaDataProvider.PROHIBITED_HEADERS.include? additional_request_header.name
|
105
|
-
raise ArgumentError, "request header '#{additional_request_header.name}' not allowed"
|
106
|
-
end
|
107
|
-
end
|
108
|
-
|
109
|
-
protected
|
110
|
-
|
111
|
-
# String containing information of the system using the SDK.
|
112
|
-
# It contains data like Operating System version and Ruby version
|
113
|
-
def get_platform_identifier
|
114
|
-
os_host = RbConfig::CONFIG['host_os']
|
115
|
-
if os_host.include? 'mingw'
|
116
|
-
s = 'Windows'
|
117
|
-
elsif os_host.include? 'linux'
|
118
|
-
s = 'Linux'
|
119
|
-
else
|
120
|
-
s = 'Mac OS X'
|
121
|
-
end
|
122
|
-
"#{s}/#{RUBY_DESCRIPTION}"
|
123
|
-
end
|
124
|
-
|
125
|
-
# String describing the version of the SDK being used
|
126
|
-
def get_sdk_identifier
|
127
|
-
"RubyServerSDK/v#{SDK_VERSION}"
|
128
|
-
end
|
129
|
-
|
130
|
-
public
|
131
|
-
|
132
|
-
# Version of this SDK being used
|
133
|
-
def self.SDK_VERSION
|
134
|
-
SDK_VERSION
|
135
|
-
end
|
136
|
-
|
137
|
-
# A {OnlinePayments::SDK::RequestHeader} that contains serialized and encoded {OnlinePayments::SDK::MetaDataProvider::ServerMetaInfo}.
|
138
|
-
def self.SERVER_META_INFO_HEADER
|
139
|
-
SERVER_META_INFO_HEADER
|
140
|
-
end
|
141
|
-
|
142
|
-
# A list of header names that should not be used by any added headers.
|
143
|
-
# These headers are reserved for specific purposes.
|
144
|
-
def self.PROHIBITED_HEADERS
|
145
|
-
PROHIBITED_HEADERS
|
146
|
-
end
|
147
|
-
|
148
|
-
attr_reader :meta_data_headers
|
149
|
-
end
|
150
|
-
end
|
@@ -1,62 +0,0 @@
|
|
1
|
-
# Main module of this SDK. All non-data classes that are used at multiple places in the SDK are placed in this module.
|
2
|
-
module OnlinePayments::SDK
|
3
|
-
end
|
4
|
-
|
5
|
-
# Contains provided implementations for abstract functionality in this SDK.
|
6
|
-
# These implementations can be replaced or adapted if desired to suit specific needs.
|
7
|
-
module OnlinePayments::SDK::DefaultImpl
|
8
|
-
end
|
9
|
-
|
10
|
-
# Container for all data-containing modules.
|
11
|
-
# The data-classes contained within can be serialized and communicated with the Online Payments platform.
|
12
|
-
# These classes generally contain data used in processing requests or responses.
|
13
|
-
module OnlinePayments::SDK::Domain
|
14
|
-
end
|
15
|
-
|
16
|
-
# Contains all logging-related classes.
|
17
|
-
module OnlinePayments::SDK::Logging
|
18
|
-
end
|
19
|
-
|
20
|
-
# Contains interfaces to all Online Payments services. These services are accessed through a *OnlinePayments::SDK::Client* instance.
|
21
|
-
module OnlinePayments::SDK::Merchant
|
22
|
-
end
|
23
|
-
|
24
|
-
# Contains the client used to access the Hosted Checkout service.
|
25
|
-
module OnlinePayments::SDK::Merchant::HostedCheckout
|
26
|
-
end
|
27
|
-
|
28
|
-
# Contains the client used to access the Hosted Tokenization service.
|
29
|
-
module OnlinePayments::SDK::Merchant::HostedTokenization
|
30
|
-
end
|
31
|
-
|
32
|
-
# Contains the client used to access the Payment service.
|
33
|
-
module OnlinePayments::SDK::Merchant::Payments
|
34
|
-
end
|
35
|
-
|
36
|
-
# Contains the client used to access the Payout service.
|
37
|
-
module OnlinePayments::SDK::Merchant::Payouts
|
38
|
-
end
|
39
|
-
|
40
|
-
# Contains the client used to access the Product Groups service.
|
41
|
-
module OnlinePayments::SDK::Merchant::ProductGroups
|
42
|
-
end
|
43
|
-
|
44
|
-
# Contains the client used to access the Products service.
|
45
|
-
module OnlinePayments::SDK::Merchant::Products
|
46
|
-
end
|
47
|
-
|
48
|
-
# Contains the client to access miscellaneous services.
|
49
|
-
module OnlinePayments::SDK::Merchant::Services
|
50
|
-
end
|
51
|
-
|
52
|
-
# Contains the client used to access the Sessions service.
|
53
|
-
module OnlinePayments::SDK::Merchant::Sessions
|
54
|
-
end
|
55
|
-
|
56
|
-
# Contains the client used to access the Tokens service.
|
57
|
-
module OnlinePayments::SDK::Merchant::Tokens
|
58
|
-
end
|
59
|
-
|
60
|
-
# Contains data classes related to Webhooks functionality.
|
61
|
-
module OnlinePayments::SDK::Webhooks
|
62
|
-
end
|
@@ -1,44 +0,0 @@
|
|
1
|
-
require 'securerandom'
|
2
|
-
|
3
|
-
module OnlinePayments::SDK
|
4
|
-
|
5
|
-
# A representation of a multipart/form-data object
|
6
|
-
class MultipartFormDataObject
|
7
|
-
def initialize
|
8
|
-
@boundary = SecureRandom.uuid
|
9
|
-
@content_type = 'multipart/form-data; boundary=' + @boundary
|
10
|
-
@values = {}
|
11
|
-
@files = {}
|
12
|
-
end
|
13
|
-
|
14
|
-
attr_reader :boundary
|
15
|
-
attr_reader :content_type
|
16
|
-
attr_reader :values
|
17
|
-
attr_reader :files
|
18
|
-
|
19
|
-
def add_value(parameter_name, value)
|
20
|
-
if parameter_name.nil? || parameter_name.strip.empty?
|
21
|
-
raise ArgumentError, 'parameter_name is required'
|
22
|
-
end
|
23
|
-
raise ArgumentError, 'value is required' if value.nil?
|
24
|
-
if @values.include?(parameter_name) || @files.include?(parameter_name)
|
25
|
-
raise ArgumentError, 'duplicate parameterName: ' + parameter_name
|
26
|
-
end
|
27
|
-
|
28
|
-
@values[parameter_name] = value
|
29
|
-
end
|
30
|
-
|
31
|
-
# Adds a file to the multipart Form Data Object
|
32
|
-
def add_file(parameter_name, uploadable_file)
|
33
|
-
if parameter_name.nil? || parameter_name.strip.empty?
|
34
|
-
raise ArgumentError, 'parameter_name is required'
|
35
|
-
end
|
36
|
-
raise ArgumentError, 'uploadable_file is required' if uploadable_file.nil?
|
37
|
-
if @values.include?(parameter_name) || @files.include?(parameter_name)
|
38
|
-
raise ArgumentError, 'duplicate parameterName: ' + parameter_name
|
39
|
-
end
|
40
|
-
|
41
|
-
@files[parameter_name] = uploadable_file
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
module OnlinePayments::SDK
|
2
|
-
|
3
|
-
# Raised when a resource is not found on the Online Payments platform.
|
4
|
-
# This error corresponds to a 404 HTTP response.
|
5
|
-
#
|
6
|
-
# @attr [Exception] cause The error that is the cause of this error.
|
7
|
-
class NotFoundException < RuntimeError
|
8
|
-
|
9
|
-
def initialize(cause, message = nil)
|
10
|
-
super(message)
|
11
|
-
@cause = cause
|
12
|
-
end
|
13
|
-
|
14
|
-
attr_accessor :cause
|
15
|
-
end
|
16
|
-
end
|
@@ -1,11 +0,0 @@
|
|
1
|
-
module OnlinePayments::SDK
|
2
|
-
|
3
|
-
# Class that represents the URL request parameters.
|
4
|
-
# Contains a method to add a name and value pair to a parameter array as a {OnlinePayments::SDK::RequestParam}.
|
5
|
-
class ParamRequest
|
6
|
-
# @return [Array<OnlinePayments::SDK::RequestParam>]
|
7
|
-
def to_request_parameters
|
8
|
-
raise NotImplementedError
|
9
|
-
end
|
10
|
-
end
|
11
|
-
end
|
@@ -1,15 +0,0 @@
|
|
1
|
-
module OnlinePayments::SDK
|
2
|
-
|
3
|
-
# This exception is thrown when a response from the payment platform indicates that an error occurred
|
4
|
-
# on the payment platform while processing the request.
|
5
|
-
# This corresponds to a HTTP status code of 500 or 502.
|
6
|
-
class PaymentPlatformException < ApiException
|
7
|
-
|
8
|
-
# Create a new PaymentPlatformException
|
9
|
-
# @see ApiException#initialize
|
10
|
-
def initialize(status_code, response_body, error_id, errors,
|
11
|
-
message = 'the Online Payments platform returned an error response')
|
12
|
-
super(status_code, response_body, error_id, errors, message)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
module OnlinePayments::SDK
|
2
|
-
|
3
|
-
# {OnlinePayments::SDK::Connection} that supports connection pooling. This is used to more efficiently communicate using HTTP.
|
4
|
-
# Connection pooling means that a number of connections are kept alive after use so they can possibly be reused.
|
5
|
-
# If the Connection does not do so automatically,
|
6
|
-
# the methods _close_idle_connections_ and _close_expired_connections_ can be used to drop connections
|
7
|
-
# that are idle for a specified amount of time or that have expired.
|
8
|
-
# @see OnlinePayments::SDK::DefaultImpl::DefaultConnection
|
9
|
-
class PooledConnection < Connection
|
10
|
-
|
11
|
-
# Closes all connections that have not been used for _idle_time_ seconds.
|
12
|
-
def close_idle_connections(idle_time)
|
13
|
-
raise NotImplementedError
|
14
|
-
end
|
15
|
-
|
16
|
-
# Closes all connections that have expired.
|
17
|
-
def close_expired_connections
|
18
|
-
raise NotImplementedError
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|