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.
Files changed (408) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +0 -0
  3. data/LICENSE.txt +0 -0
  4. data/README.md +5 -6
  5. data/Rakefile +0 -0
  6. data/lib/onlinepayments/sdk/api_exception.rb +47 -35
  7. data/lib/onlinepayments/sdk/api_resource.rb +49 -97
  8. data/lib/onlinepayments/sdk/authentication/authenticator.rb +19 -0
  9. data/lib/onlinepayments/sdk/authentication/authorization_type.rb +15 -0
  10. data/lib/onlinepayments/sdk/authentication/v1hmac_authenticator.rb +109 -0
  11. data/lib/onlinepayments/sdk/authentication.rb +1 -0
  12. data/lib/onlinepayments/sdk/authorization_exception.rb +14 -8
  13. data/lib/onlinepayments/sdk/call_context.rb +30 -21
  14. data/lib/onlinepayments/sdk/client.rb +36 -18
  15. data/lib/onlinepayments/sdk/communication/communication_exception.rb +19 -0
  16. data/lib/onlinepayments/sdk/communication/connection.rb +48 -0
  17. data/lib/onlinepayments/sdk/communication/default_connection.rb +427 -0
  18. data/lib/onlinepayments/sdk/communication/metadata_provider.rb +160 -0
  19. data/lib/onlinepayments/sdk/communication/multipart_form_data_object.rb +52 -0
  20. data/lib/onlinepayments/sdk/communication/multipart_form_data_request.rb +13 -0
  21. data/lib/onlinepayments/sdk/communication/not_found_exception.rb +19 -0
  22. data/lib/onlinepayments/sdk/communication/param_request.rb +14 -0
  23. data/lib/onlinepayments/sdk/communication/pooled_connection.rb +26 -0
  24. data/lib/onlinepayments/sdk/communication/request_header.rb +62 -0
  25. data/lib/onlinepayments/sdk/communication/request_param.rb +28 -0
  26. data/lib/onlinepayments/sdk/communication/response_exception.rb +56 -0
  27. data/lib/onlinepayments/sdk/communication/response_header.rb +78 -0
  28. data/lib/onlinepayments/sdk/communication.rb +1 -0
  29. data/lib/onlinepayments/sdk/communicator.rb +475 -268
  30. data/lib/onlinepayments/sdk/communicator_configuration.rb +162 -53
  31. data/lib/onlinepayments/sdk/declined_payment_exception.rb +28 -21
  32. data/lib/onlinepayments/sdk/declined_payout_exception.rb +28 -23
  33. data/lib/onlinepayments/sdk/declined_refund_exception.rb +28 -23
  34. data/lib/onlinepayments/sdk/declined_transaction_exception.rb +16 -10
  35. data/lib/onlinepayments/sdk/domain/account_on_file.rb +44 -35
  36. data/lib/onlinepayments/sdk/domain/account_on_file_attribute.rb +42 -28
  37. data/lib/onlinepayments/sdk/domain/account_on_file_display_hints.rb +29 -24
  38. data/lib/onlinepayments/sdk/domain/acquirer_information.rb +27 -22
  39. data/lib/onlinepayments/sdk/domain/acquirer_selection_information.rb +34 -24
  40. data/lib/onlinepayments/sdk/domain/additional_order_input.rb +43 -38
  41. data/lib/onlinepayments/sdk/domain/address.rb +65 -43
  42. data/lib/onlinepayments/sdk/domain/address_personal.rb +78 -52
  43. data/lib/onlinepayments/sdk/domain/airline_data.rb +204 -123
  44. data/lib/onlinepayments/sdk/domain/airline_flight_leg.rb +158 -95
  45. data/lib/onlinepayments/sdk/domain/airline_passenger.rb +59 -39
  46. data/lib/onlinepayments/sdk/domain/amount_breakdown.rb +27 -20
  47. data/lib/onlinepayments/sdk/domain/amount_of_money.rb +27 -20
  48. data/lib/onlinepayments/sdk/domain/api_error.rb +73 -47
  49. data/lib/onlinepayments/sdk/domain/apple_pay_line_item.rb +72 -0
  50. data/lib/onlinepayments/sdk/domain/apple_pay_recurring_payment_request.rb +61 -0
  51. data/lib/onlinepayments/sdk/domain/bank_account_iban.rb +20 -16
  52. data/lib/onlinepayments/sdk/domain/browser_data.rb +51 -35
  53. data/lib/onlinepayments/sdk/domain/calculate_surcharge_request.rb +27 -24
  54. data/lib/onlinepayments/sdk/domain/calculate_surcharge_response.rb +22 -20
  55. data/lib/onlinepayments/sdk/domain/cancel_payment_request.rb +27 -22
  56. data/lib/onlinepayments/sdk/domain/cancel_payment_response.rb +20 -18
  57. data/lib/onlinepayments/sdk/domain/capture.rb +41 -32
  58. data/lib/onlinepayments/sdk/domain/capture_output.rb +106 -78
  59. data/lib/onlinepayments/sdk/domain/capture_payment_request.rb +43 -26
  60. data/lib/onlinepayments/sdk/domain/capture_response.rb +41 -32
  61. data/lib/onlinepayments/sdk/domain/capture_status_output.rb +20 -16
  62. data/lib/onlinepayments/sdk/domain/captures_response.rb +22 -20
  63. data/lib/onlinepayments/sdk/domain/card.rb +41 -28
  64. data/lib/onlinepayments/sdk/domain/card_essentials.rb +41 -28
  65. data/lib/onlinepayments/sdk/domain/card_fraud_results.rb +34 -24
  66. data/lib/onlinepayments/sdk/domain/card_info.rb +27 -20
  67. data/lib/onlinepayments/sdk/domain/card_payment_method_specific_input.rb +199 -128
  68. data/lib/onlinepayments/sdk/domain/card_payment_method_specific_input_base.rb +149 -104
  69. data/lib/onlinepayments/sdk/domain/card_payment_method_specific_input_for_hosted_checkout.rb +36 -28
  70. data/lib/onlinepayments/sdk/domain/card_payment_method_specific_output.rb +133 -100
  71. data/lib/onlinepayments/sdk/domain/card_payout_method_specific_input.rb +41 -30
  72. data/lib/onlinepayments/sdk/domain/card_recurrence_details.rb +20 -16
  73. data/lib/onlinepayments/sdk/domain/card_source.rb +41 -30
  74. data/lib/onlinepayments/sdk/domain/card_without_cvv.rb +34 -24
  75. data/lib/onlinepayments/sdk/domain/company_information.rb +20 -16
  76. data/lib/onlinepayments/sdk/domain/complete_payment_card_payment_method_specific_input.rb +20 -18
  77. data/lib/onlinepayments/sdk/domain/complete_payment_request.rb +27 -24
  78. data/lib/onlinepayments/sdk/domain/complete_payment_response.rb +35 -31
  79. data/lib/onlinepayments/sdk/domain/contact_details.rb +51 -35
  80. data/lib/onlinepayments/sdk/domain/create_hosted_checkout_request.rb +76 -59
  81. data/lib/onlinepayments/sdk/domain/create_hosted_checkout_response.rb +60 -43
  82. data/lib/onlinepayments/sdk/domain/create_hosted_tokenization_request.rb +57 -42
  83. data/lib/onlinepayments/sdk/domain/create_hosted_tokenization_response.rb +57 -44
  84. data/lib/onlinepayments/sdk/domain/create_mandate_request.rb +71 -48
  85. data/lib/onlinepayments/sdk/domain/create_mandate_response.rb +27 -24
  86. data/lib/onlinepayments/sdk/domain/create_mandate_with_return_url.rb +71 -48
  87. data/lib/onlinepayments/sdk/domain/create_payment_link_request.rb +120 -87
  88. data/lib/onlinepayments/sdk/domain/create_payment_request.rb +82 -60
  89. data/lib/onlinepayments/sdk/domain/create_payment_response.rb +35 -31
  90. data/lib/onlinepayments/sdk/domain/create_payout_request.rb +61 -40
  91. data/lib/onlinepayments/sdk/domain/create_token_request.rb +27 -22
  92. data/lib/onlinepayments/sdk/domain/created_payment_output.rb +27 -22
  93. data/lib/onlinepayments/sdk/domain/created_token_response.rb +50 -38
  94. data/lib/onlinepayments/sdk/domain/credit_card_specific_input_hosted_tokenization.rb +29 -26
  95. data/lib/onlinepayments/sdk/domain/credit_card_validation_rules_hosted_tokenization.rb +27 -20
  96. data/lib/onlinepayments/sdk/domain/currency_conversion.rb +27 -22
  97. data/lib/onlinepayments/sdk/domain/currency_conversion_input.rb +27 -20
  98. data/lib/onlinepayments/sdk/domain/currency_conversion_request.rb +27 -24
  99. data/lib/onlinepayments/sdk/domain/currency_conversion_response.rb +34 -28
  100. data/lib/onlinepayments/sdk/domain/currency_conversion_result.rb +27 -20
  101. data/lib/onlinepayments/sdk/domain/currency_conversion_specific_input.rb +20 -16
  102. data/lib/onlinepayments/sdk/domain/customer.rb +87 -68
  103. data/lib/onlinepayments/sdk/domain/customer_account.rb +77 -55
  104. data/lib/onlinepayments/sdk/domain/customer_account_authentication.rb +34 -20
  105. data/lib/onlinepayments/sdk/domain/customer_bank_account.rb +34 -24
  106. data/lib/onlinepayments/sdk/domain/customer_device.rb +64 -44
  107. data/lib/onlinepayments/sdk/domain/customer_device_output.rb +20 -16
  108. data/lib/onlinepayments/sdk/domain/customer_output.rb +20 -18
  109. data/lib/onlinepayments/sdk/domain/customer_payment_activity.rb +34 -24
  110. data/lib/onlinepayments/sdk/domain/customer_token.rb +35 -31
  111. data/lib/onlinepayments/sdk/domain/data_object.rb +32 -0
  112. data/lib/onlinepayments/sdk/domain/dcc_card_source.rb +41 -30
  113. data/lib/onlinepayments/sdk/domain/dcc_proposal.rb +51 -41
  114. data/lib/onlinepayments/sdk/domain/decrypted_payment_data.rb +51 -35
  115. data/lib/onlinepayments/sdk/domain/directory_entry.rb +34 -24
  116. data/lib/onlinepayments/sdk/domain/discount.rb +20 -16
  117. data/lib/onlinepayments/sdk/domain/empty_validator.rb +7 -6
  118. data/lib/onlinepayments/sdk/domain/error_response.rb +29 -24
  119. data/lib/onlinepayments/sdk/domain/external_cardholder_authentication_data.rb +86 -55
  120. data/lib/onlinepayments/sdk/domain/external_token_linked.rb +35 -24
  121. data/lib/onlinepayments/sdk/domain/feedbacks.rb +30 -0
  122. data/lib/onlinepayments/sdk/domain/fixed_list_validator.rb +22 -20
  123. data/lib/onlinepayments/sdk/domain/fraud_fields.rb +37 -28
  124. data/lib/onlinepayments/sdk/domain/fraud_results.rb +20 -16
  125. data/lib/onlinepayments/sdk/domain/g_pay_three_d_secure.rb +50 -36
  126. data/lib/onlinepayments/sdk/domain/get_hosted_checkout_response.rb +27 -22
  127. data/lib/onlinepayments/sdk/domain/get_hosted_tokenization_response.rb +27 -22
  128. data/lib/onlinepayments/sdk/domain/get_iin_details_request.rb +27 -22
  129. data/lib/onlinepayments/sdk/domain/get_iin_details_response.rb +52 -38
  130. data/lib/onlinepayments/sdk/domain/get_mandate_response.rb +20 -18
  131. data/lib/onlinepayments/sdk/domain/get_payment_product_groups_response.rb +22 -20
  132. data/lib/onlinepayments/sdk/domain/get_payment_products_response.rb +22 -20
  133. data/lib/onlinepayments/sdk/domain/get_privacy_policy_response.rb +20 -16
  134. data/lib/onlinepayments/sdk/domain/gift_card_purchase.rb +27 -22
  135. data/lib/onlinepayments/sdk/domain/hosted_checkout_specific_input.rb +83 -56
  136. data/lib/onlinepayments/sdk/domain/hosted_checkout_specific_output.rb +27 -20
  137. data/lib/onlinepayments/sdk/domain/iin_detail.rb +34 -24
  138. data/lib/onlinepayments/sdk/domain/label_template_element.rb +27 -20
  139. data/lib/onlinepayments/sdk/domain/length_validator.rb +27 -20
  140. data/lib/onlinepayments/sdk/domain/line_item.rb +44 -31
  141. data/lib/onlinepayments/sdk/domain/line_item_invoice_data.rb +20 -16
  142. data/lib/onlinepayments/sdk/domain/loan_recipient.rb +51 -35
  143. data/lib/onlinepayments/sdk/domain/lodging_data.rb +20 -16
  144. data/lib/onlinepayments/sdk/domain/mandate_address.rb +51 -35
  145. data/lib/onlinepayments/sdk/domain/mandate_address_response.rb +51 -35
  146. data/lib/onlinepayments/sdk/domain/mandate_contact_details.rb +20 -16
  147. data/lib/onlinepayments/sdk/domain/mandate_customer.rb +52 -44
  148. data/lib/onlinepayments/sdk/domain/mandate_customer_response.rb +52 -44
  149. data/lib/onlinepayments/sdk/domain/mandate_merchant_action.rb +27 -22
  150. data/lib/onlinepayments/sdk/domain/mandate_personal_information.rb +27 -22
  151. data/lib/onlinepayments/sdk/domain/mandate_personal_information_response.rb +27 -22
  152. data/lib/onlinepayments/sdk/domain/mandate_personal_name.rb +27 -20
  153. data/lib/onlinepayments/sdk/domain/mandate_personal_name_response.rb +27 -20
  154. data/lib/onlinepayments/sdk/domain/mandate_redirect_data.rb +27 -20
  155. data/lib/onlinepayments/sdk/domain/mandate_response.rb +64 -44
  156. data/lib/onlinepayments/sdk/domain/merchant_action.rb +43 -28
  157. data/lib/onlinepayments/sdk/domain/mobile_payment_data.rb +27 -20
  158. data/lib/onlinepayments/sdk/domain/mobile_payment_method_hosted_checkout_specific_input.rb +43 -26
  159. data/lib/onlinepayments/sdk/domain/mobile_payment_method_specific_input.rb +71 -50
  160. data/lib/onlinepayments/sdk/domain/mobile_payment_method_specific_output.rb +58 -45
  161. data/lib/onlinepayments/sdk/domain/mobile_payment_product302_specific_input.rb +32 -0
  162. data/lib/onlinepayments/sdk/domain/mobile_payment_product320_specific_input.rb +20 -18
  163. data/lib/onlinepayments/sdk/domain/mobile_three_d_secure_challenge_parameters.rb +51 -0
  164. data/lib/onlinepayments/sdk/domain/multiple_payment_information.rb +27 -20
  165. data/lib/onlinepayments/sdk/domain/omnichannel_payout_specific_input.rb +20 -16
  166. data/lib/onlinepayments/sdk/domain/operation_output.rb +67 -45
  167. data/lib/onlinepayments/sdk/domain/operation_payment_references.rb +30 -0
  168. data/lib/onlinepayments/sdk/domain/order.rb +75 -66
  169. data/lib/onlinepayments/sdk/domain/order_line_details.rb +79 -47
  170. data/lib/onlinepayments/sdk/domain/order_references.rb +34 -24
  171. data/lib/onlinepayments/sdk/domain/order_status_output.rb +52 -38
  172. data/lib/onlinepayments/sdk/domain/order_type_information.rb +27 -20
  173. data/lib/onlinepayments/sdk/domain/other_details.rb +37 -0
  174. data/lib/onlinepayments/sdk/domain/payment_account_on_file.rb +27 -20
  175. data/lib/onlinepayments/sdk/domain/payment_context.rb +34 -26
  176. data/lib/onlinepayments/sdk/domain/payment_creation_output.rb +41 -28
  177. data/lib/onlinepayments/sdk/domain/payment_details_response.rb +60 -49
  178. data/lib/onlinepayments/sdk/domain/payment_error_response.rb +37 -31
  179. data/lib/onlinepayments/sdk/domain/payment_link_event.rb +34 -24
  180. data/lib/onlinepayments/sdk/domain/payment_link_order_input.rb +34 -28
  181. data/lib/onlinepayments/sdk/domain/payment_link_order_output.rb +34 -28
  182. data/lib/onlinepayments/sdk/domain/payment_link_response.rb +74 -51
  183. data/lib/onlinepayments/sdk/domain/payment_link_specific_input.rb +36 -24
  184. data/lib/onlinepayments/sdk/domain/payment_output.rb +115 -94
  185. data/lib/onlinepayments/sdk/domain/payment_product.rb +117 -85
  186. data/lib/onlinepayments/sdk/domain/payment_product130_specific_input.rb +20 -18
  187. data/lib/onlinepayments/sdk/domain/payment_product130_specific_three_d_secure.rb +41 -28
  188. data/lib/onlinepayments/sdk/domain/payment_product3012.rb +27 -20
  189. data/lib/onlinepayments/sdk/domain/payment_product3012_specific_input.rb +51 -0
  190. data/lib/onlinepayments/sdk/domain/payment_product302_specific_data.rb +22 -20
  191. data/lib/onlinepayments/sdk/domain/payment_product3203_specific_output.rb +27 -24
  192. data/lib/onlinepayments/sdk/domain/payment_product3208_specific_input.rb +20 -16
  193. data/lib/onlinepayments/sdk/domain/payment_product3208_specific_output.rb +20 -16
  194. data/lib/onlinepayments/sdk/domain/payment_product3209_specific_input.rb +20 -16
  195. data/lib/onlinepayments/sdk/domain/payment_product3209_specific_output.rb +20 -16
  196. data/lib/onlinepayments/sdk/domain/payment_product320_specific_data.rb +29 -24
  197. data/lib/onlinepayments/sdk/domain/payment_product5001_specific_output.rb +48 -16
  198. data/lib/onlinepayments/sdk/domain/payment_product5100_specific_input.rb +20 -16
  199. data/lib/onlinepayments/sdk/domain/payment_product5402_specific_output.rb +20 -16
  200. data/lib/onlinepayments/sdk/domain/payment_product5404.rb +27 -20
  201. data/lib/onlinepayments/sdk/domain/payment_product5407.rb +27 -20
  202. data/lib/onlinepayments/sdk/domain/payment_product5500_specific_output.rb +41 -24
  203. data/lib/onlinepayments/sdk/domain/payment_product771_specific_output.rb +20 -16
  204. data/lib/onlinepayments/sdk/domain/payment_product840_customer_account.rb +72 -47
  205. data/lib/onlinepayments/sdk/domain/payment_product840_specific_output.rb +43 -38
  206. data/lib/onlinepayments/sdk/domain/payment_product_display_hints.rb +34 -24
  207. data/lib/onlinepayments/sdk/domain/payment_product_field.rb +41 -32
  208. data/lib/onlinepayments/sdk/domain/payment_product_field_data_restrictions.rb +27 -22
  209. data/lib/onlinepayments/sdk/domain/payment_product_field_display_element.rb +41 -28
  210. data/lib/onlinepayments/sdk/domain/payment_product_field_display_hints.rb +84 -56
  211. data/lib/onlinepayments/sdk/domain/payment_product_field_form_element.rb +30 -24
  212. data/lib/onlinepayments/sdk/domain/payment_product_field_tooltip.rb +28 -20
  213. data/lib/onlinepayments/sdk/domain/payment_product_field_validators.rb +83 -73
  214. data/lib/onlinepayments/sdk/domain/payment_product_filter.rb +32 -29
  215. data/lib/onlinepayments/sdk/domain/payment_product_filter_hosted_tokenization.rb +22 -20
  216. data/lib/onlinepayments/sdk/domain/payment_product_filters_hosted_checkout.rb +27 -24
  217. data/lib/onlinepayments/sdk/domain/payment_product_filters_hosted_tokenization.rb +27 -24
  218. data/lib/onlinepayments/sdk/domain/payment_product_group.rb +44 -37
  219. data/lib/onlinepayments/sdk/domain/payment_product_networks_response.rb +22 -20
  220. data/lib/onlinepayments/sdk/domain/payment_references.rb +27 -20
  221. data/lib/onlinepayments/sdk/domain/payment_response.rb +51 -41
  222. data/lib/onlinepayments/sdk/domain/payment_status_output.rb +66 -46
  223. data/lib/onlinepayments/sdk/domain/payout_error_response.rb +37 -31
  224. data/lib/onlinepayments/sdk/domain/payout_output.rb +27 -22
  225. data/lib/onlinepayments/sdk/domain/payout_response.rb +41 -32
  226. data/lib/onlinepayments/sdk/domain/payout_result.rb +41 -32
  227. data/lib/onlinepayments/sdk/domain/payout_status_output.rb +34 -24
  228. data/lib/onlinepayments/sdk/domain/personal_information.rb +34 -26
  229. data/lib/onlinepayments/sdk/domain/personal_information_token.rb +20 -18
  230. data/lib/onlinepayments/sdk/domain/personal_name.rb +34 -24
  231. data/lib/onlinepayments/sdk/domain/personal_name_token.rb +27 -20
  232. data/lib/onlinepayments/sdk/domain/product_directory.rb +22 -20
  233. data/lib/onlinepayments/sdk/domain/protection_eligibility.rb +27 -20
  234. data/lib/onlinepayments/sdk/domain/range_validator.rb +27 -20
  235. data/lib/onlinepayments/sdk/domain/rate_details.rb +51 -35
  236. data/lib/onlinepayments/sdk/domain/redirect_data.rb +27 -20
  237. data/lib/onlinepayments/sdk/domain/redirect_payment_method_specific_input.rb +139 -88
  238. data/lib/onlinepayments/sdk/domain/redirect_payment_method_specific_output.rb +95 -75
  239. data/lib/onlinepayments/sdk/domain/redirect_payment_product3203_specific_input.rb +20 -16
  240. data/lib/onlinepayments/sdk/domain/redirect_payment_product3302_specific_input.rb +44 -0
  241. data/lib/onlinepayments/sdk/domain/redirect_payment_product3306_specific_input.rb +20 -16
  242. data/lib/onlinepayments/sdk/domain/redirect_payment_product5001_specific_input.rb +20 -16
  243. data/lib/onlinepayments/sdk/domain/redirect_payment_product5300_specific_input.rb +74 -0
  244. data/lib/onlinepayments/sdk/domain/redirect_payment_product5406_specific_input.rb +20 -18
  245. data/lib/onlinepayments/sdk/domain/redirect_payment_product5408_specific_input.rb +27 -22
  246. data/lib/onlinepayments/sdk/domain/redirect_payment_product5410_specific_input.rb +32 -0
  247. data/lib/onlinepayments/sdk/domain/redirect_payment_product809_specific_input.rb +20 -16
  248. data/lib/onlinepayments/sdk/domain/redirect_payment_product840_specific_input.rb +41 -20
  249. data/lib/onlinepayments/sdk/domain/redirection_data.rb +20 -16
  250. data/lib/onlinepayments/sdk/domain/refund_card_method_specific_output.rb +34 -26
  251. data/lib/onlinepayments/sdk/domain/refund_e_wallet_method_specific_output.rb +34 -26
  252. data/lib/onlinepayments/sdk/domain/refund_error_response.rb +37 -31
  253. data/lib/onlinepayments/sdk/domain/refund_mobile_method_specific_output.rb +34 -24
  254. data/lib/onlinepayments/sdk/domain/refund_output.rb +89 -64
  255. data/lib/onlinepayments/sdk/domain/refund_payment_product840_customer_account.rb +34 -24
  256. data/lib/onlinepayments/sdk/domain/refund_payment_product840_specific_output.rb +20 -18
  257. data/lib/onlinepayments/sdk/domain/refund_redirect_method_specific_output.rb +27 -20
  258. data/lib/onlinepayments/sdk/domain/refund_request.rb +43 -24
  259. data/lib/onlinepayments/sdk/domain/refund_response.rb +41 -32
  260. data/lib/onlinepayments/sdk/domain/refunds_response.rb +22 -20
  261. data/lib/onlinepayments/sdk/domain/regular_expression_validator.rb +20 -16
  262. data/lib/onlinepayments/sdk/domain/send_test_request.rb +30 -0
  263. data/lib/onlinepayments/sdk/domain/sepa_direct_debit_payment_method_specific_input.rb +27 -22
  264. data/lib/onlinepayments/sdk/domain/sepa_direct_debit_payment_method_specific_input_base.rb +27 -22
  265. data/lib/onlinepayments/sdk/domain/sepa_direct_debit_payment_method_specific_output.rb +34 -28
  266. data/lib/onlinepayments/sdk/domain/sepa_direct_debit_payment_product771_specific_input.rb +27 -22
  267. data/lib/onlinepayments/sdk/domain/sepa_direct_debit_payment_product771_specific_input_base.rb +27 -22
  268. data/lib/onlinepayments/sdk/domain/session_request.rb +22 -20
  269. data/lib/onlinepayments/sdk/domain/session_response.rb +53 -39
  270. data/lib/onlinepayments/sdk/domain/shipping.rb +76 -52
  271. data/lib/onlinepayments/sdk/domain/shipping_method.rb +41 -28
  272. data/lib/onlinepayments/sdk/domain/shopping_cart.rb +62 -48
  273. data/lib/onlinepayments/sdk/domain/shopping_cart_extension.rb +51 -43
  274. data/lib/onlinepayments/sdk/domain/show_form_data.rb +35 -31
  275. data/lib/onlinepayments/sdk/domain/subsequent_card_payment_method_specific_input.rb +60 -39
  276. data/lib/onlinepayments/sdk/domain/subsequent_payment_product5001_specific_input.rb +20 -16
  277. data/lib/onlinepayments/sdk/domain/subsequent_payment_request.rb +35 -31
  278. data/lib/onlinepayments/sdk/domain/subsequent_payment_response.rb +20 -18
  279. data/lib/onlinepayments/sdk/domain/surcharge.rb +59 -48
  280. data/lib/onlinepayments/sdk/domain/surcharge_calculation_card.rb +27 -20
  281. data/lib/onlinepayments/sdk/domain/surcharge_for_payment_link.rb +20 -16
  282. data/lib/onlinepayments/sdk/domain/surcharge_rate.rb +41 -28
  283. data/lib/onlinepayments/sdk/domain/surcharge_specific_input.rb +27 -22
  284. data/lib/onlinepayments/sdk/domain/surcharge_specific_output.rb +34 -28
  285. data/lib/onlinepayments/sdk/domain/test_connection.rb +20 -16
  286. data/lib/onlinepayments/sdk/domain/three_d_secure.rb +98 -63
  287. data/lib/onlinepayments/sdk/domain/three_d_secure_base.rb +78 -52
  288. data/lib/onlinepayments/sdk/domain/three_d_secure_data.rb +34 -24
  289. data/lib/onlinepayments/sdk/domain/three_d_secure_results.rb +107 -67
  290. data/lib/onlinepayments/sdk/domain/token_card.rb +27 -22
  291. data/lib/onlinepayments/sdk/domain/token_card_data.rb +27 -18
  292. data/lib/onlinepayments/sdk/domain/token_card_specific_input.rb +20 -18
  293. data/lib/onlinepayments/sdk/domain/token_data.rb +27 -18
  294. data/lib/onlinepayments/sdk/domain/token_e_wallet.rb +28 -22
  295. data/lib/onlinepayments/sdk/domain/token_response.rb +58 -45
  296. data/lib/onlinepayments/sdk/domain/transaction.rb +20 -18
  297. data/lib/onlinepayments/sdk/domain/uploadable_file.rb +33 -0
  298. data/lib/onlinepayments/sdk/domain/validate_credentials_request.rb +37 -0
  299. data/lib/onlinepayments/sdk/domain/validate_credentials_response.rb +30 -0
  300. data/lib/onlinepayments/sdk/domain/value_mapping_element.rb +29 -24
  301. data/lib/onlinepayments/sdk/domain.rb +4 -0
  302. data/lib/onlinepayments/sdk/exception_factory.rb +76 -0
  303. data/lib/onlinepayments/sdk/factory.rb +163 -118
  304. data/lib/onlinepayments/sdk/idempotence_exception.rb +23 -19
  305. data/lib/onlinepayments/sdk/json/default_marshaller.rb +34 -0
  306. data/lib/onlinepayments/sdk/json/marshaller.rb +27 -0
  307. data/lib/onlinepayments/sdk/json/marshaller_syntax_exception.rb +9 -0
  308. data/lib/onlinepayments/sdk/json.rb +1 -0
  309. data/lib/onlinepayments/sdk/logging/communicator_logger.rb +18 -16
  310. data/lib/onlinepayments/sdk/logging/log_message_builder.rb +80 -47
  311. data/lib/onlinepayments/sdk/logging/logging_capable.rb +1 -1
  312. data/lib/onlinepayments/sdk/logging/obfuscation/body_obfuscator.rb +113 -0
  313. data/lib/onlinepayments/sdk/logging/obfuscation/header_obfuscator.rb +54 -0
  314. data/lib/onlinepayments/sdk/logging/obfuscation/obfuscation_capable.rb +21 -0
  315. data/lib/onlinepayments/sdk/logging/obfuscation/obfuscation_rule.rb +47 -0
  316. data/lib/onlinepayments/sdk/logging/obfuscation.rb +1 -0
  317. data/lib/onlinepayments/sdk/logging/request_log_message_builder.rb +40 -29
  318. data/lib/onlinepayments/sdk/logging/response_log_message_builder.rb +30 -23
  319. data/lib/onlinepayments/sdk/logging/ruby_communicator_logger.rb +49 -45
  320. data/lib/onlinepayments/sdk/logging/stdout_communicator_logger.rb +20 -23
  321. data/lib/onlinepayments/sdk/logging.rb +1 -10
  322. data/lib/onlinepayments/sdk/merchant/captures/captures_client.rb +57 -0
  323. data/lib/onlinepayments/sdk/merchant/captures.rb +4 -0
  324. data/lib/onlinepayments/sdk/merchant/complete/complete_client.rb +60 -0
  325. data/lib/onlinepayments/sdk/merchant/complete.rb +4 -0
  326. data/lib/onlinepayments/sdk/merchant/hostedcheckout/hosted_checkout_client.rb +72 -71
  327. data/lib/onlinepayments/sdk/merchant/hostedcheckout.rb +4 -0
  328. data/lib/onlinepayments/sdk/merchant/hostedtokenization/hosted_tokenization_client.rb +72 -71
  329. data/lib/onlinepayments/sdk/merchant/hostedtokenization.rb +4 -0
  330. data/lib/onlinepayments/sdk/merchant/mandates/mandates_client.rb +165 -164
  331. data/lib/onlinepayments/sdk/merchant/mandates.rb +4 -0
  332. data/lib/onlinepayments/sdk/merchant/merchant_client.rb +116 -64
  333. data/lib/onlinepayments/sdk/merchant/paymentlinks/payment_links_client.rb +102 -101
  334. data/lib/onlinepayments/sdk/merchant/paymentlinks.rb +4 -0
  335. data/lib/onlinepayments/sdk/merchant/payments/payments_client.rb +233 -332
  336. data/lib/onlinepayments/sdk/merchant/payments.rb +4 -0
  337. data/lib/onlinepayments/sdk/merchant/payouts/payouts_client.rb +73 -71
  338. data/lib/onlinepayments/sdk/merchant/payouts.rb +4 -0
  339. data/lib/onlinepayments/sdk/merchant/privacypolicy/get_privacy_policy_params.rb +32 -0
  340. data/lib/onlinepayments/sdk/merchant/privacypolicy/privacy_policy_client.rb +54 -0
  341. data/lib/onlinepayments/sdk/merchant/privacypolicy.rb +4 -0
  342. data/lib/onlinepayments/sdk/merchant/productgroups/get_product_group_params.rb +50 -47
  343. data/lib/onlinepayments/sdk/merchant/productgroups/get_product_groups_params.rb +50 -47
  344. data/lib/onlinepayments/sdk/merchant/productgroups/product_groups_client.rb +72 -72
  345. data/lib/onlinepayments/sdk/merchant/productgroups.rb +4 -0
  346. data/lib/onlinepayments/sdk/merchant/products/get_payment_product_networks_params.rb +27 -25
  347. data/lib/onlinepayments/sdk/merchant/products/get_payment_product_params.rb +50 -47
  348. data/lib/onlinepayments/sdk/merchant/products/get_payment_products_params.rb +50 -47
  349. data/lib/onlinepayments/sdk/merchant/products/get_product_directory_params.rb +21 -19
  350. data/lib/onlinepayments/sdk/merchant/products/products_client.rb +134 -136
  351. data/lib/onlinepayments/sdk/merchant/products.rb +4 -0
  352. data/lib/onlinepayments/sdk/merchant/refunds/refunds_client.rb +57 -0
  353. data/lib/onlinepayments/sdk/merchant/refunds.rb +4 -0
  354. data/lib/onlinepayments/sdk/merchant/services/services_client.rb +124 -155
  355. data/lib/onlinepayments/sdk/merchant/services.rb +4 -0
  356. data/lib/onlinepayments/sdk/merchant/sessions/sessions_client.rb +42 -41
  357. data/lib/onlinepayments/sdk/merchant/sessions.rb +4 -0
  358. data/lib/onlinepayments/sdk/merchant/tokens/tokens_client.rb +101 -100
  359. data/lib/onlinepayments/sdk/merchant/tokens.rb +4 -0
  360. data/lib/onlinepayments/sdk/merchant/webhooks/webhooks_client.rb +83 -0
  361. data/lib/onlinepayments/sdk/merchant/webhooks.rb +4 -0
  362. data/lib/onlinepayments/sdk/merchant.rb +4 -0
  363. data/lib/onlinepayments/sdk/platform_exception.rb +19 -0
  364. data/lib/onlinepayments/sdk/proxy_configuration.rb +60 -60
  365. data/lib/onlinepayments/sdk/reference_exception.rb +14 -9
  366. data/lib/onlinepayments/sdk/validation_exception.rb +14 -9
  367. data/lib/onlinepayments/sdk/webhooks/api_version_mismatch_exception.rb +17 -15
  368. data/lib/onlinepayments/sdk/webhooks/in_memory_secret_key_store.rb +46 -43
  369. data/lib/onlinepayments/sdk/webhooks/secret_key_not_available_exception.rb +16 -12
  370. data/lib/onlinepayments/sdk/webhooks/secret_key_store.rb +13 -11
  371. data/lib/onlinepayments/sdk/webhooks/signature_validation_exception.rb +15 -14
  372. data/lib/onlinepayments/sdk/webhooks/signature_validator.rb +81 -0
  373. data/lib/onlinepayments/sdk/webhooks/webhooks_event.rb +84 -53
  374. data/lib/onlinepayments/sdk/webhooks/webhooks_helper.rb +28 -90
  375. data/lib/onlinepayments/sdk/webhooks.rb +1 -11
  376. data/lib/onlinepayments/sdk.rb +4 -26
  377. data/onlinepayments-sdk-ruby.gemspec +3 -2
  378. metadata +89 -35
  379. data/lib/onlinepayments/sdk/authenticator.rb +0 -16
  380. data/lib/onlinepayments/sdk/communication_exception.rb +0 -16
  381. data/lib/onlinepayments/sdk/connection.rb +0 -41
  382. data/lib/onlinepayments/sdk/data_object.rb +0 -31
  383. data/lib/onlinepayments/sdk/defaultimpl/authorization_type.rb +0 -24
  384. data/lib/onlinepayments/sdk/defaultimpl/default_authenticator.rb +0 -108
  385. data/lib/onlinepayments/sdk/defaultimpl/default_connection.rb +0 -365
  386. data/lib/onlinepayments/sdk/defaultimpl/default_marshaller.rb +0 -32
  387. data/lib/onlinepayments/sdk/defaultimpl.rb +0 -6
  388. data/lib/onlinepayments/sdk/endpoint_configuration.rb +0 -127
  389. data/lib/onlinepayments/sdk/exceptions.rb +0 -8
  390. data/lib/onlinepayments/sdk/logging/logging_util.rb +0 -286
  391. data/lib/onlinepayments/sdk/marshaller.rb +0 -24
  392. data/lib/onlinepayments/sdk/marshaller_syntax_exception.rb +0 -6
  393. data/lib/onlinepayments/sdk/merchant/services/get_privacy_policy_params.rb +0 -30
  394. data/lib/onlinepayments/sdk/meta_data_provider.rb +0 -150
  395. data/lib/onlinepayments/sdk/modules.rb +0 -62
  396. data/lib/onlinepayments/sdk/multipart_form_data_object.rb +0 -44
  397. data/lib/onlinepayments/sdk/multipart_form_data_request.rb +0 -9
  398. data/lib/onlinepayments/sdk/not_found_exception.rb +0 -16
  399. data/lib/onlinepayments/sdk/param_request.rb +0 -11
  400. data/lib/onlinepayments/sdk/payment_platform_exception.rb +0 -15
  401. data/lib/onlinepayments/sdk/pooled_connection.rb +0 -21
  402. data/lib/onlinepayments/sdk/request_header.rb +0 -50
  403. data/lib/onlinepayments/sdk/request_param.rb +0 -23
  404. data/lib/onlinepayments/sdk/response_exception.rb +0 -47
  405. data/lib/onlinepayments/sdk/response_header.rb +0 -42
  406. data/lib/onlinepayments/sdk/uploadable_file.rb +0 -30
  407. data/lib/onlinepayments/sdk/webhooks/webhooks.rb +0 -22
  408. data/lib/onlinepayments/sdk/webhooks/webhooks_helper_builder.rb +0 -25
@@ -0,0 +1,33 @@
1
+ module OnlinePayments
2
+ module SDK
3
+ module Domain
4
+ # A file that can be uploaded
5
+ #
6
+ # The allowed forms of content are defined by the Connection implementation
7
+ # The default implementation supports file paths and IO objects.
8
+ #
9
+ # @attr_reader [String] file_name The name of the file.
10
+ # @attr_reader [String, IO] content The file's content.
11
+ # @attr_reader [String] content_type The file's content type.
12
+ # @attr_reader [Integer] content_length The file's content length, or -1 if not known.
13
+ class UploadableFile
14
+
15
+ def initialize(file_name, content, content_type, content_length = -1)
16
+ raise ArgumentError.new("file_name is required") if file_name.nil? or !file_name.strip
17
+ raise ArgumentError.new("content is required") if content.nil?
18
+ raise ArgumentError.new("content_type is required") if content_type.nil? or !content_type.strip
19
+
20
+ @file_name = file_name
21
+ @content = content
22
+ @content_type = content_type
23
+ @content_length = [content_length, -1].max
24
+ end
25
+
26
+ attr_reader :file_name
27
+ attr_reader :content
28
+ attr_reader :content_type
29
+ attr_reader :content_length
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,37 @@
1
+ #
2
+ # This file was automatically generated.
3
+ #
4
+ require 'onlinepayments/sdk/domain/data_object'
5
+
6
+ module OnlinePayments
7
+ module SDK
8
+ module Domain
9
+ # @attr [String] key
10
+ # @attr [String] secret
11
+ class ValidateCredentialsRequest < OnlinePayments::SDK::Domain::DataObject
12
+
13
+ attr_accessor :key
14
+
15
+ attr_accessor :secret
16
+
17
+ # @return (Hash)
18
+ def to_h
19
+ hash = super
20
+ hash['key'] = @key unless @key.nil?
21
+ hash['secret'] = @secret unless @secret.nil?
22
+ hash
23
+ end
24
+
25
+ def from_hash(hash)
26
+ super
27
+ if hash.has_key? 'key'
28
+ @key = hash['key']
29
+ end
30
+ if hash.has_key? 'secret'
31
+ @secret = hash['secret']
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,30 @@
1
+ #
2
+ # This file was automatically generated.
3
+ #
4
+ require 'onlinepayments/sdk/domain/data_object'
5
+
6
+ module OnlinePayments
7
+ module SDK
8
+ module Domain
9
+ # @attr [String] result
10
+ class ValidateCredentialsResponse < OnlinePayments::SDK::Domain::DataObject
11
+
12
+ attr_accessor :result
13
+
14
+ # @return (Hash)
15
+ def to_h
16
+ hash = super
17
+ hash['result'] = @result unless @result.nil?
18
+ hash
19
+ end
20
+
21
+ def from_hash(hash)
22
+ super
23
+ if hash.has_key? 'result'
24
+ @result = hash['result']
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -1,36 +1,41 @@
1
1
  #
2
- # This class was auto-generated.
2
+ # This file was automatically generated.
3
3
  #
4
- require 'onlinepayments/sdk/data_object'
4
+ require 'onlinepayments/sdk/domain/data_object'
5
5
  require 'onlinepayments/sdk/domain/payment_product_field_display_element'
6
6
 
7
- module OnlinePayments::SDK
8
- module Domain
7
+ module OnlinePayments
8
+ module SDK
9
+ module Domain
10
+ # @attr [Array<OnlinePayments::SDK::Domain::PaymentProductFieldDisplayElement>] display_elements
11
+ # @attr [String] value
12
+ class ValueMappingElement < OnlinePayments::SDK::Domain::DataObject
9
13
 
10
- # @attr [Array<OnlinePayments::SDK::Domain::PaymentProductFieldDisplayElement>] display_elements
11
- # @attr [String] value
12
- class ValueMappingElement < OnlinePayments::SDK::DataObject
13
- attr_accessor :display_elements
14
- attr_accessor :value
14
+ attr_accessor :display_elements
15
15
 
16
- # @return (Hash)
17
- def to_h
18
- hash = super
19
- hash['displayElements'] = @display_elements.collect(&:to_h) if @display_elements
20
- hash['value'] = @value unless @value.nil?
21
- hash
22
- end
16
+ attr_accessor :value
17
+
18
+ # @return (Hash)
19
+ def to_h
20
+ hash = super
21
+ hash['displayElements'] = @display_elements.collect{|val| val.to_h} unless @display_elements.nil?
22
+ hash['value'] = @value unless @value.nil?
23
+ hash
24
+ end
23
25
 
24
- def from_hash(hash)
25
- super
26
- if hash.key? 'displayElements'
27
- raise TypeError, "value '%s' is not an Array" % [hash['displayElements']] unless hash['displayElements'].is_a? Array
28
- @display_elements = []
29
- hash['displayElements'].each do |e|
30
- @display_elements << OnlinePayments::SDK::Domain::PaymentProductFieldDisplayElement.new_from_hash(e)
26
+ def from_hash(hash)
27
+ super
28
+ if hash.has_key? 'displayElements'
29
+ raise TypeError, "value '%s' is not an Array" % [hash['displayElements']] unless hash['displayElements'].is_a? Array
30
+ @display_elements = []
31
+ hash['displayElements'].each do |e|
32
+ @display_elements << OnlinePayments::SDK::Domain::PaymentProductFieldDisplayElement.new_from_hash(e)
33
+ end
34
+ end
35
+ if hash.has_key? 'value'
36
+ @value = hash['value']
31
37
  end
32
38
  end
33
- @value = hash['value'] if hash.key? 'value'
34
39
  end
35
40
  end
36
41
  end
@@ -0,0 +1,4 @@
1
+ #
2
+ # This file was automatically generated.
3
+ #
4
+ Dir[File.join(__dir__, 'domain', '*.rb')].each { |f| require f }
@@ -0,0 +1,76 @@
1
+ #
2
+ # This file was automatically generated.
3
+ #
4
+ require_relative 'api_exception'
5
+ require_relative 'authorization_exception'
6
+ require_relative 'declined_payment_exception'
7
+ require_relative 'declined_payout_exception'
8
+ require_relative 'declined_refund_exception'
9
+ require_relative 'idempotence_exception'
10
+ require_relative 'platform_exception'
11
+ require_relative 'reference_exception'
12
+ require_relative 'validation_exception'
13
+
14
+ require 'onlinepayments/sdk/domain/error_response'
15
+ require 'onlinepayments/sdk/domain/payment_error_response'
16
+ require 'onlinepayments/sdk/domain/payout_error_response'
17
+ require 'onlinepayments/sdk/domain/refund_error_response'
18
+
19
+ module OnlinePayments
20
+ module SDK
21
+ def self.create_exception(status_code, response_body, error_object, context)
22
+ if error_object.is_a?(OnlinePayments::SDK::Domain::PaymentErrorResponse)
23
+ return DeclinedPaymentException.new(status_code, response_body, error_object) unless error_object.payment_result.nil?
24
+ return create_exception_from_response_fields(status_code, response_body, error_object.error_id, error_object.errors, context)
25
+ end
26
+ if error_object.is_a?(OnlinePayments::SDK::Domain::PayoutErrorResponse)
27
+ return DeclinedPayoutException.new(status_code, response_body, error_object) unless error_object.payout_result.nil?
28
+ return create_exception_from_response_fields(status_code, response_body, error_object.error_id, error_object.errors, context)
29
+ end
30
+ if error_object.is_a?(OnlinePayments::SDK::Domain::RefundErrorResponse)
31
+ return DeclinedRefundException.new(status_code, response_body, error_object) unless error_object.refund_result.nil?
32
+ return create_exception_from_response_fields(status_code, response_body, error_object.error_id, error_object.errors, context)
33
+ end
34
+ raise ArgumentError.new("unsupported error object type: " + error_object.class.name) unless error_object.is_a?(OnlinePayments::SDK::Domain::ErrorResponse)
35
+ create_exception_from_response_fields(status_code, response_body, error_object.error_id, error_object.errors, context)
36
+ end
37
+
38
+ private
39
+
40
+ def self.create_exception_from_response_fields(status_code, response_body, error_id, errors, context)
41
+ case status_code
42
+ when 400
43
+ return ValidationException.new(status_code, response_body, error_id, errors)
44
+ when 403
45
+ return AuthorizationException.new(status_code, response_body, error_id, errors)
46
+ when 404
47
+ return ReferenceException.new(status_code, response_body, error_id, errors)
48
+ when 409
49
+ if is_idempotence_error(errors, context)
50
+ idempotence_key = context.idempotence_key
51
+ idempotence_request_timestamp = context.idempotence_request_timestamp
52
+ return IdempotenceException.new(status_code, response_body, error_id, errors,
53
+ idempotence_key, idempotence_request_timestamp)
54
+ else
55
+ return ReferenceException.new(status_code, response_body, error_id, errors)
56
+ end
57
+ when 410
58
+ return ReferenceException.new(status_code, response_body, error_id, errors)
59
+ when 500
60
+ return PlatformException.new(status_code, response_body, error_id, errors)
61
+ when 502
62
+ return PlatformException.new(status_code, response_body, error_id, errors)
63
+ when 503
64
+ return PlatformException.new(status_code, response_body, error_id, errors)
65
+ else
66
+ return ApiException.new(status_code, response_body, error_id, errors)
67
+ end
68
+ end
69
+
70
+ def self.is_idempotence_error(errors, context)
71
+ !context&.idempotence_key.nil? &&
72
+ errors&.length == 1 &&
73
+ errors[0]&.error_code == '1409'
74
+ end
75
+ end
76
+ end
@@ -1,135 +1,180 @@
1
1
  require 'yaml'
2
+ require 'onlinepayments/sdk/client'
3
+ require 'onlinepayments/sdk/communicator'
4
+ require 'onlinepayments/sdk/communicator_configuration'
5
+ require 'onlinepayments/sdk/authentication/authorization_type'
6
+ require 'onlinepayments/sdk/authentication/v1hmac_authenticator'
7
+ require 'onlinepayments/sdk/communication/default_connection'
8
+ require 'onlinepayments/sdk/communication/metadata_provider'
9
+ require 'onlinepayments/sdk/json/default_marshaller'
2
10
 
3
- module OnlinePayments::SDK
11
+ module OnlinePayments
12
+ module SDK
13
+ # Convenience class that constructs instances of several other classes in the SDK.
14
+ # Provides methods to construct
15
+ # {OnlinePayments::SDK::CommunicatorConfiguration}, {OnlinePayments::SDK::Communicator} and {OnlinePayments::SDK::Client} instances.
16
+ class Factory
4
17
 
5
- # Convenience class that constructs instances of several other classes in the SDK.
6
- # Provides methods to construct
7
- # {OnlinePayments::SDK::CommunicatorConfiguration}, {OnlinePayments::SDK::Communicator} and {OnlinePayments::SDK::Client} instances.
8
- class Factory
18
+ # Creates and returns a {OnlinePayments::SDK::CommunicatorConfiguration} based on the configuration in the file
19
+ # located at _configuration_file_name_.
20
+ #
21
+ # @param configuration_file_name [String] Path to the configuration file to use, should be in YAML format.
22
+ # @param api_key_id [String] Key id for the Online Payments platform.
23
+ # @param secret_api_key [String] Secret key used for authentication to the Online Payments platform.
24
+ # @return [OnlinePayments::SDK::CommunicatorConfiguration] The created communicator configuration
25
+ def self.create_configuration(configuration_file_name, api_key_id, secret_api_key)
26
+ properties = YAML::load_file(configuration_file_name)
27
+ CommunicatorConfiguration.new(properties: properties,
28
+ api_key_id: api_key_id,
29
+ secret_api_key: secret_api_key)
30
+ end
9
31
 
10
- # Creates and returns a {OnlinePayments::SDK::CommunicatorConfiguration} based on the configuration in the file located at _configuration_file_name_.
11
- #
12
- # @param config_file_name [String] Path to the configuration file to use, should be in YAML format.
13
- # @param api_key_id [String] Key id for the OnlinePayments service.
14
- # @param secret_api_key [String] Secret key used for authentication to the OnlinePayments service.
15
- # @return [OnlinePayments::SDK::CommunicatorConfiguration] The created communicator configuration
16
- def self.create_configuration(config_file_name, api_key_id, secret_api_key)
17
- properties = YAML::load_file(config_file_name)
18
- CommunicatorConfiguration.new(properties: properties,
19
- api_key_id: api_key_id,
20
- secret_api_key: secret_api_key)
21
- end
32
+ # Creates and returns a {OnlinePayments::SDK::Communicator} from a {OnlinePayments::SDK::CommunicatorConfiguration},
33
+ # a {OnlinePayments::SDK::Communication::MetadataProvider}, a {OnlinePayments::SDK::Communication::Connection},
34
+ # an {OnlinePayments::SDK::Authentication::Authenticator} and a {OnlinePayments::SDK::JSON::Marshaller}.
35
+ #
36
+ # @param configuration [OnlinePayments::SDK::CommunicatorConfiguration] configuration settings to be used by the client.
37
+ # @param metadata_provider [OnlinePayments::SDK::Communication::MetadataProvider] stores the metadata for the communicating client.
38
+ # @param connection [OnlinePayments::SDK::Communication::Connection] connection that can be used to communicate with the Online Payments platform.
39
+ # @param authenticator [OnlinePayments::SDK::Authentication::Authenticator] authenticator that can authenticate messages sent to the Online Payments platform.
40
+ # @param marshaller [OnlinePayments::SDK::JSON::Marshaller] marshaller that can marshal and unmarshal objects to and from JSON.
41
+ # @return [OnlinePayments::SDK::Communicator] The created communicator
42
+ def self.create_communicator_from_configuration(configuration, metadata_provider: nil,
43
+ connection: nil, authenticator: nil, marshaller: nil)
44
+ unless metadata_provider
45
+ metadata_provider = Communication::MetadataProvider.new(configuration.integrator,
46
+ shopping_cart_extension: configuration.shopping_cart_extension)
47
+ end
48
+ unless connection
49
+ connection = Communication::DefaultConnection.new({ connect_timeout: configuration.connect_timeout,
50
+ socket_timeout: configuration.socket_timeout,
51
+ max_connections: configuration.max_connections,
52
+ proxy_configuration: configuration.proxy_configuration })
53
+ end
54
+ unless authenticator
55
+ authenticator = get_authenticator(configuration)
56
+ end
57
+ unless marshaller
58
+ marshaller = JSON::DefaultMarshaller.instance
59
+ end
60
+ Communicator.new(configuration.api_endpoint, connection, authenticator, metadata_provider, marshaller)
61
+ end
22
62
 
23
- # Creates and returns an {OnlinePayments::SDK::Communicator} that can be used for communication with the OnlinePayments service.
24
- #
25
- # @param configuration [OnlinePayments::SDK::CommunicatorConfiguration] contains configuration settings to be used by the client.
26
- # @param meta_data_provider [OnlinePayments::SDK::MetaDataProvider,nil] stores the metadata for the communicating client.
27
- # @param connection [OnlinePayments::SDK::Connection,nil] connection that can be used to communicate with the Online Payments platform.
28
- # @param authenticator [OnlinePayments::SDK::Authenticator,nil] authenticator that can authenticate messages sent to the Online Payments platform.
29
- # @param marshaller [OnlinePayments::SDK::Marshaller,nil] marshaller that marshalls and unmarshalls messages sent to the Online Payments platform.
30
- # @return [OnlinePayments::SDK::Communicator] The created communicator
31
- def self.create_communicator_from_configuration(configuration, meta_data_provider: nil, connection: nil, authenticator: nil, marshaller: DefaultImpl::DefaultMarshaller.INSTANCE)
32
- meta_data_provider ||= MetaDataProvider.new(configuration.integrator, shopping_cart_extension: configuration.shopping_cart_extension)
33
- connection ||= DefaultImpl::DefaultConnection.new({ connect_timeout: configuration.connect_timeout,
34
- socket_timeout: configuration.socket_timeout,
35
- max_connections: configuration.max_connections,
36
- proxy_configuration: configuration.proxy_configuration })
37
- authenticator ||= DefaultImpl::DefaultAuthenticator.new(configuration.api_key_id,
38
- configuration.secret_api_key,
39
- configuration.authorization_type)
40
- Communicator.new(configuration.api_endpoint, connection, authenticator, meta_data_provider, marshaller)
41
- end
63
+ # Creates and returns a {OnlinePayments::SDK::Communicator} from a file containing the communicator configuration, api_key_id, secret_api_key,
64
+ # a {OnlinePayments::SDK::Communication::MetadataProvider}, a {OnlinePayments::SDK::Communication::Connection}.
65
+ # an {OnlinePayments::SDK::Authentication::Authenticator} and a {OnlinePayments::SDK::JSON::Marshaller}.
66
+ #
67
+ # @param configuration_file_name [String] Path to the configuration file to use, should be in YAML format.
68
+ # @param api_key_id [String] Key id for the Online Payments platform.
69
+ # @param secret_api_key [String] Secret key used for authentication to the Online Payments platform.
70
+ # @param metadata_provider [OnlinePayments::SDK::Communication::MetadataProvider] stores the metadata for the communicating client.
71
+ # @param connection [OnlinePayments::SDK::Communication::Connection] connection that can be used to communicate with the Online Payments platform.
72
+ # @param authenticator [OnlinePayments::SDK::Authentication::Authenticator] authenticator that can authenticate messages sent to the Online Payments platform.
73
+ # @param marshaller [OnlinePayments::SDK::JSON::Marshaller] marshaller that can marshal and unmarshal objects to and from JSON.
74
+ # @return [OnlinePayments::SDK::Communicator] The created communicator
75
+ def self.create_communicator_from_file(configuration_file_name, api_key_id, secret_api_key,
76
+ metadata_provider: nil, connection: nil, authenticator: nil, marshaller: nil)
77
+ configuration = create_configuration(configuration_file_name, api_key_id, secret_api_key)
78
+ create_communicator_from_configuration(configuration, metadata_provider: metadata_provider, connection: connection,
79
+ authenticator: authenticator, marshaller: marshaller)
80
+ end
42
81
 
43
- # Creates and returns an {OnlinePayments::SDK::Communicator} that is used for communication with the OnlinePayments service.
44
- #
45
- # @param config_file_name [String] Path to the configuration file to use, should be in YAML format.
46
- # @param api_key_id [String] Key id for the OnlinePayments service.
47
- # @param secret_api_key [String] Secret key used for authentication to the OnlinePayments service.
48
- # @param meta_data_provider [OnlinePayments::SDK::MetaDataProvider,nil] stores the metadata for the communicating client.
49
- # @param connection [OnlinePayments::SDK::Connection,nil] connection that can be used to communicate with the Online Payments platform.
50
- # @param authenticator [OnlinePayments::SDK::Authenticator,nil] authenticator that can authenticate messages sent to the Online Payments platform.
51
- # @return [OnlinePayments::SDK::Communicator] The created communicator
52
- def self.create_communicator_from_file(config_file_name, api_key_id, secret_api_key,
53
- meta_data_provider: nil, connection: nil, authenticator: nil,
54
- marshaller: DefaultImpl::DefaultMarshaller.INSTANCE)
55
- configuration = create_configuration(config_file_name, api_key_id, secret_api_key)
56
- create_communicator_from_configuration(configuration, meta_data_provider: meta_data_provider, connection: connection,
57
- authenticator: authenticator, marshaller: marshaller)
58
- end
82
+ # Creates and returns an {OnlinePayments::SDK::Client} that provides the a high-level interface with the Online Payments platform.
83
+ # If a code block is given, the created client is returned to the code block and closed afterwards.
84
+ #
85
+ # @example Providing a code block
86
+ # Factory.create_client_from_configuration(configuration) do |client|
87
+ # # use client as needed
88
+ # end
89
+ # # client is closed here
90
+ #
91
+ # @param configuration [OnlinePayments::SDK::CommunicatorConfiguration] contains configuration settings to be used by the client.
92
+ # @param metadata_provider [OnlinePayments::SDK::Communication::MetadataProvider] stores the metadata for the communicating client.
93
+ # @param connection [OnlinePayments::SDK::Communication::Connection] connection that can be used to communicate with the Online Payments platform.
94
+ # @param authenticator [OnlinePayments::SDK::Authentication::Authenticator] authenticator that can authenticate messages sent to the Online Payments platform.
95
+ # @param marshaller [OnlinePayments::SDK::JSON::Marshaller] marshaller that can marshal and unmarshal objects to and from JSON.
96
+ # @return [OnlinePayments::SDK::Client] The created client
97
+ def self.create_client_from_configuration(configuration, metadata_provider: nil, connection: nil, authenticator: nil, marshaller: nil)
98
+ communicator = create_communicator_from_configuration(configuration, metadata_provider: metadata_provider, connection: connection,
99
+ authenticator: authenticator, marshaller: marshaller)
100
+ client = Client.new(communicator)
101
+ if block_given?
102
+ begin
103
+ yield client
104
+ ensure
105
+ client.close
106
+ end
107
+ else
108
+ return client
109
+ end
110
+ end
59
111
 
60
- # Creates and returns an {OnlinePayments::SDK::Client} that provides the a high-level interface with the OnlinePayments service.
61
- # If a code block is given, the created client is returned to the code block and closed afterwards.
62
- #
63
- # @example Providing a code block
64
- # Factory.create_client_from_configuration(configuration) do |client|
65
- # client.merchant(merchant_id).services.testconnection
66
- # end
67
- # # client is closed here
68
- #
69
- # @param configuration [OnlinePayments::SDK::CommunicatorConfiguration] contains configuration settings to be used by the client.
70
- # @return [OnlinePayments::SDK::Client] The created client
71
- def self.create_client_from_configuration(configuration)
72
- communicator = create_communicator_from_configuration(configuration)
73
- client = Client.new(communicator)
74
- if block_given?
75
- begin
76
- yield client
77
- ensure
78
- client.close
112
+ # Creates and returns an {OnlinePayments::SDK::Client} that provides the a high-level interface with the Online Payments platform.
113
+ # If a code block is given, the created client is returned to the code block and closed afterwards.
114
+ #
115
+ # @example Providing a code block
116
+ # Factory.create_client_from_communicator(communicator) do |client|
117
+ # # use client as needed
118
+ # end
119
+ # # client is closed here
120
+ #
121
+ # @param communicator [OnlinePayments::SDK::Communicator] provides network communication service for the Client
122
+ # @return [OnlinePayments::SDK::Client] The created client
123
+ def self.create_client_from_communicator(communicator)
124
+ client = Client.new(communicator)
125
+ if block_given?
126
+ begin
127
+ yield client
128
+ ensure
129
+ client.close
130
+ end
131
+ else
132
+ return client
79
133
  end
80
- else
81
- return client
82
134
  end
83
- end
84
135
 
85
- # Creates and returns an {OnlinePayments::SDK::Client} that provides the a high-level interface with the OnlinePayments service.
86
- # If a code block is given, the created client is returned to the code block and closed afterwards.
87
- #
88
- # @example Providing a code block
89
- # Factory.create_client_from_communicator(communicator) do |client|
90
- # client.merchant(merchant_id).services.testconnection
91
- # end
92
- # # client is closed here
93
- #
94
- # @param communicator [OnlinePayments::SDK::Communicator] provides network communication service for the Client
95
- # @return [OnlinePayments::SDK::Client] The created client
96
- def self.create_client_from_communicator(communicator)
97
- client = Client.new(communicator)
98
- if block_given?
99
- begin
100
- yield client
101
- ensure
102
- client.close
136
+ # Creates and returns an {OnlinePayments::SDK::Client} that provides the a high-level interface with the Online Payments platform.
137
+ # If a code block is given, the created client is returned to the code block and closed afterwards.
138
+ #
139
+ # @example Providing a code block
140
+ # Factory.create_client_from_file(configuration_file_name, api_key_id, secret_api_key) do |client|
141
+ # # use client as needed
142
+ # end
143
+ # # client is closed here
144
+ #
145
+ # @param configuration_file_name [String] Path to the configuration file to use, should be in YAML format.
146
+ # @param api_key_id [String] Key id for the Online Payments platform.
147
+ # @param secret_api_key [String] Secret key used for authentication to the Online Payments platform.
148
+ # @param metadata_provider [OnlinePayments::SDK::Communication::MetadataProvider] stores the metadata for the communicating client.
149
+ # @param connection [OnlinePayments::SDK::Communication::Connection] connection that can be used to communicate with the Online Payments platform.
150
+ # @param authenticator [OnlinePayments::SDK::Authentication::Authenticator] authenticator that can authenticate messages sent to the Online Payments platform.
151
+ # @param marshaller [OnlinePayments::SDK::JSON::Marshaller] marshaller that can marshal and unmarshal objects to and from JSON.
152
+ # @return [OnlinePayments::SDK::Client] The created client
153
+ def self.create_client_from_file(configuration_file_name, api_key_id, secret_api_key,
154
+ metadata_provider: nil, connection: nil, authenticator: nil, marshaller: nil)
155
+ communicator = create_communicator_from_file(configuration_file_name, api_key_id, secret_api_key,
156
+ metadata_provider: metadata_provider, connection: connection,
157
+ authenticator: authenticator, marshaller: marshaller)
158
+ client = Client.new(communicator)
159
+ if block_given?
160
+ begin
161
+ yield client
162
+ ensure
163
+ client.close
164
+ end
165
+ else
166
+ return client
103
167
  end
104
- else
105
- return client
106
168
  end
107
- end
108
169
 
109
- # Creates and returns an {OnlinePayments::SDK::Client} that provides the a high-level interface with the OnlinePayments service.
110
- # If a code block is given, the created client is returned to the code block and closed afterwards.
111
- #
112
- # @example Providing a code block
113
- # Factory.create_client_from_file(config_file_name, api_key_id, secret_api_key) do |client|
114
- # client.merchant(merchant_id).services.testconnection
115
- # end
116
- # # client is closed here
117
- #
118
- # @param config_file_name [String] Path to the configuration file to use, should be in YAML format.
119
- # @param api_key_id [String] Key id for the OnlinePayments service.
120
- # @param secret_api_key [String] Secret key used for authentication to the OnlinePayments service.
121
- # @return [OnlinePayments::SDK::Client] The created client
122
- def self.create_client_from_file(config_file_name, api_key_id, secret_api_key)
123
- communicator = create_communicator_from_file(config_file_name, api_key_id, secret_api_key)
124
- client = Client.new(communicator)
125
- if block_given?
126
- begin
127
- yield client
128
- ensure
129
- client.close
170
+ private
171
+
172
+ # @param configuration [OnlinePayments::SDK::CommunicatorConfiguration]
173
+ def self.get_authenticator(configuration)
174
+ if configuration.authorization_type == Authentication::AuthorizationType::V1HMAC
175
+ return Authentication::V1HmacAuthenticator.new(configuration)
130
176
  end
131
- else
132
- return client
177
+ raise RuntimeError.new("Unknown authorizationType #{configuration.authorization_type}")
133
178
  end
134
179
  end
135
180
  end
@@ -1,24 +1,28 @@
1
- module OnlinePayments::SDK
1
+ #
2
+ # This file was automatically generated.
3
+ #
4
+ require_relative 'api_exception'
2
5
 
3
- # This exception is thrown when a response from the Online Payments platform indicates
4
- # a request with the same _idempotence_key_ was received earlier.
5
- # The _idempotence_request_timestamp_ indicates the time when the first request with this _idempotence_key_ arrived.
6
- #
7
- # @attr_reader [String] idempotence_key The idempotence key used in the request.
8
- # @attr_reader [Integer] idempotence_request_timestamp A timestamp indicating the arrival time of the request that conflicts with the request just sent.
9
- class IdempotenceException < ApiException
6
+ module OnlinePayments
7
+ module SDK
8
+ # Represents an error response from the payment platform when an idempotent request failed because the first request has not finished yet.
9
+ # The _idempotence_request_timestamp_ indicates the time when the first request with this _idempotence_key_ arrived.
10
+ #
11
+ # @attr_reader [String] idempotence_key The idempotence key used in the request.
12
+ # @attr_reader [Integer] idempotence_request_timestamp A timestamp indicating the arrival time of the request that conflicts with the request just sent.
13
+ class IdempotenceException < ApiException
10
14
 
11
- # Create a new IdempotenceException
12
- # @see ApiException#initialize
13
- def initialize(status_code, response_body, error_id, errors, idempotence_key,
14
- idempotence_request_timestamp,
15
- message = 'the Online Payments platform returned a duplicate request error response')
16
- super(status_code, response_body, error_id, errors, message)
17
- @idempotence_key = idempotence_key
18
- @idempotence_request_timestamp = idempotence_request_timestamp
19
- end
15
+ # Create a new IdempotenceException.
16
+ # @see ApiException#initialize
17
+ def initialize(status_code, response_body, error_id, errors, idempotence_key, idempotence_request_timestamp,
18
+ message='the payment platform returned a duplicate request error response')
19
+ super(status_code, response_body, error_id, errors, message)
20
+ @idempotence_key = idempotence_key
21
+ @idempotence_request_timestamp = idempotence_request_timestamp
22
+ end
20
23
 
21
- attr_reader :idempotence_key
22
- attr_reader :idempotence_request_timestamp
24
+ attr_reader :idempotence_key
25
+ attr_reader :idempotence_request_timestamp
26
+ end
23
27
  end
24
28
  end
@@ -0,0 +1,34 @@
1
+ require 'json'
2
+ require 'singleton'
3
+ require 'onlinepayments/sdk/json/marshaller'
4
+
5
+ module OnlinePayments
6
+ module SDK
7
+ module JSON
8
+ # Marshals objects to and from JSON format.
9
+ # Currently supports marshalling and unmarshalling of classes that support class.new_from_hash and class#to_h
10
+ class DefaultMarshaller < Marshaller
11
+ include Singleton
12
+
13
+ # Marshals the _request_object_ to a JSON string using request_object#to_h
14
+ def marshal(request_object)
15
+ ::JSON.pretty_generate(request_object.to_h)
16
+ end
17
+
18
+ # Unmarshals a JSON string into an object of type _klass_ using klass.new_from_hash
19
+ def unmarshal(json_string, klass)
20
+ if json_string.nil?
21
+ return nil
22
+ elsif json_string.length == 0
23
+ return ''
24
+ end
25
+ if klass.respond_to?(:new_from_hash)
26
+ klass.new_from_hash(::JSON.load(json_string))
27
+ else
28
+ raise NotImplementedError
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end