onlinepayments-sdk-python3 7.4.1__py3-none-any.whl

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 (475) hide show
  1. onlinepayments/__init__.py +0 -0
  2. onlinepayments/sdk/__init__.py +4 -0
  3. onlinepayments/sdk/api_exception.py +60 -0
  4. onlinepayments/sdk/api_resource.py +57 -0
  5. onlinepayments/sdk/authentication/__init__.py +0 -0
  6. onlinepayments/sdk/authentication/authenticator.py +24 -0
  7. onlinepayments/sdk/authentication/authorization_type.py +10 -0
  8. onlinepayments/sdk/authentication/v1hmac_authenticator.py +122 -0
  9. onlinepayments/sdk/authorization_exception.py +19 -0
  10. onlinepayments/sdk/call_context.py +72 -0
  11. onlinepayments/sdk/client.py +107 -0
  12. onlinepayments/sdk/communication/__init__.py +0 -0
  13. onlinepayments/sdk/communication/communication_exception.py +8 -0
  14. onlinepayments/sdk/communication/connection.py +84 -0
  15. onlinepayments/sdk/communication/default_connection.py +313 -0
  16. onlinepayments/sdk/communication/i_metadata_provider.py +19 -0
  17. onlinepayments/sdk/communication/metadata_provider.py +132 -0
  18. onlinepayments/sdk/communication/multipart_form_data_object.py +51 -0
  19. onlinepayments/sdk/communication/multipart_form_data_request.py +16 -0
  20. onlinepayments/sdk/communication/not_found_exception.py +10 -0
  21. onlinepayments/sdk/communication/param_request.py +17 -0
  22. onlinepayments/sdk/communication/pooled_connection.py +29 -0
  23. onlinepayments/sdk/communication/request_header.py +60 -0
  24. onlinepayments/sdk/communication/request_param.py +30 -0
  25. onlinepayments/sdk/communication/response_exception.py +58 -0
  26. onlinepayments/sdk/communication/response_header.py +50 -0
  27. onlinepayments/sdk/communicator.py +465 -0
  28. onlinepayments/sdk/communicator_configuration.py +264 -0
  29. onlinepayments/sdk/declined_payment_exception.py +46 -0
  30. onlinepayments/sdk/declined_payout_exception.py +46 -0
  31. onlinepayments/sdk/declined_refund_exception.py +46 -0
  32. onlinepayments/sdk/declined_transaction_exception.py +22 -0
  33. onlinepayments/sdk/domain/__init__.py +4 -0
  34. onlinepayments/sdk/domain/acceptance.py +56 -0
  35. onlinepayments/sdk/domain/account_on_file.py +102 -0
  36. onlinepayments/sdk/domain/account_on_file_attribute.py +97 -0
  37. onlinepayments/sdk/domain/account_on_file_display_hints.py +64 -0
  38. onlinepayments/sdk/domain/acquirer_information.py +59 -0
  39. onlinepayments/sdk/domain/acquirer_selection_information.py +73 -0
  40. onlinepayments/sdk/domain/additional_order_input.py +107 -0
  41. onlinepayments/sdk/domain/address.py +145 -0
  42. onlinepayments/sdk/domain/address_personal.py +185 -0
  43. onlinepayments/sdk/domain/airline_data.py +519 -0
  44. onlinepayments/sdk/domain/airline_flight_leg.py +386 -0
  45. onlinepayments/sdk/domain/airline_passenger.py +129 -0
  46. onlinepayments/sdk/domain/amount_breakdown.py +63 -0
  47. onlinepayments/sdk/domain/amount_of_money.py +59 -0
  48. onlinepayments/sdk/domain/api_error.py +177 -0
  49. onlinepayments/sdk/domain/apple_pay_line_item.py +145 -0
  50. onlinepayments/sdk/domain/apple_pay_recurring_payment_request.py +116 -0
  51. onlinepayments/sdk/domain/bank_account_iban.py +37 -0
  52. onlinepayments/sdk/domain/batch_metadata.py +73 -0
  53. onlinepayments/sdk/domain/browser_data.py +130 -0
  54. onlinepayments/sdk/domain/calculate_surcharge_request.py +63 -0
  55. onlinepayments/sdk/domain/calculate_surcharge_response.py +44 -0
  56. onlinepayments/sdk/domain/cancel_payment_batch_request.py +57 -0
  57. onlinepayments/sdk/domain/cancel_payment_request.py +130 -0
  58. onlinepayments/sdk/domain/cancel_payment_response.py +41 -0
  59. onlinepayments/sdk/domain/capture.py +97 -0
  60. onlinepayments/sdk/domain/capture_output.py +272 -0
  61. onlinepayments/sdk/domain/capture_payment_batch_request.py +57 -0
  62. onlinepayments/sdk/domain/capture_payment_request.py +148 -0
  63. onlinepayments/sdk/domain/capture_response.py +99 -0
  64. onlinepayments/sdk/domain/capture_status_output.py +37 -0
  65. onlinepayments/sdk/domain/captures_response.py +46 -0
  66. onlinepayments/sdk/domain/card.py +91 -0
  67. onlinepayments/sdk/domain/card_bin_details.py +384 -0
  68. onlinepayments/sdk/domain/card_data_without_cvv.py +73 -0
  69. onlinepayments/sdk/domain/card_essentials.py +438 -0
  70. onlinepayments/sdk/domain/card_fraud_results.py +112 -0
  71. onlinepayments/sdk/domain/card_info.py +55 -0
  72. onlinepayments/sdk/domain/card_payment_method_specific_input.py +608 -0
  73. onlinepayments/sdk/domain/card_payment_method_specific_input_base.py +441 -0
  74. onlinepayments/sdk/domain/card_payment_method_specific_input_for_hosted_checkout.py +105 -0
  75. onlinepayments/sdk/domain/card_payment_method_specific_output.py +467 -0
  76. onlinepayments/sdk/domain/card_payout_method_specific_input.py +99 -0
  77. onlinepayments/sdk/domain/card_recurrence_details.py +40 -0
  78. onlinepayments/sdk/domain/card_source.py +95 -0
  79. onlinepayments/sdk/domain/card_without_cvv.py +73 -0
  80. onlinepayments/sdk/domain/click_to_pay.py +37 -0
  81. onlinepayments/sdk/domain/company_information.py +37 -0
  82. onlinepayments/sdk/domain/complete_payment_card_payment_method_specific_input.py +39 -0
  83. onlinepayments/sdk/domain/complete_payment_request.py +61 -0
  84. onlinepayments/sdk/domain/complete_payment_response.py +85 -0
  85. onlinepayments/sdk/domain/contact_details.py +109 -0
  86. onlinepayments/sdk/domain/create_certificate_response.py +55 -0
  87. onlinepayments/sdk/domain/create_hosted_checkout_request.py +195 -0
  88. onlinepayments/sdk/domain/create_hosted_checkout_response.py +132 -0
  89. onlinepayments/sdk/domain/create_hosted_fields_session_request.py +37 -0
  90. onlinepayments/sdk/domain/create_hosted_fields_session_response.py +102 -0
  91. onlinepayments/sdk/domain/create_hosted_tokenization_request.py +133 -0
  92. onlinepayments/sdk/domain/create_hosted_tokenization_response.py +127 -0
  93. onlinepayments/sdk/domain/create_mandate_request.py +187 -0
  94. onlinepayments/sdk/domain/create_mandate_response.py +63 -0
  95. onlinepayments/sdk/domain/create_mandate_with_return_url.py +187 -0
  96. onlinepayments/sdk/domain/create_payment_link_request.py +344 -0
  97. onlinepayments/sdk/domain/create_payment_request.py +249 -0
  98. onlinepayments/sdk/domain/create_payment_response.py +85 -0
  99. onlinepayments/sdk/domain/create_payout_request.py +176 -0
  100. onlinepayments/sdk/domain/create_token_request.py +77 -0
  101. onlinepayments/sdk/domain/created_payment_output.py +57 -0
  102. onlinepayments/sdk/domain/created_token_response.py +142 -0
  103. onlinepayments/sdk/domain/credit_card_specific_input_hosted_tokenization.py +66 -0
  104. onlinepayments/sdk/domain/credit_card_validation_rules.py +55 -0
  105. onlinepayments/sdk/domain/credit_card_validation_rules_hosted_tokenization.py +55 -0
  106. onlinepayments/sdk/domain/crm_token.py +55 -0
  107. onlinepayments/sdk/domain/csr_request.py +37 -0
  108. onlinepayments/sdk/domain/currency_conversion.py +59 -0
  109. onlinepayments/sdk/domain/currency_conversion_input.py +55 -0
  110. onlinepayments/sdk/domain/currency_conversion_request.py +59 -0
  111. onlinepayments/sdk/domain/currency_conversion_response.py +81 -0
  112. onlinepayments/sdk/domain/currency_conversion_result.py +61 -0
  113. onlinepayments/sdk/domain/currency_conversion_specific_input.py +40 -0
  114. onlinepayments/sdk/domain/customer.py +234 -0
  115. onlinepayments/sdk/domain/customer_account.py +204 -0
  116. onlinepayments/sdk/domain/customer_account_authentication.py +81 -0
  117. onlinepayments/sdk/domain/customer_bank_account.py +73 -0
  118. onlinepayments/sdk/domain/customer_device.py +155 -0
  119. onlinepayments/sdk/domain/customer_device_output.py +37 -0
  120. onlinepayments/sdk/domain/customer_output.py +41 -0
  121. onlinepayments/sdk/domain/customer_payment_activity.py +73 -0
  122. onlinepayments/sdk/domain/customer_token.py +83 -0
  123. onlinepayments/sdk/domain/data_object.py +47 -0
  124. onlinepayments/sdk/domain/dcc_card_source.py +93 -0
  125. onlinepayments/sdk/domain/dcc_proposal.py +118 -0
  126. onlinepayments/sdk/domain/decrypted_payment_data.py +120 -0
  127. onlinepayments/sdk/domain/detokenization_response.py +46 -0
  128. onlinepayments/sdk/domain/detokenized_token_response.py +145 -0
  129. onlinepayments/sdk/domain/directory_entry.py +73 -0
  130. onlinepayments/sdk/domain/discount.py +41 -0
  131. onlinepayments/sdk/domain/empty_validator.py +16 -0
  132. onlinepayments/sdk/domain/error_response.py +64 -0
  133. onlinepayments/sdk/domain/external_cardholder_authentication_data.py +216 -0
  134. onlinepayments/sdk/domain/external_token_linked.py +75 -0
  135. onlinepayments/sdk/domain/feedbacks.py +64 -0
  136. onlinepayments/sdk/domain/fixed_list_validator.py +42 -0
  137. onlinepayments/sdk/domain/fraud_fields.py +84 -0
  138. onlinepayments/sdk/domain/fraud_results.py +43 -0
  139. onlinepayments/sdk/domain/g_pay_three_d_secure.py +159 -0
  140. onlinepayments/sdk/domain/get_batch_status_response.py +91 -0
  141. onlinepayments/sdk/domain/get_hosted_checkout_response.py +63 -0
  142. onlinepayments/sdk/domain/get_hosted_tokenization_response.py +61 -0
  143. onlinepayments/sdk/domain/get_iin_details_request.py +57 -0
  144. onlinepayments/sdk/domain/get_iin_details_response.py +450 -0
  145. onlinepayments/sdk/domain/get_mandate_response.py +41 -0
  146. onlinepayments/sdk/domain/get_payment_product_groups_response.py +44 -0
  147. onlinepayments/sdk/domain/get_payment_products_response.py +44 -0
  148. onlinepayments/sdk/domain/get_privacy_policy_response.py +37 -0
  149. onlinepayments/sdk/domain/gift_card_purchase.py +59 -0
  150. onlinepayments/sdk/domain/hosted_checkout_specific_input.py +250 -0
  151. onlinepayments/sdk/domain/hosted_checkout_specific_output.py +55 -0
  152. onlinepayments/sdk/domain/iin_detail.py +423 -0
  153. onlinepayments/sdk/domain/import_cof_series_request.py +113 -0
  154. onlinepayments/sdk/domain/import_cof_series_response.py +37 -0
  155. onlinepayments/sdk/domain/label_template_element.py +55 -0
  156. onlinepayments/sdk/domain/length_validator.py +51 -0
  157. onlinepayments/sdk/domain/line_item.py +107 -0
  158. onlinepayments/sdk/domain/line_item_detail.py +99 -0
  159. onlinepayments/sdk/domain/line_item_invoice_data.py +37 -0
  160. onlinepayments/sdk/domain/loan_recipient.py +109 -0
  161. onlinepayments/sdk/domain/lodging_data.py +37 -0
  162. onlinepayments/sdk/domain/mandate_address.py +109 -0
  163. onlinepayments/sdk/domain/mandate_address_response.py +109 -0
  164. onlinepayments/sdk/domain/mandate_contact_details.py +37 -0
  165. onlinepayments/sdk/domain/mandate_customer.py +125 -0
  166. onlinepayments/sdk/domain/mandate_customer_response.py +125 -0
  167. onlinepayments/sdk/domain/mandate_merchant_action.py +61 -0
  168. onlinepayments/sdk/domain/mandate_personal_information.py +59 -0
  169. onlinepayments/sdk/domain/mandate_personal_information_response.py +59 -0
  170. onlinepayments/sdk/domain/mandate_personal_name.py +55 -0
  171. onlinepayments/sdk/domain/mandate_personal_name_response.py +55 -0
  172. onlinepayments/sdk/domain/mandate_redirect_data.py +55 -0
  173. onlinepayments/sdk/domain/mandate_response.py +150 -0
  174. onlinepayments/sdk/domain/market_place.py +55 -0
  175. onlinepayments/sdk/domain/merchant_action.py +132 -0
  176. onlinepayments/sdk/domain/mobile_payment_data.py +55 -0
  177. onlinepayments/sdk/domain/mobile_payment_method_hosted_checkout_specific_input.py +105 -0
  178. onlinepayments/sdk/domain/mobile_payment_method_specific_input.py +202 -0
  179. onlinepayments/sdk/domain/mobile_payment_method_specific_output.py +139 -0
  180. onlinepayments/sdk/domain/mobile_payment_product302_specific_input.py +103 -0
  181. onlinepayments/sdk/domain/mobile_payment_product320_specific_input.py +103 -0
  182. onlinepayments/sdk/domain/mobile_three_d_secure_challenge_parameters.py +91 -0
  183. onlinepayments/sdk/domain/multiple_payment_information.py +57 -0
  184. onlinepayments/sdk/domain/network_token_data.py +127 -0
  185. onlinepayments/sdk/domain/network_token_essentials.py +134 -0
  186. onlinepayments/sdk/domain/network_token_linked.py +80 -0
  187. onlinepayments/sdk/domain/omnichannel_payment_specific_input.py +37 -0
  188. onlinepayments/sdk/domain/omnichannel_payout_specific_input.py +55 -0
  189. onlinepayments/sdk/domain/omnichannel_refund_specific_input.py +37 -0
  190. onlinepayments/sdk/domain/omnichannel_subsequent_specific_input.py +37 -0
  191. onlinepayments/sdk/domain/operation_output.py +161 -0
  192. onlinepayments/sdk/domain/operation_payment_references.py +55 -0
  193. onlinepayments/sdk/domain/order.py +213 -0
  194. onlinepayments/sdk/domain/order_line_details.py +189 -0
  195. onlinepayments/sdk/domain/order_references.py +120 -0
  196. onlinepayments/sdk/domain/order_status_output.py +119 -0
  197. onlinepayments/sdk/domain/order_type_information.py +64 -0
  198. onlinepayments/sdk/domain/other_details.py +55 -0
  199. onlinepayments/sdk/domain/payment_account_on_file.py +57 -0
  200. onlinepayments/sdk/domain/payment_context.py +77 -0
  201. onlinepayments/sdk/domain/payment_creation_output.py +94 -0
  202. onlinepayments/sdk/domain/payment_details_response.py +148 -0
  203. onlinepayments/sdk/domain/payment_error_response.py +84 -0
  204. onlinepayments/sdk/domain/payment_link_event.py +73 -0
  205. onlinepayments/sdk/domain/payment_link_order_input.py +84 -0
  206. onlinepayments/sdk/domain/payment_link_order_output.py +81 -0
  207. onlinepayments/sdk/domain/payment_link_response.py +216 -0
  208. onlinepayments/sdk/domain/payment_link_specific_input.py +74 -0
  209. onlinepayments/sdk/domain/payment_links_response.py +44 -0
  210. onlinepayments/sdk/domain/payment_output.py +335 -0
  211. onlinepayments/sdk/domain/payment_product.py +296 -0
  212. onlinepayments/sdk/domain/payment_product130_specific_input.py +41 -0
  213. onlinepayments/sdk/domain/payment_product130_specific_three_d_secure.py +91 -0
  214. onlinepayments/sdk/domain/payment_product3012.py +55 -0
  215. onlinepayments/sdk/domain/payment_product3012_specific_input.py +100 -0
  216. onlinepayments/sdk/domain/payment_product3013_specific_input.py +73 -0
  217. onlinepayments/sdk/domain/payment_product302_specific_data.py +44 -0
  218. onlinepayments/sdk/domain/payment_product3203_specific_output.py +62 -0
  219. onlinepayments/sdk/domain/payment_product3204_specific_output.py +37 -0
  220. onlinepayments/sdk/domain/payment_product3208_specific_input.py +37 -0
  221. onlinepayments/sdk/domain/payment_product3208_specific_output.py +37 -0
  222. onlinepayments/sdk/domain/payment_product3209_specific_input.py +37 -0
  223. onlinepayments/sdk/domain/payment_product3209_specific_output.py +37 -0
  224. onlinepayments/sdk/domain/payment_product320_specific_data.py +62 -0
  225. onlinepayments/sdk/domain/payment_product350.py +55 -0
  226. onlinepayments/sdk/domain/payment_product5001.py +58 -0
  227. onlinepayments/sdk/domain/payment_product5001_specific_output.py +112 -0
  228. onlinepayments/sdk/domain/payment_product5100_specific_input.py +37 -0
  229. onlinepayments/sdk/domain/payment_product5402_specific_output.py +37 -0
  230. onlinepayments/sdk/domain/payment_product5404.py +55 -0
  231. onlinepayments/sdk/domain/payment_product5407.py +55 -0
  232. onlinepayments/sdk/domain/payment_product5500_specific_output.py +91 -0
  233. onlinepayments/sdk/domain/payment_product771_specific_output.py +37 -0
  234. onlinepayments/sdk/domain/payment_product840.py +37 -0
  235. onlinepayments/sdk/domain/payment_product840_customer_account.py +170 -0
  236. onlinepayments/sdk/domain/payment_product840_specific_output.py +167 -0
  237. onlinepayments/sdk/domain/payment_product_display_hints.py +73 -0
  238. onlinepayments/sdk/domain/payment_product_field.py +95 -0
  239. onlinepayments/sdk/domain/payment_product_field_data_restrictions.py +60 -0
  240. onlinepayments/sdk/domain/payment_product_field_display_element.py +97 -0
  241. onlinepayments/sdk/domain/payment_product_field_display_hints.py +218 -0
  242. onlinepayments/sdk/domain/payment_product_field_form_element.py +72 -0
  243. onlinepayments/sdk/domain/payment_product_field_tooltip.py +57 -0
  244. onlinepayments/sdk/domain/payment_product_field_validators.py +195 -0
  245. onlinepayments/sdk/domain/payment_product_filter.py +67 -0
  246. onlinepayments/sdk/domain/payment_product_filter_hosted_tokenization.py +42 -0
  247. onlinepayments/sdk/domain/payment_product_filters_hosted_checkout.py +62 -0
  248. onlinepayments/sdk/domain/payment_product_filters_hosted_tokenization.py +62 -0
  249. onlinepayments/sdk/domain/payment_product_group.py +103 -0
  250. onlinepayments/sdk/domain/payment_product_networks_response.py +42 -0
  251. onlinepayments/sdk/domain/payment_references.py +73 -0
  252. onlinepayments/sdk/domain/payment_response.py +143 -0
  253. onlinepayments/sdk/domain/payment_status_output.py +152 -0
  254. onlinepayments/sdk/domain/payout_error_response.py +80 -0
  255. onlinepayments/sdk/domain/payout_output.py +63 -0
  256. onlinepayments/sdk/domain/payout_response.py +93 -0
  257. onlinepayments/sdk/domain/payout_result.py +93 -0
  258. onlinepayments/sdk/domain/payout_status_output.py +76 -0
  259. onlinepayments/sdk/domain/pending_authentication.py +37 -0
  260. onlinepayments/sdk/domain/personal_information.py +77 -0
  261. onlinepayments/sdk/domain/personal_information_token.py +39 -0
  262. onlinepayments/sdk/domain/personal_name.py +73 -0
  263. onlinepayments/sdk/domain/personal_name_token.py +51 -0
  264. onlinepayments/sdk/domain/product302_recurring.py +37 -0
  265. onlinepayments/sdk/domain/product320_recurring.py +37 -0
  266. onlinepayments/sdk/domain/product_directory.py +46 -0
  267. onlinepayments/sdk/domain/protection_eligibility.py +59 -0
  268. onlinepayments/sdk/domain/range_validator.py +51 -0
  269. onlinepayments/sdk/domain/rate_details.py +109 -0
  270. onlinepayments/sdk/domain/reattempt_instructions.py +82 -0
  271. onlinepayments/sdk/domain/reattempt_instructions_conditions.py +55 -0
  272. onlinepayments/sdk/domain/redirect_data.py +55 -0
  273. onlinepayments/sdk/domain/redirect_payment_method_specific_input.py +575 -0
  274. onlinepayments/sdk/domain/redirect_payment_method_specific_output.py +267 -0
  275. onlinepayments/sdk/domain/redirect_payment_product11_specific_input.py +38 -0
  276. onlinepayments/sdk/domain/redirect_payment_product3103_specific_input.py +40 -0
  277. onlinepayments/sdk/domain/redirect_payment_product3112_specific_input.py +40 -0
  278. onlinepayments/sdk/domain/redirect_payment_product3116_specific_input.py +40 -0
  279. onlinepayments/sdk/domain/redirect_payment_product3203_specific_input.py +40 -0
  280. onlinepayments/sdk/domain/redirect_payment_product3204_specific_input.py +55 -0
  281. onlinepayments/sdk/domain/redirect_payment_product3302_specific_input.py +73 -0
  282. onlinepayments/sdk/domain/redirect_payment_product3306_specific_input.py +37 -0
  283. onlinepayments/sdk/domain/redirect_payment_product3307_specific_input.py +16 -0
  284. onlinepayments/sdk/domain/redirect_payment_product5001_specific_input.py +62 -0
  285. onlinepayments/sdk/domain/redirect_payment_product5300_specific_input.py +163 -0
  286. onlinepayments/sdk/domain/redirect_payment_product5402_specific_input.py +40 -0
  287. onlinepayments/sdk/domain/redirect_payment_product5403_specific_input.py +40 -0
  288. onlinepayments/sdk/domain/redirect_payment_product5406_specific_input.py +41 -0
  289. onlinepayments/sdk/domain/redirect_payment_product5408_specific_input.py +60 -0
  290. onlinepayments/sdk/domain/redirect_payment_product5410_specific_input.py +38 -0
  291. onlinepayments/sdk/domain/redirect_payment_product5412_specific_input.py +55 -0
  292. onlinepayments/sdk/domain/redirect_payment_product5601_specific_input.py +40 -0
  293. onlinepayments/sdk/domain/redirect_payment_product809_specific_input.py +40 -0
  294. onlinepayments/sdk/domain/redirect_payment_product840_specific_input.py +100 -0
  295. onlinepayments/sdk/domain/redirection_data.py +37 -0
  296. onlinepayments/sdk/domain/refund_card_method_specific_output.py +71 -0
  297. onlinepayments/sdk/domain/refund_e_wallet_method_specific_output.py +71 -0
  298. onlinepayments/sdk/domain/refund_error_response.py +82 -0
  299. onlinepayments/sdk/domain/refund_mobile_method_specific_output.py +69 -0
  300. onlinepayments/sdk/domain/refund_output.py +217 -0
  301. onlinepayments/sdk/domain/refund_payment_batch_request.py +57 -0
  302. onlinepayments/sdk/domain/refund_payment_product840_customer_account.py +69 -0
  303. onlinepayments/sdk/domain/refund_payment_product840_specific_output.py +39 -0
  304. onlinepayments/sdk/domain/refund_redirect_method_specific_output.py +51 -0
  305. onlinepayments/sdk/domain/refund_redirect_payment_method_specific_input.py +41 -0
  306. onlinepayments/sdk/domain/refund_redirect_payment_product900_specific_input.py +37 -0
  307. onlinepayments/sdk/domain/refund_request.py +210 -0
  308. onlinepayments/sdk/domain/refund_response.py +97 -0
  309. onlinepayments/sdk/domain/refunds_response.py +46 -0
  310. onlinepayments/sdk/domain/regular_expression_validator.py +35 -0
  311. onlinepayments/sdk/domain/revoke_mandate_request.py +48 -0
  312. onlinepayments/sdk/domain/send_test_request.py +37 -0
  313. onlinepayments/sdk/domain/sepa_direct_debit_payment_method_specific_input.py +59 -0
  314. onlinepayments/sdk/domain/sepa_direct_debit_payment_method_specific_input_base.py +59 -0
  315. onlinepayments/sdk/domain/sepa_direct_debit_payment_method_specific_output.py +81 -0
  316. onlinepayments/sdk/domain/sepa_direct_debit_payment_product771_specific_input.py +59 -0
  317. onlinepayments/sdk/domain/sepa_direct_debit_payment_product771_specific_input_base.py +59 -0
  318. onlinepayments/sdk/domain/session_data.py +116 -0
  319. onlinepayments/sdk/domain/session_details.py +55 -0
  320. onlinepayments/sdk/domain/session_request.py +44 -0
  321. onlinepayments/sdk/domain/session_response.py +114 -0
  322. onlinepayments/sdk/domain/shipping.py +214 -0
  323. onlinepayments/sdk/domain/shipping_detail.py +63 -0
  324. onlinepayments/sdk/domain/shipping_method.py +91 -0
  325. onlinepayments/sdk/domain/shopping_cart.py +155 -0
  326. onlinepayments/sdk/domain/shopping_cart_extension.py +77 -0
  327. onlinepayments/sdk/domain/shopping_cart_output.py +46 -0
  328. onlinepayments/sdk/domain/show_form_data.py +173 -0
  329. onlinepayments/sdk/domain/show_instructions_data.py +37 -0
  330. onlinepayments/sdk/domain/split_payment_product_filter.py +42 -0
  331. onlinepayments/sdk/domain/split_payment_product_filters_hosted_checkout.py +62 -0
  332. onlinepayments/sdk/domain/submit_batch_request_body.py +230 -0
  333. onlinepayments/sdk/domain/submit_batch_response.py +55 -0
  334. onlinepayments/sdk/domain/subsequent_card_payment_method_specific_input.py +175 -0
  335. onlinepayments/sdk/domain/subsequent_payment_batch_request.py +57 -0
  336. onlinepayments/sdk/domain/subsequent_payment_product5001_specific_input.py +41 -0
  337. onlinepayments/sdk/domain/subsequent_payment_request.py +107 -0
  338. onlinepayments/sdk/domain/subsequent_payment_response.py +41 -0
  339. onlinepayments/sdk/domain/surcharge.py +141 -0
  340. onlinepayments/sdk/domain/surcharge_calculation_card.py +55 -0
  341. onlinepayments/sdk/domain/surcharge_for_payment_link.py +40 -0
  342. onlinepayments/sdk/domain/surcharge_rate.py +91 -0
  343. onlinepayments/sdk/domain/surcharge_specific_input.py +62 -0
  344. onlinepayments/sdk/domain/surcharge_specific_output.py +84 -0
  345. onlinepayments/sdk/domain/test_connection.py +35 -0
  346. onlinepayments/sdk/domain/three_d_secure.py +281 -0
  347. onlinepayments/sdk/domain/three_d_secure_base.py +219 -0
  348. onlinepayments/sdk/domain/three_d_secure_data.py +78 -0
  349. onlinepayments/sdk/domain/three_d_secure_results.py +266 -0
  350. onlinepayments/sdk/domain/token_card.py +57 -0
  351. onlinepayments/sdk/domain/token_card_data.py +83 -0
  352. onlinepayments/sdk/domain/token_card_specific_input.py +41 -0
  353. onlinepayments/sdk/domain/token_data.py +63 -0
  354. onlinepayments/sdk/domain/token_e_wallet.py +59 -0
  355. onlinepayments/sdk/domain/token_response.py +181 -0
  356. onlinepayments/sdk/domain/transaction.py +41 -0
  357. onlinepayments/sdk/domain/uploadable_file.py +51 -0
  358. onlinepayments/sdk/domain/validate_credentials_request.py +55 -0
  359. onlinepayments/sdk/domain/validate_credentials_response.py +37 -0
  360. onlinepayments/sdk/domain/value_mapping_element.py +62 -0
  361. onlinepayments/sdk/domain/web_hooks_event.py +214 -0
  362. onlinepayments/sdk/exception_factory.py +75 -0
  363. onlinepayments/sdk/factory.py +127 -0
  364. onlinepayments/sdk/i_client.py +78 -0
  365. onlinepayments/sdk/i_communicator.py +180 -0
  366. onlinepayments/sdk/idempotence_exception.py +36 -0
  367. onlinepayments/sdk/json/__init__.py +0 -0
  368. onlinepayments/sdk/json/default_marshaller.py +60 -0
  369. onlinepayments/sdk/json/marshaller.py +32 -0
  370. onlinepayments/sdk/json/marshaller_syntax_exception.py +13 -0
  371. onlinepayments/sdk/log/__init__.py +0 -0
  372. onlinepayments/sdk/log/body_obfuscator.py +113 -0
  373. onlinepayments/sdk/log/communicator_logger.py +35 -0
  374. onlinepayments/sdk/log/header_obfuscator.py +49 -0
  375. onlinepayments/sdk/log/log_message.py +94 -0
  376. onlinepayments/sdk/log/logging_capable.py +26 -0
  377. onlinepayments/sdk/log/obfuscation_capable.py +24 -0
  378. onlinepayments/sdk/log/obfuscation_rule.py +50 -0
  379. onlinepayments/sdk/log/python_communicator_logger.py +54 -0
  380. onlinepayments/sdk/log/request_log_message.py +28 -0
  381. onlinepayments/sdk/log/response_log_message.py +37 -0
  382. onlinepayments/sdk/log/sys_out_communicator_logger.py +36 -0
  383. onlinepayments/sdk/merchant/__init__.py +4 -0
  384. onlinepayments/sdk/merchant/captures/__init__.py +4 -0
  385. onlinepayments/sdk/merchant/captures/captures_client.py +63 -0
  386. onlinepayments/sdk/merchant/captures/i_captures_client.py +34 -0
  387. onlinepayments/sdk/merchant/cofseries/__init__.py +4 -0
  388. onlinepayments/sdk/merchant/cofseries/cof_series_client.py +62 -0
  389. onlinepayments/sdk/merchant/cofseries/i_cof_series_client.py +35 -0
  390. onlinepayments/sdk/merchant/complete/__init__.py +4 -0
  391. onlinepayments/sdk/merchant/complete/complete_client.py +67 -0
  392. onlinepayments/sdk/merchant/complete/i_complete_client.py +37 -0
  393. onlinepayments/sdk/merchant/hostedcheckout/__init__.py +4 -0
  394. onlinepayments/sdk/merchant/hostedcheckout/hosted_checkout_client.py +99 -0
  395. onlinepayments/sdk/merchant/hostedcheckout/i_hosted_checkout_client.py +55 -0
  396. onlinepayments/sdk/merchant/hostedfields/__init__.py +4 -0
  397. onlinepayments/sdk/merchant/hostedfields/hosted_fields_client.py +62 -0
  398. onlinepayments/sdk/merchant/hostedfields/i_hosted_fields_client.py +35 -0
  399. onlinepayments/sdk/merchant/hostedtokenization/__init__.py +4 -0
  400. onlinepayments/sdk/merchant/hostedtokenization/hosted_tokenization_client.py +99 -0
  401. onlinepayments/sdk/merchant/hostedtokenization/i_hosted_tokenization_client.py +55 -0
  402. onlinepayments/sdk/merchant/i_merchant_client.py +202 -0
  403. onlinepayments/sdk/merchant/mandates/__init__.py +4 -0
  404. onlinepayments/sdk/merchant/mandates/i_mandates_client.py +114 -0
  405. onlinepayments/sdk/merchant/mandates/mandates_client.py +212 -0
  406. onlinepayments/sdk/merchant/merchant_client.py +232 -0
  407. onlinepayments/sdk/merchant/merchantbatch/__init__.py +4 -0
  408. onlinepayments/sdk/merchant/merchantbatch/i_merchant_batch_client.py +74 -0
  409. onlinepayments/sdk/merchant/merchantbatch/merchant_batch_client.py +138 -0
  410. onlinepayments/sdk/merchant/paymentlinks/__init__.py +4 -0
  411. onlinepayments/sdk/merchant/paymentlinks/get_payment_links_in_bulk_params.py +36 -0
  412. onlinepayments/sdk/merchant/paymentlinks/i_payment_links_client.py +73 -0
  413. onlinepayments/sdk/merchant/paymentlinks/payment_links_client.py +135 -0
  414. onlinepayments/sdk/merchant/payments/__init__.py +4 -0
  415. onlinepayments/sdk/merchant/payments/i_payments_client.py +143 -0
  416. onlinepayments/sdk/merchant/payments/payments_client.py +260 -0
  417. onlinepayments/sdk/merchant/payouts/__init__.py +4 -0
  418. onlinepayments/sdk/merchant/payouts/i_payouts_client.py +55 -0
  419. onlinepayments/sdk/merchant/payouts/payouts_client.py +100 -0
  420. onlinepayments/sdk/merchant/privacypolicy/__init__.py +4 -0
  421. onlinepayments/sdk/merchant/privacypolicy/get_privacy_policy_params.py +54 -0
  422. onlinepayments/sdk/merchant/privacypolicy/i_privacy_policy_client.py +36 -0
  423. onlinepayments/sdk/merchant/privacypolicy/privacy_policy_client.py +61 -0
  424. onlinepayments/sdk/merchant/productgroups/__init__.py +4 -0
  425. onlinepayments/sdk/merchant/productgroups/get_product_group_params.py +140 -0
  426. onlinepayments/sdk/merchant/productgroups/get_product_groups_params.py +140 -0
  427. onlinepayments/sdk/merchant/productgroups/i_product_groups_client.py +58 -0
  428. onlinepayments/sdk/merchant/productgroups/product_groups_client.py +100 -0
  429. onlinepayments/sdk/merchant/products/__init__.py +4 -0
  430. onlinepayments/sdk/merchant/products/get_payment_product_networks_params.py +89 -0
  431. onlinepayments/sdk/merchant/products/get_payment_product_params.py +138 -0
  432. onlinepayments/sdk/merchant/products/get_payment_products_params.py +138 -0
  433. onlinepayments/sdk/merchant/products/get_product_directory_params.py +54 -0
  434. onlinepayments/sdk/merchant/products/i_products_client.py +102 -0
  435. onlinepayments/sdk/merchant/products/products_client.py +178 -0
  436. onlinepayments/sdk/merchant/refunds/__init__.py +4 -0
  437. onlinepayments/sdk/merchant/refunds/i_refunds_client.py +34 -0
  438. onlinepayments/sdk/merchant/refunds/refunds_client.py +63 -0
  439. onlinepayments/sdk/merchant/services/__init__.py +4 -0
  440. onlinepayments/sdk/merchant/services/i_services_client.py +96 -0
  441. onlinepayments/sdk/merchant/services/services_client.py +167 -0
  442. onlinepayments/sdk/merchant/sessions/__init__.py +4 -0
  443. onlinepayments/sdk/merchant/sessions/i_sessions_client.py +35 -0
  444. onlinepayments/sdk/merchant/sessions/sessions_client.py +62 -0
  445. onlinepayments/sdk/merchant/subsequent/__init__.py +4 -0
  446. onlinepayments/sdk/merchant/subsequent/i_subsequent_client.py +37 -0
  447. onlinepayments/sdk/merchant/subsequent/subsequent_client.py +67 -0
  448. onlinepayments/sdk/merchant/tokenization/__init__.py +4 -0
  449. onlinepayments/sdk/merchant/tokenization/get_card_data_by_payments_params.py +48 -0
  450. onlinepayments/sdk/merchant/tokenization/get_card_data_by_tokens_params.py +48 -0
  451. onlinepayments/sdk/merchant/tokenization/i_tokenization_client.py +77 -0
  452. onlinepayments/sdk/merchant/tokenization/tokenization_client.py +131 -0
  453. onlinepayments/sdk/merchant/tokens/__init__.py +4 -0
  454. onlinepayments/sdk/merchant/tokens/i_tokens_client.py +74 -0
  455. onlinepayments/sdk/merchant/tokens/tokens_client.py +135 -0
  456. onlinepayments/sdk/merchant/webhooks/__init__.py +4 -0
  457. onlinepayments/sdk/merchant/webhooks/i_webhooks_client.py +55 -0
  458. onlinepayments/sdk/merchant/webhooks/webhooks_client.py +97 -0
  459. onlinepayments/sdk/platform_exception.py +19 -0
  460. onlinepayments/sdk/proxy_configuration.py +102 -0
  461. onlinepayments/sdk/reference_exception.py +19 -0
  462. onlinepayments/sdk/validation_exception.py +19 -0
  463. onlinepayments/sdk/webhooks/__init__.py +0 -0
  464. onlinepayments/sdk/webhooks/api_version_mismatch_exception.py +24 -0
  465. onlinepayments/sdk/webhooks/in_memory_secret_key_store.py +48 -0
  466. onlinepayments/sdk/webhooks/secret_key_not_available_exception.py +18 -0
  467. onlinepayments/sdk/webhooks/secret_key_store.py +15 -0
  468. onlinepayments/sdk/webhooks/signature_validation_exception.py +17 -0
  469. onlinepayments/sdk/webhooks/signature_validator.py +56 -0
  470. onlinepayments/sdk/webhooks/webhooks_helper.py +52 -0
  471. onlinepayments_sdk_python3-7.4.1.dist-info/METADATA +154 -0
  472. onlinepayments_sdk_python3-7.4.1.dist-info/RECORD +475 -0
  473. onlinepayments_sdk_python3-7.4.1.dist-info/WHEEL +5 -0
  474. onlinepayments_sdk_python3-7.4.1.dist-info/licenses/LICENSE.txt +52 -0
  475. onlinepayments_sdk_python3-7.4.1.dist-info/top_level.txt +1 -0
@@ -0,0 +1,214 @@
1
+ from typing import Optional
2
+
3
+ from .data_object import DataObject
4
+ from .get_batch_status_response import GetBatchStatusResponse
5
+ from .payment_link_response import PaymentLinkResponse
6
+ from .payment_response import PaymentResponse
7
+ from .payout_response import PayoutResponse
8
+ from .refund_response import RefundResponse
9
+ from .token_response import TokenResponse
10
+
11
+ class WebhooksEvent(DataObject):
12
+
13
+ __api_version: Optional[str] = None
14
+ __created: Optional[str] = None
15
+ __id: Optional[str] = None
16
+ __merchant_id: Optional[str] = None
17
+ __type: Optional[str] = None
18
+ __direct_batch: Optional[GetBatchStatusResponse] = None
19
+ __payment_link: Optional[PaymentLinkResponse] = None
20
+ __payment: Optional[PaymentResponse] = None
21
+ __payout: Optional[PayoutResponse] = None
22
+ __refund: Optional[RefundResponse] = None
23
+ __token: Optional[TokenResponse] = None
24
+
25
+ @property
26
+ def api_version(self) -> Optional[str]:
27
+ """
28
+ Type: str
29
+ """
30
+ return self.__api_version
31
+
32
+ @api_version.setter
33
+ def api_version(self, value: Optional[str]) -> None:
34
+ self.__api_version = value
35
+
36
+ @property
37
+ def created(self) -> Optional[str]:
38
+ """
39
+ Type: str
40
+ """
41
+ return self.__created
42
+
43
+ @created.setter
44
+ def created(self, value: Optional[str]) -> None:
45
+ self.__created = value
46
+
47
+ @property
48
+ def id(self) -> Optional[str]:
49
+ """
50
+ Type: str
51
+ """
52
+ return self.__id
53
+
54
+ @id.setter
55
+ def id(self, value: Optional[str]) -> None:
56
+ self.__id = value
57
+
58
+ @property
59
+ def merchant_id(self) -> Optional[str]:
60
+ """
61
+ Type: str
62
+ """
63
+ return self.__merchant_id
64
+
65
+ @merchant_id.setter
66
+ def merchant_id(self, value: Optional[str]) -> None:
67
+ self.__merchant_id = value
68
+
69
+ @property
70
+ def type(self) -> Optional[str]:
71
+ """
72
+ Type: str
73
+ """
74
+ return self.__type
75
+
76
+ @type.setter
77
+ def type(self, value: Optional[str]) -> None:
78
+ self.__type = value
79
+
80
+ @property
81
+ def direct_batch(self) -> Optional[GetBatchStatusResponse]:
82
+ """
83
+ Type: GetBatchStatusResponse
84
+ """
85
+ return self.__direct_batch
86
+
87
+ @direct_batch.setter
88
+ def direct_batch(self, value: Optional[GetBatchStatusResponse]) -> None:
89
+ self.__direct_batch = value
90
+
91
+ @property
92
+ def payment_link(self) -> Optional[PaymentLinkResponse]:
93
+ """
94
+ Type: PaymentLinkResponse
95
+ """
96
+ return self.__payment_link
97
+
98
+ @payment_link.setter
99
+ def payment_link(self, value: Optional[PaymentLinkResponse]) -> None:
100
+ self.__payment_link = value
101
+
102
+ @property
103
+ def payment(self) -> Optional[PaymentResponse]:
104
+ """
105
+ Type: PaymentResponse
106
+ """
107
+ return self.__payment
108
+
109
+ @payment.setter
110
+ def payment(self, value: Optional[PaymentResponse]) -> None:
111
+ self.__payment = value
112
+
113
+ @property
114
+ def payout(self) -> Optional[PayoutResponse]:
115
+ """
116
+ Type: PayoutResponse
117
+ """
118
+ return self.__payout
119
+
120
+ @payout.setter
121
+ def payout(self, value: Optional[PayoutResponse]) -> None:
122
+ self.__payout = value
123
+
124
+ @property
125
+ def refund(self) -> Optional[RefundResponse]:
126
+ """
127
+ Type: RefundResponse
128
+ """
129
+ return self.__refund
130
+
131
+ @refund.setter
132
+ def refund(self, value: Optional[RefundResponse]) -> None:
133
+ self.__refund = value
134
+
135
+ @property
136
+ def token(self) -> Optional[TokenResponse]:
137
+ """
138
+ Type: TokenResponse
139
+ """
140
+ return self.__token
141
+
142
+ @token.setter
143
+ def token(self, value: Optional[TokenResponse]) -> None:
144
+ self.__token = value
145
+
146
+ def to_dictionary(self) -> dict:
147
+ dictionary = super(WebhooksEvent, self).to_dictionary()
148
+ if self.api_version is not None:
149
+ dictionary['apiVersion'] = self.api_version
150
+ if self.created is not None:
151
+ dictionary['created'] = self.created
152
+ if self.id is not None:
153
+ dictionary['id'] = self.id
154
+ if self.merchant_id is not None:
155
+ dictionary['merchantId'] = self.merchant_id
156
+ if self.type is not None:
157
+ dictionary['type'] = self.type
158
+ if self.direct_batch is not None:
159
+ dictionary['directBatch'] = self.direct_batch.to_dictionary()
160
+ if self.payment_link is not None:
161
+ dictionary['paymentLink'] = self.payment_link.to_dictionary()
162
+ if self.payment is not None:
163
+ dictionary['payment'] = self.payment.to_dictionary()
164
+ if self.payout is not None:
165
+ dictionary['payout'] = self.payout.to_dictionary()
166
+ if self.refund is not None:
167
+ dictionary['refund'] = self.refund.to_dictionary()
168
+ if self.token is not None:
169
+ dictionary['token'] = self.token.to_dictionary()
170
+ return dictionary
171
+
172
+ def from_dictionary(self, dictionary: dict) -> 'WebhooksEvent':
173
+ super(WebhooksEvent, self).from_dictionary(dictionary)
174
+ if 'apiVersion' in dictionary:
175
+ self.api_version = dictionary['apiVersion']
176
+ if 'created' in dictionary:
177
+ self.created = dictionary['created']
178
+ if 'id' in dictionary:
179
+ self.id = dictionary['id']
180
+ if 'merchantId' in dictionary:
181
+ self.merchant_id = dictionary['merchantId']
182
+ if 'type' in dictionary:
183
+ self.type = dictionary['type']
184
+ if 'directBatch' in dictionary:
185
+ if not isinstance(dictionary['directBatch'], dict):
186
+ raise TypeError('value \'{}\' is not a dictionary'.format(dictionary['directBatch']))
187
+ value = GetBatchStatusResponse()
188
+ self.direct_batch = value.from_dictionary(dictionary['directBatch'])
189
+ if 'paymentLink' in dictionary:
190
+ if not isinstance(dictionary['paymentLink'], dict):
191
+ raise TypeError('value \'{}\' is not a dictionary'.format(dictionary['paymentLink']))
192
+ value = PaymentLinkResponse()
193
+ self.payment_link = value.from_dictionary(dictionary['paymentLink'])
194
+ if 'payment' in dictionary:
195
+ if not isinstance(dictionary['payment'], dict):
196
+ raise TypeError('value \'{}\' is not a dictionary'.format(dictionary['payment']))
197
+ value = PaymentResponse()
198
+ self.payment = value.from_dictionary(dictionary['payment'])
199
+ if 'payout' in dictionary:
200
+ if not isinstance(dictionary['payout'], dict):
201
+ raise TypeError('value \'{}\' is not a dictionary'.format(dictionary['payout']))
202
+ value = PayoutResponse()
203
+ self.payout = value.from_dictionary(dictionary['payout'])
204
+ if 'refund' in dictionary:
205
+ if not isinstance(dictionary['refund'], dict):
206
+ raise TypeError('value \'{}\' is not a dictionary'.format(dictionary['refund']))
207
+ value = RefundResponse()
208
+ self.refund = value.from_dictionary(dictionary['refund'])
209
+ if 'token' in dictionary:
210
+ if not isinstance(dictionary['token'], dict):
211
+ raise TypeError('value \'{}\' is not a dictionary'.format(dictionary['token']))
212
+ value = TokenResponse()
213
+ self.token = value.from_dictionary(dictionary['token'])
214
+ return self
@@ -0,0 +1,75 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # This file was automatically generated.
4
+ #
5
+ from typing import Any, List, Optional
6
+
7
+ from .api_exception import ApiException
8
+ from .authorization_exception import AuthorizationException
9
+ from .call_context import CallContext
10
+ from .declined_payment_exception import DeclinedPaymentException
11
+ from .declined_payout_exception import DeclinedPayoutException
12
+ from .declined_refund_exception import DeclinedRefundException
13
+ from .idempotence_exception import IdempotenceException
14
+ from .platform_exception import PlatformException
15
+ from .reference_exception import ReferenceException
16
+ from .validation_exception import ValidationException
17
+
18
+ from onlinepayments.sdk.domain.api_error import APIError
19
+ from onlinepayments.sdk.domain.error_response import ErrorResponse
20
+ from onlinepayments.sdk.domain.payment_error_response import PaymentErrorResponse
21
+ from onlinepayments.sdk.domain.payout_error_response import PayoutErrorResponse
22
+ from onlinepayments.sdk.domain.refund_error_response import RefundErrorResponse
23
+
24
+
25
+ def create_exception(status_code: int, body: str, error_object: Any, context: Optional[CallContext]) -> Exception:
26
+ """Return a raisable API exception based on the error object given"""
27
+ def create_exception_from_response_fields(error_id: Optional[str], errors: Optional[List[APIError]]) -> Exception:
28
+ if is_idempotence_error(errors):
29
+ return IdempotenceException(context.idempotence_key, context.idempotence_request_timestamp,
30
+ status_code, body, error_id, errors)
31
+ # get error based on status code, defaulting to ApiException
32
+ return ERROR_MAP.get(status_code, ApiException)(status_code, body, error_id, errors)
33
+
34
+ def is_idempotence_error(errors: Optional[List[APIError]]) -> bool:
35
+ return status_code == 409 \
36
+ and context is not None \
37
+ and context.idempotence_key is not None \
38
+ and errors is not None \
39
+ and len(errors) == 1 \
40
+ and errors[0].error_code == '1409'
41
+
42
+ if isinstance(error_object, PaymentErrorResponse):
43
+ if error_object.payment_result is not None:
44
+ return DeclinedPaymentException(status_code=status_code,
45
+ response_body=body,
46
+ response=error_object)
47
+ return create_exception_from_response_fields(error_object.error_id, error_object.errors)
48
+ if isinstance(error_object, PayoutErrorResponse):
49
+ if error_object.payout_result is not None:
50
+ return DeclinedPayoutException(status_code=status_code,
51
+ response_body=body,
52
+ response=error_object)
53
+ return create_exception_from_response_fields(error_object.error_id, error_object.errors)
54
+ if isinstance(error_object, RefundErrorResponse):
55
+ if error_object.refund_result is not None:
56
+ return DeclinedRefundException(status_code=status_code,
57
+ response_body=body,
58
+ response=error_object)
59
+ return create_exception_from_response_fields(error_object.error_id, error_object.errors)
60
+ if not isinstance(error_object, ErrorResponse):
61
+ raise ValueError("Unsupported error object encountered: {}".format(error_object.__class__.__name__))
62
+
63
+ return create_exception_from_response_fields(error_object.error_id, error_object.errors)
64
+
65
+
66
+ ERROR_MAP = {
67
+ 400: ValidationException,
68
+ 403: AuthorizationException,
69
+ 404: ReferenceException,
70
+ 409: ReferenceException, # idempotence has already been tested
71
+ 410: ReferenceException,
72
+ 500: PlatformException,
73
+ 502: PlatformException,
74
+ 503: PlatformException,
75
+ }
@@ -0,0 +1,127 @@
1
+ from configparser import ConfigParser
2
+ from typing import Optional, Union
3
+
4
+ from .client import Client
5
+ from .i_client import IClient
6
+ from .communicator import Communicator
7
+ from .i_communicator import ICommunicator
8
+ from .communicator_configuration import CommunicatorConfiguration
9
+
10
+ from onlinepayments.sdk.authentication.authorization_type import AuthorizationType
11
+ from onlinepayments.sdk.authentication.authenticator import Authenticator
12
+ from onlinepayments.sdk.authentication.v1hmac_authenticator import V1HmacAuthenticator
13
+ from onlinepayments.sdk.communication.connection import Connection
14
+ from onlinepayments.sdk.communication.default_connection import DefaultConnection
15
+ from onlinepayments.sdk.communication.metadata_provider import MetadataProvider
16
+ from onlinepayments.sdk.communication.i_metadata_provider import IMetadataProvider
17
+ from onlinepayments.sdk.json.default_marshaller import DefaultMarshaller
18
+ from onlinepayments.sdk.json.marshaller import Marshaller
19
+
20
+
21
+ class Factory(object):
22
+ """
23
+ Online Payments platform factory for several SDK components.
24
+ """
25
+
26
+ @staticmethod
27
+ def create_configuration(configuration_file_name: Union[str, bytes], api_key_id: str, secret_api_key: str) -> CommunicatorConfiguration:
28
+ """
29
+ Creates a CommunicatorConfiguration based on the configuration values in configuration_file_name, api_key_id and secret_api_key.
30
+ """
31
+ try:
32
+ parser = ConfigParser()
33
+ with open(configuration_file_name) as f:
34
+ parser.read_file(f)
35
+ return CommunicatorConfiguration(properties=parser,
36
+ api_key_id=api_key_id,
37
+ secret_api_key=secret_api_key)
38
+ except IOError as e:
39
+ raise RuntimeError("Unable to read configuration located at {}".format(e.filename), e) from e
40
+
41
+ @staticmethod
42
+ def create_communicator_from_configuration(communicator_configuration: CommunicatorConfiguration,
43
+ metadata_provider: Optional[IMetadataProvider] = None,
44
+ connection: Optional[Connection] = None,
45
+ authenticator: Optional[Authenticator] = None,
46
+ marshaller: Optional[Marshaller] = None) -> ICommunicator:
47
+ """
48
+ Creates a Communicator based on the configuration stored in the CommunicatorConfiguration argument
49
+ """
50
+ if metadata_provider is None:
51
+ metadata_provider = MetadataProvider(integrator=communicator_configuration.integrator,
52
+ shopping_cart_extension=communicator_configuration.shopping_cart_extension)
53
+ if connection is None:
54
+ connection = DefaultConnection(communicator_configuration.connect_timeout,
55
+ communicator_configuration.socket_timeout,
56
+ communicator_configuration.max_connections,
57
+ communicator_configuration.proxy_configuration)
58
+ if authenticator is None:
59
+ authenticator = Factory.__get_authenticator(communicator_configuration)
60
+ if marshaller is None:
61
+ marshaller = DefaultMarshaller.instance()
62
+ return Communicator(api_endpoint=communicator_configuration.api_endpoint,
63
+ metadata_provider=metadata_provider,
64
+ connection=connection,
65
+ authenticator=authenticator,
66
+ marshaller=marshaller)
67
+
68
+ @staticmethod
69
+ def __get_authenticator(communicator_configuration: CommunicatorConfiguration) -> Authenticator:
70
+ if communicator_configuration.authorization_type == AuthorizationType.V1HMAC:
71
+ return V1HmacAuthenticator(communicator_configuration)
72
+ raise RuntimeError("Unknown authorizationType " + communicator_configuration.authorization_type)
73
+
74
+ @staticmethod
75
+ def create_communicator_from_file(configuration_file_name: Union[str, bytes], api_key_id: str, secret_api_key: str,
76
+ metadata_provider: Optional[IMetadataProvider] = None,
77
+ connection: Optional[Connection] = None,
78
+ authenticator: Optional[Authenticator] = None,
79
+ marshaller: Optional[Marshaller] = None) -> ICommunicator:
80
+ """
81
+ Creates a Communicator based on the configuration values in configuration_file_name, api_id_key and secret_api_key.
82
+ """
83
+ configuration = Factory.create_configuration(configuration_file_name, api_key_id, secret_api_key)
84
+ return Factory.create_communicator_from_configuration(configuration,
85
+ metadata_provider=metadata_provider,
86
+ connection=connection,
87
+ authenticator=authenticator,
88
+ marshaller=marshaller)
89
+
90
+ @staticmethod
91
+ def create_client_from_configuration(communicator_configuration: CommunicatorConfiguration,
92
+ metadata_provider: Optional[IMetadataProvider] = None,
93
+ connection: Optional[Connection] = None,
94
+ authenticator: Optional[Authenticator] = None,
95
+ marshaller: Optional[Marshaller] = None) -> IClient:
96
+ """
97
+ Create a Client based on the configuration stored in the CommunicatorConfiguration argument
98
+ """
99
+ communicator = Factory.create_communicator_from_configuration(communicator_configuration,
100
+ metadata_provider=metadata_provider,
101
+ connection=connection,
102
+ authenticator=authenticator,
103
+ marshaller=marshaller)
104
+ return Client(communicator)
105
+
106
+ @staticmethod
107
+ def create_client_from_communicator(communicator: ICommunicator) -> IClient:
108
+ """
109
+ Create a Client based on the settings stored in the Communicator argument
110
+ """
111
+ return Client(communicator)
112
+
113
+ @staticmethod
114
+ def create_client_from_file(configuration_file_name: Union[str, bytes], api_key_id: str, secret_api_key: str,
115
+ metadata_provider: Optional[IMetadataProvider] = None,
116
+ connection: Optional[Connection] = None,
117
+ authenticator: Optional[Authenticator] = None,
118
+ marshaller: Optional[Marshaller] = None) -> IClient:
119
+ """
120
+ Creates a Client based on the configuration values in configuration_file_name, api_key_id and secret_api_key.
121
+ """
122
+ communicator = Factory.create_communicator_from_file(configuration_file_name, api_key_id, secret_api_key,
123
+ metadata_provider=metadata_provider,
124
+ connection=connection,
125
+ authenticator=authenticator,
126
+ marshaller=marshaller)
127
+ return Client(communicator)
@@ -0,0 +1,78 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # This file was automatically generated.
4
+ #
5
+ from abc import abstractmethod
6
+ from datetime import timedelta
7
+ from typing import Optional
8
+
9
+ from onlinepayments.sdk.log.body_obfuscator import BodyObfuscator
10
+ from onlinepayments.sdk.log.communicator_logger import CommunicatorLogger
11
+ from onlinepayments.sdk.log.header_obfuscator import HeaderObfuscator
12
+ from onlinepayments.sdk.log.logging_capable import LoggingCapable
13
+ from onlinepayments.sdk.log.obfuscation_capable import ObfuscationCapable
14
+ from onlinepayments.sdk.merchant.i_merchant_client import IMerchantClient
15
+
16
+
17
+ class IClient(LoggingCapable, ObfuscationCapable):
18
+ """
19
+ Payment platform client interface.
20
+
21
+ This client and all its child clients are bound to one specific value for the X-GCS-ClientMetaInfo header.
22
+ To get a new client with a different header value, use with_client_meta_info.
23
+
24
+ Thread-safe.
25
+ """
26
+
27
+ @abstractmethod
28
+ def with_client_meta_info(self, client_meta_info: Optional[str]) -> 'Client':
29
+ """
30
+ :param client_meta_info: JSON string containing the metadata for the client
31
+ :return: a new Client which uses the passed metadata for the X-GCS-ClientMetaInfo header.
32
+ :raise MarshallerSyntaxException: if the given clientMetaInfo is not a valid JSON string
33
+ """
34
+
35
+ @abstractmethod
36
+ def close_idle_connections(self, idle_time: timedelta) -> None:
37
+ """
38
+ Utility method that delegates the call to this client's communicator.
39
+
40
+ :param idle_time: a datetime.timedelta object indicating the idle time
41
+ """
42
+
43
+ @abstractmethod
44
+ def close_expired_connections(self) -> None:
45
+ """
46
+ Utility method that delegates the call to this client's communicator.
47
+ """
48
+
49
+ @abstractmethod
50
+ def set_body_obfuscator(self, body_obfuscator: BodyObfuscator) -> None:
51
+ """"""
52
+
53
+ @abstractmethod
54
+ def set_header_obfuscator(self, header_obfuscator: HeaderObfuscator) -> None:
55
+ """"""
56
+
57
+ @abstractmethod
58
+ def enable_logging(self, communicator_logger: CommunicatorLogger) -> None:
59
+ """"""
60
+
61
+ @abstractmethod
62
+ def disable_logging(self) -> None:
63
+ """"""
64
+
65
+ @abstractmethod
66
+ def close(self) -> None:
67
+ """
68
+ Releases any system resources associated with this object.
69
+ """
70
+
71
+ @abstractmethod
72
+ def merchant(self, merchant_id: str) -> IMerchantClient:
73
+ """
74
+ Resource /v2/{merchantId}
75
+
76
+ :param merchant_id: str
77
+ :return: :class:`onlinepayments.sdk.merchant.i_merchant_client.IMerchantClient`
78
+ """
@@ -0,0 +1,180 @@
1
+ from abc import abstractmethod
2
+ from typing import List, Optional, Type, Tuple, Mapping, Iterable, Any
3
+
4
+ from onlinepayments.sdk.call_context import CallContext
5
+ from onlinepayments.sdk.communication.param_request import ParamRequest
6
+ from onlinepayments.sdk.communication.request_header import RequestHeader
7
+ from onlinepayments.sdk.json.marshaller import Marshaller, T
8
+ from onlinepayments.sdk.log.logging_capable import LoggingCapable
9
+ from onlinepayments.sdk.log.obfuscation_capable import ObfuscationCapable
10
+
11
+ BinaryResponse = Tuple[Mapping[str, str], Iterable[bytes]]
12
+
13
+
14
+ class ICommunicator(LoggingCapable, ObfuscationCapable):
15
+ """
16
+ Used to communicate with the Online Payments platform web services.
17
+
18
+ It contains all the logic to transform a request object to an HTTP request and an HTTP response to a response object.
19
+ """
20
+
21
+ @abstractmethod
22
+ def close(self) -> None:
23
+ """
24
+ Releases any system resources associated with this object.
25
+ """
26
+
27
+ @abstractmethod
28
+ def get(self, relative_path: str, request_headers: Optional[List[RequestHeader]],
29
+ request_parameters: Optional[ParamRequest],
30
+ response_type: Type[T],
31
+ context: Optional[CallContext]) -> T:
32
+ """
33
+ Corresponds to the HTTP GET method.
34
+
35
+ :param relative_path: The path to call, relative to the base URI.
36
+ :param request_headers: An optional list of request headers.
37
+ :param request_parameters: An optional set of request parameters.
38
+ :param response_type: The type of response to return.
39
+ :param context: The optional call context to use.
40
+ :raise CommunicationException: when an exception occurred communicating with the Online Payments platform
41
+ :raise ResponseException: when an error response was received from the Online Payments platform
42
+ """
43
+
44
+ @abstractmethod
45
+ def get_with_binary_response(self, relative_path: str, request_headers: Optional[List[RequestHeader]],
46
+ request_parameters: Optional[ParamRequest],
47
+ context: Optional[CallContext]) -> BinaryResponse:
48
+ """
49
+ Corresponds to the HTTP GET method.
50
+
51
+ :param relative_path: The path to call, relative to the base URI.
52
+ :param request_headers: An optional list of request headers.
53
+ :param request_parameters: An optional set of request parameters.
54
+ :param context: The optional call context to use.
55
+ :raise CommunicationException: when an exception occurred communicating with the Online Payments platform
56
+ :raise ResponseException: when an error response was received from the Online Payments platform
57
+ """
58
+
59
+ @abstractmethod
60
+ def delete(self, relative_path: str, request_headers: Optional[List[RequestHeader]],
61
+ request_parameters: Optional[ParamRequest],
62
+ response_type: Type[T],
63
+ context: Optional[CallContext]) -> T:
64
+ """
65
+ Corresponds to the HTTP DELETE method.
66
+
67
+ :param relative_path: The path to call, relative to the base URI.
68
+ :param request_headers: An optional list of request headers.
69
+ :param request_parameters: An optional set of request parameters.
70
+ :param response_type: The type of response to return.
71
+ :param context: The optional call context to use.
72
+ :raise CommunicationException: when an exception occurred communicating with the Online Payments platform
73
+ :raise ResponseException: when an error response was received from the Online Payments platform
74
+ """
75
+
76
+ @abstractmethod
77
+ def delete_with_binary_response(self, relative_path: str, request_headers: Optional[List[RequestHeader]],
78
+ request_parameters: Optional[ParamRequest],
79
+ context: Optional[CallContext]) -> BinaryResponse:
80
+ """
81
+ Corresponds to the HTTP DELETE method.
82
+
83
+ :param relative_path: The path to call, relative to the base URI.
84
+ :param request_headers: An optional list of request headers.
85
+ :param request_parameters: An optional set of request parameters.
86
+ :param context: The optional call context to use.
87
+ :raise CommunicationException: when an exception occurred communicating with the Online Payments platform
88
+ :raise ResponseException: when an error response was received from the Online Payments platform
89
+ """
90
+
91
+ @abstractmethod
92
+ def post_with_binary_response(self, relative_path: str, request_headers: Optional[List[RequestHeader]],
93
+ request_parameters: Optional[ParamRequest], request_body: Any,
94
+ context: Optional[CallContext]) -> BinaryResponse:
95
+ """
96
+ Corresponds to the HTTP POST method.
97
+
98
+ :param relative_path: The path to call, relative to the base URI.
99
+ :param request_headers: An optional list of request headers.
100
+ :param request_parameters: An optional set of request parameters.
101
+ :param request_body: The optional request body to send.
102
+ :param context: The optional call context to use.
103
+ :raise CommunicationException: when an exception occurred communicating with the Online Payments platform
104
+ :raise ResponseException: when an error response was received from the Online Payments platform
105
+ """
106
+
107
+ @abstractmethod
108
+ def post(self, relative_path: str, request_headers: Optional[List[RequestHeader]],
109
+ request_parameters: Optional[ParamRequest], request_body: Any,
110
+ response_type: Type[T],
111
+ context: Optional[CallContext]) -> T:
112
+ """
113
+ Corresponds to the HTTP POST method.
114
+
115
+ :param relative_path: The path to call, relative to the base URI.
116
+ :param request_headers: An optional list of request headers.
117
+ :param request_parameters: An optional set of request parameters.
118
+ :param request_body: The optional request body to send.
119
+ :param response_type: The type of response to return.
120
+ :param context: The optional call context to use.
121
+ :raise CommunicationException: when an exception occurred communicating with the Online Payments platform
122
+ :raise ResponseException: when an error response was received from the Online Payments platform
123
+ """
124
+
125
+ @abstractmethod
126
+ def put_with_binary_response(self, relative_path: str, request_headers: Optional[List[RequestHeader]],
127
+ request_parameters: Optional[ParamRequest], request_body: Any,
128
+ context: Optional[CallContext]) -> BinaryResponse:
129
+ """
130
+ Corresponds to the HTTP PUT method.
131
+
132
+ :param relative_path: The path to call, relative to the base URI.
133
+ :param request_headers: An optional list of request headers.
134
+ :param request_parameters: An optional set of request parameters.
135
+ :param request_body: The optional request body to send.
136
+ :param context: The optional call context to use.
137
+ :raise CommunicationException: when an exception occurred communicating with the Online Payments platform
138
+ :raise ResponseException: when an error response was received from the Online Payments platform
139
+ """
140
+
141
+ @abstractmethod
142
+ def put(self, relative_path: str, request_headers: Optional[List[RequestHeader]],
143
+ request_parameters: Optional[ParamRequest], request_body: Any,
144
+ response_type: Type[T],
145
+ context: Optional[CallContext]) -> T:
146
+ """
147
+ Corresponds to the HTTP PUT method.
148
+
149
+ :param relative_path: The path to call, relative to the base URI.
150
+ :param request_headers: An optional list of request headers.
151
+ :param request_parameters: An optional set of request parameters.
152
+ :param request_body: The optional request body to send.
153
+ :param response_type: The type of response to return.
154
+ :param context: The optional call context to use.
155
+ :raise CommunicationException: when an exception occurred communicating with the Online Payments platform
156
+ :raise ResponseException: when an error response was received from the Online Payments platform
157
+ """
158
+
159
+ @abstractmethod
160
+ def close_idle_connections(self, idle_time):
161
+ """
162
+ Utility method that delegates the call to this communicator's connection
163
+ if that's an instance of PooledConnection. If not this method does nothing.
164
+
165
+ :param idle_time: a datetime.timedelta object indicating the idle time
166
+ """
167
+
168
+ @abstractmethod
169
+ def close_expired_connections(self):
170
+ """
171
+ Utility method that delegates the call to this communicator's connection
172
+ if that's an instance of PooledConnection. If not this method does nothing.
173
+ """
174
+
175
+ @property
176
+ @abstractmethod
177
+ def marshaller(self) -> Marshaller:
178
+ """
179
+ :return: The Marshaller object associated with this communicator. Never None.
180
+ """