onlinepayments-sdk-ruby 4.23.0 → 5.1.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 +142 -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 +127 -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 +42 -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 +54 -30
- 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 +81 -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/reattempt_instructions.rb +46 -0
- data/lib/onlinepayments/sdk/domain/reattempt_instructions_conditions.rb +37 -0
- data/lib/onlinepayments/sdk/domain/redirect_data.rb +27 -20
- data/lib/onlinepayments/sdk/domain/redirect_payment_method_specific_input.rb +166 -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_product3204_specific_input.rb +30 -0
- 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 +27 -16
- data/lib/onlinepayments/sdk/domain/redirect_payment_product5300_specific_input.rb +72 -0
- data/lib/onlinepayments/sdk/domain/redirect_payment_product5402_specific_input.rb +30 -0
- data/lib/onlinepayments/sdk/domain/redirect_payment_product5403_specific_input.rb +30 -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/show_instructions_data.rb +30 -0
- 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 +95 -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
@@ -0,0 +1,113 @@
|
|
1
|
+
require 'onlinepayments/sdk/logging/obfuscation/obfuscation_rule'
|
2
|
+
|
3
|
+
module OnlinePayments
|
4
|
+
module SDK
|
5
|
+
module Logging
|
6
|
+
module Obfuscation
|
7
|
+
# A class that can be used to obfuscate properties in JSON bodies.
|
8
|
+
class BodyObfuscator
|
9
|
+
|
10
|
+
# Creates a new body obfuscator.
|
11
|
+
# This will contain some pre-defined obfuscation rules, as well as any provided custom rules
|
12
|
+
#
|
13
|
+
# @param additional_rules [Hash] An optional hash where the keys are property names and the values are
|
14
|
+
# functions that obfuscate a single value
|
15
|
+
def initialize(additional_rules = nil)
|
16
|
+
@obfuscation_rules = {
|
17
|
+
"additionalInfo" => Obfuscation.obfuscate_all,
|
18
|
+
"cardholderName" => Obfuscation.obfuscate_all,
|
19
|
+
"dateOfBirth" => Obfuscation.obfuscate_all,
|
20
|
+
"emailAddress" => Obfuscation.obfuscate_all,
|
21
|
+
"faxNumber" => Obfuscation.obfuscate_all,
|
22
|
+
"firstName" => Obfuscation.obfuscate_all,
|
23
|
+
"houseNumber" => Obfuscation.obfuscate_all,
|
24
|
+
"mobilePhoneNumber" => Obfuscation.obfuscate_all,
|
25
|
+
"passengerName" => Obfuscation.obfuscate_all,
|
26
|
+
"phoneNumber" => Obfuscation.obfuscate_all,
|
27
|
+
"street" => Obfuscation.obfuscate_all,
|
28
|
+
"workPhoneNumber" => Obfuscation.obfuscate_all,
|
29
|
+
"zip" => Obfuscation.obfuscate_all,
|
30
|
+
"cardNumber" => Obfuscation.obfuscate_all_but_last(4),
|
31
|
+
"expiryDate" => Obfuscation.obfuscate_all_but_last(2),
|
32
|
+
"cvv" => Obfuscation.obfuscate_all,
|
33
|
+
"iban" => Obfuscation.obfuscate_all_but_last(4),
|
34
|
+
"accountNumber" => Obfuscation.obfuscate_all_but_last(4),
|
35
|
+
"reformattedAccountNumber" => Obfuscation.obfuscate_all_but_last(4),
|
36
|
+
"bin" => Obfuscation.obfuscate_all_but_first(6),
|
37
|
+
"value" => Obfuscation.obfuscate_all,
|
38
|
+
"keyId" => Obfuscation.obfuscate_with_fixed_length(8),
|
39
|
+
"secretKey" => Obfuscation.obfuscate_with_fixed_length(8),
|
40
|
+
"publicKey" => Obfuscation.obfuscate_with_fixed_length(8),
|
41
|
+
"userAuthenticationToken" => Obfuscation.obfuscate_with_fixed_length(8),
|
42
|
+
"encryptedPayload" => Obfuscation.obfuscate_with_fixed_length(8),
|
43
|
+
"decryptedPayload" => Obfuscation.obfuscate_with_fixed_length(8),
|
44
|
+
"encryptedCustomerInput" => Obfuscation.obfuscate_with_fixed_length(8),
|
45
|
+
}
|
46
|
+
if additional_rules
|
47
|
+
additional_rules.each do |name, rule|
|
48
|
+
@obfuscation_rules[name] = rule
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
@property_pattern = build_property_pattern(@obfuscation_rules.keys)
|
53
|
+
end
|
54
|
+
|
55
|
+
private
|
56
|
+
|
57
|
+
def build_property_pattern(pn)
|
58
|
+
return /$^/ if pn.empty? # no possible match
|
59
|
+
# Regex to create:
|
60
|
+
# (["'])(X|Y|Z)\1\s*:\s*(?:(["'])(.*?)(?<!\\)\3|([^"'\s\[\{]\S*))
|
61
|
+
# Groups:
|
62
|
+
# 1: opening " or ' for the property name
|
63
|
+
# 2: property name
|
64
|
+
# 3: opening " or ' for the value
|
65
|
+
# 4: quoted value
|
66
|
+
# 5: non-quoted-value
|
67
|
+
# The negative lookbehind is to allow escaped quotes to be part of
|
68
|
+
# the value. What this does not allow currently is having values end
|
69
|
+
# with a \ (which would be escaped to \\).
|
70
|
+
regex = pn.inject("([\"'])(") { |r, p| "#{r}#{Regexp.quote(p)}|" }.chop <<
|
71
|
+
")\\1\\s*:\\s*(?:([\"'])(.*?)(?<!\\\\)\\3|([^\"'\\s\\[\\{]((?!,)\\S)*))"
|
72
|
+
/#{regex}/m # dotall mode
|
73
|
+
end
|
74
|
+
|
75
|
+
def obfuscate_value(property_name, value)
|
76
|
+
obfuscation_rule = @obfuscation_rules[property_name]
|
77
|
+
return obfuscation_rule.call(value) if obfuscation_rule
|
78
|
+
value
|
79
|
+
end
|
80
|
+
|
81
|
+
public
|
82
|
+
|
83
|
+
# Obfuscates the given body as necessary.
|
84
|
+
#
|
85
|
+
# @return (String)
|
86
|
+
def obfuscate_body(body)
|
87
|
+
return nil if body.nil?
|
88
|
+
return '' if body.empty?
|
89
|
+
|
90
|
+
body.gsub(@property_pattern) do
|
91
|
+
m = Regexp.last_match
|
92
|
+
property_name = m[2]
|
93
|
+
value = m[4] || m[5]
|
94
|
+
# copy value 'cause it's part of m[0]
|
95
|
+
m[0].sub(value, obfuscate_value(property_name, value.dup))
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
private
|
100
|
+
|
101
|
+
DEFAULT_OBFUSCATOR = BodyObfuscator.new
|
102
|
+
|
103
|
+
public
|
104
|
+
|
105
|
+
# @return [BodyObfuscator]
|
106
|
+
def self.default_obfuscator
|
107
|
+
DEFAULT_OBFUSCATOR
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'onlinepayments/sdk/logging/obfuscation/obfuscation_rule'
|
2
|
+
|
3
|
+
module OnlinePayments
|
4
|
+
module SDK
|
5
|
+
module Logging
|
6
|
+
module Obfuscation
|
7
|
+
# A class that can be used to obfuscate headers.
|
8
|
+
class HeaderObfuscator
|
9
|
+
|
10
|
+
# Creates a new header obfuscator.
|
11
|
+
# This will contain some pre-defined obfuscation rules, as well as any provided custom rules
|
12
|
+
#
|
13
|
+
# @param additional_rules [Hash] An optional hash where the keys are header names and the values are
|
14
|
+
# functions that obfuscate a single value
|
15
|
+
def initialize(additional_rules = nil)
|
16
|
+
@obfuscation_rules = {
|
17
|
+
"X-GCS-Authentication-Token" => Obfuscation.obfuscate_with_fixed_length(8),
|
18
|
+
"X-GCS-CallerPassword" => Obfuscation.obfuscate_with_fixed_length(8),
|
19
|
+
"authorization" => Obfuscation.obfuscate_with_fixed_length(8),
|
20
|
+
"www-authenticate" => Obfuscation.obfuscate_with_fixed_length(8),
|
21
|
+
"proxy-authenticate" => Obfuscation.obfuscate_with_fixed_length(8),
|
22
|
+
"proxy-authorization" => Obfuscation.obfuscate_with_fixed_length(8),
|
23
|
+
}
|
24
|
+
if additional_rules
|
25
|
+
additional_rules.each do |name, rule|
|
26
|
+
@obfuscation_rules[name.downcase] = rule
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
# Obfuscates the value for the given header as necessary.
|
32
|
+
#
|
33
|
+
# @return (String)
|
34
|
+
def obfuscate_header(header_name, value)
|
35
|
+
obfuscation_rule = @obfuscation_rules[header_name.downcase]
|
36
|
+
return obfuscation_rule.call(value) if obfuscation_rule
|
37
|
+
value
|
38
|
+
end
|
39
|
+
|
40
|
+
private
|
41
|
+
|
42
|
+
DEFAULT_OBFUSCATOR = HeaderObfuscator.new
|
43
|
+
|
44
|
+
public
|
45
|
+
|
46
|
+
# @return [HeaderObfuscator]
|
47
|
+
def self.default_obfuscator
|
48
|
+
DEFAULT_OBFUSCATOR
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module OnlinePayments
|
2
|
+
module SDK
|
3
|
+
module Logging
|
4
|
+
module Obfuscation
|
5
|
+
# Abstract mixin module that allows specifying body and header obfuscators for an object.
|
6
|
+
module ObfuscationCapable
|
7
|
+
|
8
|
+
# Sets the current body obfuscator to use.
|
9
|
+
def set_body_obfuscator(body_obfuscator)
|
10
|
+
raise NotImplementedError
|
11
|
+
end
|
12
|
+
|
13
|
+
# Sets the current header obfuscator to use.
|
14
|
+
def set_header_obfuscator(header_obfuscator)
|
15
|
+
raise NotImplementedError
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module OnlinePayments
|
2
|
+
module SDK
|
3
|
+
module Logging
|
4
|
+
module Obfuscation
|
5
|
+
|
6
|
+
# Returns an obfuscation rule (callable) that will replace all characters with *
|
7
|
+
def self.obfuscate_all
|
8
|
+
->(value) do
|
9
|
+
return value if value.nil? or value.empty?
|
10
|
+
'*' * (value || '').length
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
# Returns an obfuscation rule (function) that will replace values with a fixed length string containing only *
|
15
|
+
def self.obfuscate_with_fixed_length(fixed_length)
|
16
|
+
->(value) { '*' * fixed_length }
|
17
|
+
end
|
18
|
+
|
19
|
+
# Returns an obfuscation rule (function) that will keep a fixed number of characters at the start,
|
20
|
+
# then replaces all other characters with *
|
21
|
+
def self.obfuscate_all_but_first(count)
|
22
|
+
->(value) do
|
23
|
+
return value if value.nil? or value.empty?
|
24
|
+
return value if value.length < count
|
25
|
+
# range describes the range of characters to replace with asterisks
|
26
|
+
range = count...value.length
|
27
|
+
value[range] = '*' * range.size
|
28
|
+
value
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
# Returns an obfuscation rule that will keep a fixed number of characters at the end,
|
33
|
+
# then replaces all other characters with *
|
34
|
+
def self.obfuscate_all_but_last(count)
|
35
|
+
->(value) do
|
36
|
+
return value if value.nil? or value.empty?
|
37
|
+
return value if value.length < count
|
38
|
+
# range describes the range of characters to replace with asterisks
|
39
|
+
range = 0...(value.length - count)
|
40
|
+
value[range] = '*' * range.size
|
41
|
+
value
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
Dir[File.join(__dir__, 'obfuscation', '*.rb')].each { |f| require f }
|
@@ -1,38 +1,49 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
require 'onlinepayments/sdk/logging/obfuscation/body_obfuscator'
|
2
|
+
require 'onlinepayments/sdk/logging/obfuscation/header_obfuscator'
|
3
|
+
require 'onlinepayments/sdk/logging/log_message_builder'
|
3
4
|
|
4
|
-
|
5
|
-
|
6
|
-
|
5
|
+
module OnlinePayments
|
6
|
+
module SDK
|
7
|
+
module Logging
|
8
|
+
# Class that converts data about a request into a properly formatted log message.
|
9
|
+
# Formats request id, http method, uri, headers and body into a helpful message.
|
10
|
+
class RequestLogMessageBuilder < LogMessageBuilder
|
7
11
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
12
|
+
def initialize(request_id, method, uri,
|
13
|
+
body_obfuscator = Obfuscation::BodyObfuscator.default_obfuscator,
|
14
|
+
header_obfuscator = Obfuscation::HeaderObfuscator.default_obfuscator)
|
15
|
+
super(request_id, body_obfuscator, header_obfuscator)
|
16
|
+
@method = method
|
17
|
+
@uri = uri
|
18
|
+
end
|
13
19
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
20
|
+
# Constructs and returns a log message based on the request data. The log message is a string.
|
21
|
+
def get_message
|
22
|
+
msg_template_without_body = "Outgoing request (requestId='%s'):\n" +
|
23
|
+
" method: '%s'\n" +
|
24
|
+
" uri: '%s'\n" +
|
25
|
+
" headers: '%s'"
|
26
|
+
msg_template_with_body = msg_template_without_body + "\n" +
|
27
|
+
" content-type: '%s'\n" +
|
28
|
+
" body: '%s'"
|
21
29
|
|
22
|
-
|
30
|
+
return sprintf(msg_template_without_body, @request_id, empty_if_null(@method),
|
31
|
+
format_uri, @headers) if @body.nil?
|
32
|
+
sprintf(msg_template_with_body, @request_id, empty_if_null(@method),
|
33
|
+
format_uri, @headers, empty_if_null(@content_type), @body)
|
34
|
+
end
|
23
35
|
|
24
|
-
|
25
|
-
" method: \"%s\"\n"\
|
26
|
-
" uri: \"%s\"\n"\
|
27
|
-
" headers: \"%s\"".freeze
|
28
|
-
MSG_TEMPLATE_WITH_BODY = "#{MSG_TEMPLATE_WITHOUT_BODY}\n"\
|
29
|
-
" content-type: \"%s\"\n"\
|
30
|
-
" body: \"%s\"".freeze
|
36
|
+
private
|
31
37
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
38
|
+
def format_uri
|
39
|
+
'' unless @uri && @uri.path
|
40
|
+
if @uri.query.nil?
|
41
|
+
@uri.path
|
42
|
+
else
|
43
|
+
"#{@uri.path}?#{@uri.query}" unless @uri.query.nil?
|
44
|
+
end
|
45
|
+
# @uri.path + '?' + empty_if_null(@uri.query)
|
46
|
+
end
|
36
47
|
end
|
37
48
|
end
|
38
49
|
end
|
@@ -1,33 +1,40 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
class ResponseLogMessageBuilder < LogMessageBuilder
|
1
|
+
require 'onlinepayments/sdk/logging/obfuscation/body_obfuscator'
|
2
|
+
require 'onlinepayments/sdk/logging/obfuscation/header_obfuscator'
|
3
|
+
require 'onlinepayments/sdk/logging/log_message_builder'
|
5
4
|
|
5
|
+
module OnlinePayments
|
6
|
+
module SDK
|
7
|
+
module Logging
|
6
8
|
# Class that converts data about a response into a properly formatted log message.
|
7
9
|
# Formats request id, status code, headers, body and time between request and response into a helpful message.
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
10
|
+
class ResponseLogMessageBuilder < LogMessageBuilder
|
11
|
+
|
12
|
+
# @param request_id [String] identifier of the request corresponding to this response.
|
13
|
+
# @param status_code [Integer] HTTP status code of the response.
|
14
|
+
# @param duration [Float] time elapsed between request and response.
|
15
|
+
def initialize(request_id, status_code, duration = -1,
|
16
|
+
body_obfuscator = Obfuscation::BodyObfuscator.default_obfuscator,
|
17
|
+
header_obfuscator = Obfuscation::HeaderObfuscator.default_obfuscator)
|
18
|
+
super(request_id, body_obfuscator, header_obfuscator)
|
19
|
+
@status_code = status_code
|
20
|
+
@duration = duration
|
21
|
+
end
|
17
22
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
23
|
+
# Constructs and returns a log message based on the request data. The log message is a string.
|
24
|
+
def get_message
|
25
|
+
msg_template = "Incoming response (requestId='%s'" +
|
26
|
+
((@duration < 0) ? "" : ", %.3f ms") +
|
27
|
+
"):\n" +
|
28
|
+
" status-code: '%s'\n" +
|
29
|
+
" headers: '%s'\n" +
|
30
|
+
" content-type: '%s'\n" +
|
31
|
+
" body: '%s'"
|
25
32
|
|
26
|
-
|
33
|
+
return sprintf(msg_template, @request_id, @status_code, @headers,
|
34
|
+
empty_if_null(@content_type), empty_if_null(@body)) if @duration < 0
|
27
35
|
sprintf(msg_template, @request_id, @duration, @status_code, @headers,
|
28
|
-
empty_if_null(@content_type), empty_if_null(@body)) :
|
29
|
-
sprintf(msg_template, @request_id, @status_code, @headers,
|
30
36
|
empty_if_null(@content_type), empty_if_null(@body))
|
37
|
+
end
|
31
38
|
end
|
32
39
|
end
|
33
40
|
end
|
@@ -1,56 +1,60 @@
|
|
1
1
|
require 'English'
|
2
|
+
require 'onlinepayments/sdk/logging/communicator_logger'
|
2
3
|
|
3
|
-
module OnlinePayments
|
4
|
-
module
|
4
|
+
module OnlinePayments
|
5
|
+
module SDK
|
6
|
+
module Logging
|
7
|
+
# Logging class that Logs messages and errors to a logger.
|
8
|
+
# Errors can be logged at a separate level compared to regular messages.
|
9
|
+
class RubyCommunicatorLogger < CommunicatorLogger
|
5
10
|
|
6
|
-
|
7
|
-
|
8
|
-
|
11
|
+
# Creates a new RubyCommunicatorLogger instance.
|
12
|
+
#
|
13
|
+
# @param logger [Logger] the logger to log messages to. Messages to log will be provided using logger#log(message level, message)
|
14
|
+
# @param log_level [String] log level to use for non-error messages.
|
15
|
+
# @param error_level [String, nil] error logging level to use.
|
16
|
+
def initialize(logger, log_level, error_level = nil)
|
17
|
+
# implement the interface
|
18
|
+
error_level ||= log_level
|
19
|
+
raise ArgumentError unless logger
|
20
|
+
raise ArgumentError unless log_level
|
21
|
+
raise ArgumentError unless error_level
|
9
22
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
# @param error_level [String] error logging level to use.
|
15
|
-
def initialize(logger, log_level, error_level = false)
|
16
|
-
# implement the interface
|
17
|
-
error_level ||= log_level
|
18
|
-
raise ArgumentError unless logger
|
19
|
-
raise ArgumentError unless log_level
|
20
|
-
raise ArgumentError unless error_level
|
21
|
-
|
22
|
-
@logger = logger
|
23
|
-
@log_level = log_level
|
24
|
-
@errorLevel = error_level
|
25
|
-
end
|
23
|
+
@logger = logger
|
24
|
+
@log_level = log_level
|
25
|
+
@error_level = error_level
|
26
|
+
end
|
26
27
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
28
|
+
# Logs a single error or non-error message to the logger.
|
29
|
+
def log(msg, thrown = nil)
|
30
|
+
# use Ruby Logger
|
31
|
+
if thrown
|
32
|
+
@logger.log(@error_level) { msg + $RS + thrown.to_s + $RS + thrown.backtrace.join($RS) }
|
33
|
+
else
|
34
|
+
@logger.log(@log_level, msg)
|
35
|
+
end
|
34
36
|
end
|
35
|
-
end
|
36
37
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
38
|
+
# Opens or creates a new file in write-only mode with _filename_.
|
39
|
+
def self.create_logfile(filename)
|
40
|
+
logdev = begin
|
41
|
+
open(filename, (File::WRONLY | File::APPEND | File::CREAT | File::EXCL))
|
42
|
+
rescue Errno::EEXIST
|
43
|
+
# file is created by another process
|
44
|
+
open_logfile(filename)
|
45
|
+
end
|
46
|
+
logdev.sync = true
|
47
|
+
logdev
|
48
|
+
end
|
48
49
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
50
|
+
# Opens or creates a new file in write-only mode with _filename_.
|
51
|
+
def self.open_logfile(filename)
|
52
|
+
begin
|
53
|
+
open(filename, (File::WRONLY | File::APPEND))
|
54
|
+
rescue Errno::ENOENT
|
55
|
+
create_logfile(filename)
|
56
|
+
end
|
57
|
+
end
|
54
58
|
end
|
55
59
|
end
|
56
60
|
end
|
@@ -1,33 +1,30 @@
|
|
1
1
|
require 'English'
|
2
2
|
require 'singleton'
|
3
|
+
require 'onlinepayments/sdk/logging/communicator_logger'
|
3
4
|
|
4
|
-
module OnlinePayments
|
5
|
-
module
|
5
|
+
module OnlinePayments
|
6
|
+
module SDK
|
7
|
+
module Logging
|
8
|
+
# Logging class that logs the messages to $stdout.
|
9
|
+
class StdoutCommunicatorLogger < CommunicatorLogger
|
10
|
+
include Singleton
|
6
11
|
|
7
|
-
|
8
|
-
|
9
|
-
|
12
|
+
def initialize
|
13
|
+
# implement the interface
|
14
|
+
end
|
10
15
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
alias_method :INSTANCE, :instance
|
18
|
-
end
|
19
|
-
|
20
|
-
# Logs a single error or non-error message to $stdout.
|
21
|
-
def log(msg, thrown = nil)
|
22
|
-
$stdout.puts get_date_prefix + msg
|
23
|
-
$stdout.puts thrown.to_s if thrown
|
24
|
-
$stdout.puts thrown.backtrace.join($RS) if thrown
|
25
|
-
end
|
16
|
+
# Logs a single error or non-error message to $stdout.
|
17
|
+
def log(msg, thrown = nil)
|
18
|
+
$stdout.puts get_date_prefix + msg
|
19
|
+
$stdout.puts thrown.to_s if thrown
|
20
|
+
$stdout.puts thrown.backtrace.join($RS) if thrown
|
21
|
+
end
|
26
22
|
|
27
|
-
|
23
|
+
private
|
28
24
|
|
29
|
-
|
30
|
-
|
25
|
+
def get_date_prefix
|
26
|
+
Time.now.strftime("%Y-%m-%dT%H:%M:%S ")
|
27
|
+
end
|
31
28
|
end
|
32
29
|
end
|
33
30
|
end
|
@@ -1,10 +1 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require "#{prefix}/logging_capable"
|
4
|
-
require "#{prefix}/log_message_builder"
|
5
|
-
require "#{prefix}/request_log_message_builder"
|
6
|
-
require "#{prefix}/response_log_message_builder"
|
7
|
-
require "#{prefix}/logging_util"
|
8
|
-
require "#{prefix}/communicator_logger"
|
9
|
-
require "#{prefix}/ruby_communicator_logger"
|
10
|
-
require "#{prefix}/stdout_communicator_logger"
|
1
|
+
Dir[File.join(__dir__, 'logging', '*.rb')].each { |f| require f }
|
@@ -0,0 +1,57 @@
|
|
1
|
+
#
|
2
|
+
# This file was automatically generated.
|
3
|
+
#
|
4
|
+
require 'onlinepayments/sdk/api_resource'
|
5
|
+
require 'onlinepayments/sdk/exception_factory'
|
6
|
+
require 'onlinepayments/sdk/communication/response_exception'
|
7
|
+
require 'onlinepayments/sdk/domain/captures_response'
|
8
|
+
require 'onlinepayments/sdk/domain/error_response'
|
9
|
+
|
10
|
+
module OnlinePayments
|
11
|
+
module SDK
|
12
|
+
module Merchant
|
13
|
+
module Captures
|
14
|
+
# Captures client. Thread-safe.
|
15
|
+
class CapturesClient < OnlinePayments::SDK::ApiResource
|
16
|
+
|
17
|
+
# @param parent [OnlinePayments::SDK::ApiResource]
|
18
|
+
# @param path_context [Hash, nil]
|
19
|
+
def initialize(parent, path_context)
|
20
|
+
super(parent: parent, path_context: path_context)
|
21
|
+
end
|
22
|
+
|
23
|
+
# Resource /v2/!{merchantId}/payments/!{paymentId}/captures - Get captures of payment
|
24
|
+
#
|
25
|
+
# @param payment_id [String]
|
26
|
+
# @param context [OnlinePayments::SDK::CallContext, nil]
|
27
|
+
# @return [OnlinePayments::SDK::Domain::CapturesResponse]
|
28
|
+
# @raise [OnlinePayments::SDK::IdempotenceException] if an idempotent request caused a conflict (HTTP status code 409)
|
29
|
+
# @raise [OnlinePayments::SDK::ValidationException] if the request was not correct and couldn't be processed (HTTP status code 400)
|
30
|
+
# @raise [OnlinePayments::SDK::AuthorizationException] if the request was not allowed (HTTP status code 403)
|
31
|
+
# @raise [OnlinePayments::SDK::ReferenceException] if an object was attempted to be referenced that doesn't exist or has been removed,
|
32
|
+
# or there was a conflict (HTTP status code 404, 409 or 410)
|
33
|
+
# @raise [OnlinePayments::SDK::PlatformException] if something went wrong at the payment platform,
|
34
|
+
# the payment platform was unable to process a message from a downstream partner/acquirer,
|
35
|
+
# or the service that you're trying to reach is temporary unavailable (HTTP status code 500, 502 or 503)
|
36
|
+
# @raise [OnlinePayments::SDK::ApiException] if the payment platform returned any other error
|
37
|
+
def get_captures(payment_id, context = nil)
|
38
|
+
path_context = {
|
39
|
+
'paymentId'.freeze => payment_id,
|
40
|
+
}
|
41
|
+
uri = instantiate_uri('/v2/{merchantId}/payments/{paymentId}/captures', path_context)
|
42
|
+
@communicator.get(
|
43
|
+
uri,
|
44
|
+
client_headers,
|
45
|
+
nil,
|
46
|
+
OnlinePayments::SDK::Domain::CapturesResponse,
|
47
|
+
context)
|
48
|
+
rescue OnlinePayments::SDK::Communication::ResponseException => e
|
49
|
+
error_type = OnlinePayments::SDK::Domain::ErrorResponse
|
50
|
+
error_object = @communicator.marshaller.unmarshal(e.body, error_type)
|
51
|
+
raise OnlinePayments::SDK.create_exception(e.status_code, e.body, error_object, context)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|