mollie-api-py 1.0.0__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.
- mollie/__init__.py +18 -0
- mollie/_hooks/__init__.py +5 -0
- mollie/_hooks/mollie_hooks.py +165 -0
- mollie/_hooks/registration.py +18 -0
- mollie/_hooks/sdkhooks.py +76 -0
- mollie/_hooks/types.py +113 -0
- mollie/_version.py +15 -0
- mollie/balance_transfers.py +651 -0
- mollie/balances.py +1105 -0
- mollie/basesdk.py +360 -0
- mollie/capabilities.py +209 -0
- mollie/captures.py +677 -0
- mollie/chargebacks_sdk.py +675 -0
- mollie/client_links.py +325 -0
- mollie/clients.py +409 -0
- mollie/customers.py +1563 -0
- mollie/delayed_routing.py +421 -0
- mollie/httpclient.py +125 -0
- mollie/invoices.py +429 -0
- mollie/mandates.py +895 -0
- mollie/methods.py +789 -0
- mollie/models/__init__.py +4002 -0
- mollie/models/address.py +29 -0
- mollie/models/amount.py +25 -0
- mollie/models/amount_nullable.py +24 -0
- mollie/models/apierror.py +40 -0
- mollie/models/balance_card_audience.py +10 -0
- mollie/models/balance_card_issuer.py +12 -0
- mollie/models/balance_card_region.py +12 -0
- mollie/models/balance_fee_type.py +43 -0
- mollie/models/balance_prepayment_part_type.py +13 -0
- mollie/models/balance_report_grouping.py +10 -0
- mollie/models/balance_transaction_type.py +47 -0
- mollie/models/balance_transfer_category.py +17 -0
- mollie/models/balance_transfer_category_response.py +18 -0
- mollie/models/balance_transfer_destination_type.py +14 -0
- mollie/models/balance_transfer_party_type.py +10 -0
- mollie/models/balance_transfer_party_type_response.py +11 -0
- mollie/models/balance_transfer_status.py +13 -0
- mollie/models/balance_transfer_status_reason_response.py +19 -0
- mollie/models/billingaddress.py +154 -0
- mollie/models/cancel_paymentop.py +93 -0
- mollie/models/cancel_refundop.py +86 -0
- mollie/models/cancel_subscriptionop.py +100 -0
- mollie/models/capability_requirement_status.py +15 -0
- mollie/models/capability_status.py +12 -0
- mollie/models/capability_status_reason.py +10 -0
- mollie/models/capture_mode.py +15 -0
- mollie/models/capture_mode_response.py +16 -0
- mollie/models/capture_response.py +265 -0
- mollie/models/client_link_request.py +210 -0
- mollie/models/client_link_response.py +56 -0
- mollie/models/clienterror.py +30 -0
- mollie/models/components_sub_totals.py +127 -0
- mollie/models/create_captureop.py +43 -0
- mollie/models/create_client_linkop.py +29 -0
- mollie/models/create_connect_balance_transferop.py +32 -0
- mollie/models/create_customer_paymentop.py +43 -0
- mollie/models/create_customerop.py +29 -0
- mollie/models/create_mandateop.py +43 -0
- mollie/models/create_payment_linkop.py +325 -0
- mollie/models/create_paymentop.py +73 -0
- mollie/models/create_profileop.py +29 -0
- mollie/models/create_refundop.py +43 -0
- mollie/models/create_sales_invoiceop.py +29 -0
- mollie/models/create_subscriptionop.py +43 -0
- mollie/models/create_webhook.py +123 -0
- mollie/models/create_webhookop.py +69 -0
- mollie/models/currencies.py +20 -0
- mollie/models/customer_response.py +169 -0
- mollie/models/delete_customerop.py +91 -0
- mollie/models/delete_payment_linkop.py +91 -0
- mollie/models/delete_profileop.py +29 -0
- mollie/models/delete_sales_invoiceop.py +44 -0
- mollie/models/delete_values_sales_invoice.py +54 -0
- mollie/models/delete_webhookop.py +56 -0
- mollie/models/entity_balance.py +325 -0
- mollie/models/entity_balance_report.py +541 -0
- mollie/models/entity_balance_transaction.py +1068 -0
- mollie/models/entity_balance_transfer.py +62 -0
- mollie/models/entity_balance_transfer_party.py +28 -0
- mollie/models/entity_balance_transfer_party_response.py +32 -0
- mollie/models/entity_balance_transfer_response.py +159 -0
- mollie/models/entity_capability.py +75 -0
- mollie/models/entity_capability_requirement.py +87 -0
- mollie/models/entity_capture.py +63 -0
- mollie/models/entity_chargeback.py +247 -0
- mollie/models/entity_customer.py +86 -0
- mollie/models/entity_event.py +46 -0
- mollie/models/entity_invoice.py +247 -0
- mollie/models/entity_method_get.py +329 -0
- mollie/models/entity_onboarding_status.py +95 -0
- mollie/models/entity_organization.py +178 -0
- mollie/models/entity_payment_route.py +111 -0
- mollie/models/entity_payment_route_response.py +140 -0
- mollie/models/entity_permission.py +61 -0
- mollie/models/entity_refund_response.py +361 -0
- mollie/models/entity_route.py +96 -0
- mollie/models/entity_settlement.py +467 -0
- mollie/models/entity_terminal.py +160 -0
- mollie/models/entity_webhook.py +122 -0
- mollie/models/entity_webhook_event.py +149 -0
- mollie/models/error_response.py +70 -0
- mollie/models/get_balance_reportop.py +126 -0
- mollie/models/get_balanceop.py +71 -0
- mollie/models/get_captureop.py +129 -0
- mollie/models/get_chargebackop.py +129 -0
- mollie/models/get_clientop.py +216 -0
- mollie/models/get_connect_balance_transferop.py +71 -0
- mollie/models/get_current_organizationop.py +22 -0
- mollie/models/get_current_profileop.py +22 -0
- mollie/models/get_customerop.py +286 -0
- mollie/models/get_invoiceop.py +29 -0
- mollie/models/get_mandateop.py +86 -0
- mollie/models/get_methodop.py +199 -0
- mollie/models/get_next_settlementop.py +22 -0
- mollie/models/get_onboarding_statusop.py +22 -0
- mollie/models/get_open_settlementop.py +22 -0
- mollie/models/get_organizationop.py +71 -0
- mollie/models/get_partner_statusop.py +231 -0
- mollie/models/get_payment_link_paymentsop.py +188 -0
- mollie/models/get_payment_linkop.py +77 -0
- mollie/models/get_paymentop.py +128 -0
- mollie/models/get_permissionop.py +73 -0
- mollie/models/get_primary_balanceop.py +22 -0
- mollie/models/get_profileop.py +71 -0
- mollie/models/get_refundop.py +129 -0
- mollie/models/get_sales_invoiceop.py +75 -0
- mollie/models/get_settlementop.py +29 -0
- mollie/models/get_subscriptionop.py +86 -0
- mollie/models/get_terminalop.py +77 -0
- mollie/models/get_webhook_eventop.py +71 -0
- mollie/models/get_webhookop.py +71 -0
- mollie/models/internal/__init__.py +54 -0
- mollie/models/internal/globals.py +59 -0
- mollie/models/line_categories.py +13 -0
- mollie/models/line_categories_response.py +14 -0
- mollie/models/list_all_chargebacksop.py +236 -0
- mollie/models/list_all_methodsop.py +249 -0
- mollie/models/list_all_refundsop.py +230 -0
- mollie/models/list_all_subscriptionsop.py +202 -0
- mollie/models/list_balance_transactionsop.py +174 -0
- mollie/models/list_balancesop.py +171 -0
- mollie/models/list_capabilitiesop.py +62 -0
- mollie/models/list_capture_response.py +264 -0
- mollie/models/list_capturesop.py +185 -0
- mollie/models/list_chargebacksop.py +185 -0
- mollie/models/list_clientsop.py +269 -0
- mollie/models/list_connect_balance_transfersop.py +177 -0
- mollie/models/list_customer_paymentsop.py +231 -0
- mollie/models/list_customer_response.py +164 -0
- mollie/models/list_customersop.py +172 -0
- mollie/models/list_entity_balance.py +322 -0
- mollie/models/list_entity_chargeback.py +244 -0
- mollie/models/list_entity_invoice.py +244 -0
- mollie/models/list_entity_method.py +315 -0
- mollie/models/list_entity_method_all.py +391 -0
- mollie/models/list_entity_permission.py +56 -0
- mollie/models/list_entity_refund.py +352 -0
- mollie/models/list_entity_settlement.py +457 -0
- mollie/models/list_entity_terminal.py +157 -0
- mollie/models/list_entity_webhook.py +117 -0
- mollie/models/list_invoicesop.py +175 -0
- mollie/models/list_links.py +68 -0
- mollie/models/list_mandate_response.py +261 -0
- mollie/models/list_mandatesop.py +186 -0
- mollie/models/list_methodsop.py +332 -0
- mollie/models/list_payment_linksop.py +159 -0
- mollie/models/list_payment_response.py +1953 -0
- mollie/models/list_paymentsop.py +217 -0
- mollie/models/list_permissionsop.py +85 -0
- mollie/models/list_profile_response.py +194 -0
- mollie/models/list_profilesop.py +118 -0
- mollie/models/list_refundsop.py +189 -0
- mollie/models/list_route_get_response.py +97 -0
- mollie/models/list_sales_invoice_response.py +505 -0
- mollie/models/list_sales_invoicesop.py +172 -0
- mollie/models/list_settlement_capturesop.py +187 -0
- mollie/models/list_settlement_chargebacksop.py +187 -0
- mollie/models/list_settlement_paymentsop.py +233 -0
- mollie/models/list_settlement_refundsop.py +191 -0
- mollie/models/list_settlementsop.py +178 -0
- mollie/models/list_subscription_paymentsop.py +242 -0
- mollie/models/list_subscription_response.py +344 -0
- mollie/models/list_subscriptionsop.py +189 -0
- mollie/models/list_terminalsop.py +172 -0
- mollie/models/list_webhooksop.py +189 -0
- mollie/models/locale.py +32 -0
- mollie/models/locale_response.py +33 -0
- mollie/models/mandate_details_card_label_response.py +22 -0
- mollie/models/mandate_method.py +15 -0
- mollie/models/mandate_method_response.py +16 -0
- mollie/models/mandate_request.py +160 -0
- mollie/models/mandate_response.py +264 -0
- mollie/models/metadata.py +19 -0
- mollie/models/method.py +50 -0
- mollie/models/method_include_wallets_parameter.py +8 -0
- mollie/models/method_resource_parameter.py +9 -0
- mollie/models/method_response.py +59 -0
- mollie/models/method_status.py +15 -0
- mollie/models/mode.py +12 -0
- mollie/models/no_response_error.py +17 -0
- mollie/models/onboarding_vat_regulation.py +16 -0
- mollie/models/organization_vat_regulation.py +17 -0
- mollie/models/payment_address.py +130 -0
- mollie/models/payment_create_routeop.py +43 -0
- mollie/models/payment_details_card_audition_response.py +12 -0
- mollie/models/payment_details_card_funding_response.py +14 -0
- mollie/models/payment_details_card_label_response.py +23 -0
- mollie/models/payment_details_card_security_response.py +12 -0
- mollie/models/payment_details_failure_reason_response.py +25 -0
- mollie/models/payment_details_fee_region_response.py +20 -0
- mollie/models/payment_details_receipt_card_read_method_response.py +17 -0
- mollie/models/payment_details_receipt_card_verification_method_response.py +21 -0
- mollie/models/payment_details_seller_protection_response.py +20 -0
- mollie/models/payment_details_wallet_response.py +11 -0
- mollie/models/payment_line_item.py +96 -0
- mollie/models/payment_line_item_response.py +104 -0
- mollie/models/payment_line_type.py +20 -0
- mollie/models/payment_line_type_response.py +21 -0
- mollie/models/payment_link_method.py +36 -0
- mollie/models/payment_link_method_response.py +37 -0
- mollie/models/payment_link_response.py +348 -0
- mollie/models/payment_link_sequence_type.py +9 -0
- mollie/models/payment_link_sequence_type_response.py +10 -0
- mollie/models/payment_list_routesop.py +140 -0
- mollie/models/payment_method.py +53 -0
- mollie/models/payment_request.py +919 -0
- mollie/models/payment_response.py +1953 -0
- mollie/models/profile_request.py +67 -0
- mollie/models/profile_response.py +197 -0
- mollie/models/profile_review_status_response.py +12 -0
- mollie/models/recurring_line_item.py +77 -0
- mollie/models/refund_external_reference_type.py +10 -0
- mollie/models/refund_external_reference_type_response.py +11 -0
- mollie/models/refund_request.py +200 -0
- mollie/models/release_authorizationop.py +108 -0
- mollie/models/request_apple_pay_payment_sessionop.py +76 -0
- mollie/models/responsevalidationerror.py +27 -0
- mollie/models/revoke_mandateop.py +100 -0
- mollie/models/route_create_response.py +97 -0
- mollie/models/route_destination_type.py +10 -0
- mollie/models/route_destination_type_response.py +11 -0
- mollie/models/sales_invoice_discount.py +21 -0
- mollie/models/sales_invoice_discount_response.py +25 -0
- mollie/models/sales_invoice_discount_type.py +11 -0
- mollie/models/sales_invoice_discount_type_response.py +12 -0
- mollie/models/sales_invoice_email_details.py +20 -0
- mollie/models/sales_invoice_line_item.py +67 -0
- mollie/models/sales_invoice_line_item_response.py +70 -0
- mollie/models/sales_invoice_payment_details.py +59 -0
- mollie/models/sales_invoice_payment_details_response.py +66 -0
- mollie/models/sales_invoice_payment_details_source.py +12 -0
- mollie/models/sales_invoice_payment_details_source_response.py +13 -0
- mollie/models/sales_invoice_payment_term.py +16 -0
- mollie/models/sales_invoice_payment_term_response.py +17 -0
- mollie/models/sales_invoice_recipient.py +176 -0
- mollie/models/sales_invoice_recipient_locale.py +18 -0
- mollie/models/sales_invoice_recipient_locale_response.py +19 -0
- mollie/models/sales_invoice_recipient_response.py +182 -0
- mollie/models/sales_invoice_recipient_type.py +13 -0
- mollie/models/sales_invoice_recipient_type_response.py +14 -0
- mollie/models/sales_invoice_request.py +256 -0
- mollie/models/sales_invoice_response.py +509 -0
- mollie/models/sales_invoice_status.py +25 -0
- mollie/models/sales_invoice_status_response.py +26 -0
- mollie/models/sales_invoice_vat_mode.py +13 -0
- mollie/models/sales_invoice_vat_mode_response.py +14 -0
- mollie/models/sales_invoice_vat_scheme.py +11 -0
- mollie/models/sales_invoice_vat_scheme_response.py +12 -0
- mollie/models/security.py +35 -0
- mollie/models/sequence_type.py +10 -0
- mollie/models/sequence_type_response.py +11 -0
- mollie/models/sorting.py +9 -0
- mollie/models/status_reason.py +168 -0
- mollie/models/sub_group.py +52 -0
- mollie/models/sub_totals.py +120 -0
- mollie/models/submit_onboarding_dataop.py +214 -0
- mollie/models/subscription_method.py +12 -0
- mollie/models/subscription_method_response.py +13 -0
- mollie/models/subscription_request.py +213 -0
- mollie/models/subscription_response.py +349 -0
- mollie/models/terminal_brand.py +12 -0
- mollie/models/terminal_model.py +16 -0
- mollie/models/test_webhookop.py +64 -0
- mollie/models/update_customerop.py +43 -0
- mollie/models/update_payment_linkop.py +172 -0
- mollie/models/update_paymentop.py +332 -0
- mollie/models/update_profileop.py +147 -0
- mollie/models/update_sales_invoiceop.py +44 -0
- mollie/models/update_subscriptionop.py +188 -0
- mollie/models/update_values_sales_invoice.py +176 -0
- mollie/models/update_webhookop.py +83 -0
- mollie/models/url.py +24 -0
- mollie/models/url_nullable.py +25 -0
- mollie/models/webhook_event_types.py +18 -0
- mollie/models/webhook_status.py +14 -0
- mollie/onboarding.py +403 -0
- mollie/organizations.py +579 -0
- mollie/payment_links.py +1323 -0
- mollie/payments_sdk.py +1385 -0
- mollie/permissions.py +397 -0
- mollie/profiles.py +1209 -0
- mollie/py.typed +1 -0
- mollie/refunds_sdk.py +1111 -0
- mollie/sales_invoices.py +1121 -0
- mollie/sdk.py +265 -0
- mollie/sdkconfiguration.py +50 -0
- mollie/settlements.py +1735 -0
- mollie/subscriptions.py +1617 -0
- mollie/terminals.py +427 -0
- mollie/types/__init__.py +21 -0
- mollie/types/basemodel.py +39 -0
- mollie/utils/__init__.py +200 -0
- mollie/utils/annotations.py +79 -0
- mollie/utils/datetimes.py +23 -0
- mollie/utils/enums.py +74 -0
- mollie/utils/eventstreaming.py +248 -0
- mollie/utils/forms.py +223 -0
- mollie/utils/headers.py +136 -0
- mollie/utils/logger.py +27 -0
- mollie/utils/metadata.py +118 -0
- mollie/utils/queryparams.py +205 -0
- mollie/utils/requestbodies.py +66 -0
- mollie/utils/retries.py +217 -0
- mollie/utils/security.py +195 -0
- mollie/utils/serializers.py +249 -0
- mollie/utils/unmarshal_json_response.py +24 -0
- mollie/utils/url.py +155 -0
- mollie/utils/values.py +137 -0
- mollie/wallets.py +263 -0
- mollie/webhook_events.py +211 -0
- mollie/webhooks.py +1305 -0
- mollie_api_py-1.0.0.dist-info/METADATA +834 -0
- mollie_api_py-1.0.0.dist-info/RECORD +337 -0
- mollie_api_py-1.0.0.dist-info/WHEEL +4 -0
- mollie_api_py-1.0.0.dist-info/licenses/LICENSE.md +24 -0
mollie/payments_sdk.py
ADDED
|
@@ -0,0 +1,1385 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
|
|
3
|
+
from .basesdk import BaseSDK
|
|
4
|
+
from mollie import models, utils
|
|
5
|
+
from mollie._hooks import HookContext
|
|
6
|
+
from mollie.types import OptionalNullable, UNSET
|
|
7
|
+
from mollie.utils import get_security_from_env
|
|
8
|
+
from mollie.utils.unmarshal_json_response import unmarshal_json_response
|
|
9
|
+
from typing import Any, Mapping, Optional, Union
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class PaymentsSDK(BaseSDK):
|
|
13
|
+
def create(
|
|
14
|
+
self,
|
|
15
|
+
*,
|
|
16
|
+
include: OptionalNullable[str] = UNSET,
|
|
17
|
+
idempotency_key: Optional[str] = None,
|
|
18
|
+
payment_request: Optional[
|
|
19
|
+
Union[models.PaymentRequest, models.PaymentRequestTypedDict]
|
|
20
|
+
] = None,
|
|
21
|
+
retries: OptionalNullable[utils.RetryConfig] = UNSET,
|
|
22
|
+
server_url: Optional[str] = None,
|
|
23
|
+
timeout_ms: Optional[int] = None,
|
|
24
|
+
http_headers: Optional[Mapping[str, str]] = None,
|
|
25
|
+
) -> models.PaymentResponse:
|
|
26
|
+
r"""Create payment
|
|
27
|
+
|
|
28
|
+
Payment creation is elemental to the Mollie API: this is where most payment
|
|
29
|
+
implementations start off.
|
|
30
|
+
|
|
31
|
+
Once you have created a payment, you should redirect your customer to the
|
|
32
|
+
URL in the `_links.checkout` property from the response.
|
|
33
|
+
|
|
34
|
+
To wrap your head around the payment process, an explanation and flow charts
|
|
35
|
+
can be found in the 'Accepting payments' guide.
|
|
36
|
+
|
|
37
|
+
If you specify the `method` parameter when creating a payment, optional
|
|
38
|
+
additional parameters may be available for the payment method that are not listed below. Please refer to the
|
|
39
|
+
guide on [method-specific parameters](extra-payment-parameters).
|
|
40
|
+
|
|
41
|
+
:param include: This endpoint allows you to include additional information via the `include` query string parameter.
|
|
42
|
+
:param idempotency_key: A unique key to ensure idempotent requests. This key should be a UUID v4 string.
|
|
43
|
+
:param payment_request:
|
|
44
|
+
:param retries: Override the default retry configuration for this method
|
|
45
|
+
:param server_url: Override the default server URL for this method
|
|
46
|
+
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
|
|
47
|
+
:param http_headers: Additional headers to set or replace on requests.
|
|
48
|
+
"""
|
|
49
|
+
base_url = None
|
|
50
|
+
url_variables = None
|
|
51
|
+
if timeout_ms is None:
|
|
52
|
+
timeout_ms = self.sdk_configuration.timeout_ms
|
|
53
|
+
|
|
54
|
+
if server_url is not None:
|
|
55
|
+
base_url = server_url
|
|
56
|
+
else:
|
|
57
|
+
base_url = self._get_url(base_url, url_variables)
|
|
58
|
+
|
|
59
|
+
request = models.CreatePaymentRequest(
|
|
60
|
+
include=include,
|
|
61
|
+
idempotency_key=idempotency_key,
|
|
62
|
+
payment_request=utils.get_pydantic_model(
|
|
63
|
+
payment_request, Optional[models.PaymentRequest]
|
|
64
|
+
),
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
req = self._build_request(
|
|
68
|
+
method="POST",
|
|
69
|
+
path="/payments",
|
|
70
|
+
base_url=base_url,
|
|
71
|
+
url_variables=url_variables,
|
|
72
|
+
request=request,
|
|
73
|
+
request_body_required=False,
|
|
74
|
+
request_has_path_params=False,
|
|
75
|
+
request_has_query_params=True,
|
|
76
|
+
user_agent_header="user-agent",
|
|
77
|
+
accept_header_value="application/hal+json",
|
|
78
|
+
http_headers=http_headers,
|
|
79
|
+
security=self.sdk_configuration.security,
|
|
80
|
+
get_serialized_body=lambda: utils.serialize_request_body(
|
|
81
|
+
request.payment_request,
|
|
82
|
+
False,
|
|
83
|
+
True,
|
|
84
|
+
"json",
|
|
85
|
+
Optional[models.PaymentRequest],
|
|
86
|
+
),
|
|
87
|
+
timeout_ms=timeout_ms,
|
|
88
|
+
)
|
|
89
|
+
|
|
90
|
+
if retries == UNSET:
|
|
91
|
+
if self.sdk_configuration.retry_config is not UNSET:
|
|
92
|
+
retries = self.sdk_configuration.retry_config
|
|
93
|
+
else:
|
|
94
|
+
retries = utils.RetryConfig(
|
|
95
|
+
"backoff", utils.BackoffStrategy(500, 5000, 2, 7500), True
|
|
96
|
+
)
|
|
97
|
+
|
|
98
|
+
retry_config = None
|
|
99
|
+
if isinstance(retries, utils.RetryConfig):
|
|
100
|
+
retry_config = (retries, ["5xx"])
|
|
101
|
+
|
|
102
|
+
http_res = self.do_request(
|
|
103
|
+
hook_ctx=HookContext(
|
|
104
|
+
config=self.sdk_configuration,
|
|
105
|
+
base_url=base_url or "",
|
|
106
|
+
operation_id="create-payment",
|
|
107
|
+
oauth2_scopes=None,
|
|
108
|
+
security_source=get_security_from_env(
|
|
109
|
+
self.sdk_configuration.security, models.Security
|
|
110
|
+
),
|
|
111
|
+
),
|
|
112
|
+
request=req,
|
|
113
|
+
error_status_codes=["422", "4XX", "503", "5XX"],
|
|
114
|
+
retry_config=retry_config,
|
|
115
|
+
)
|
|
116
|
+
|
|
117
|
+
response_data: Any = None
|
|
118
|
+
if utils.match_response(http_res, "201", "application/hal+json"):
|
|
119
|
+
return unmarshal_json_response(models.PaymentResponse, http_res)
|
|
120
|
+
if utils.match_response(http_res, "422", "application/hal+json"):
|
|
121
|
+
response_data = unmarshal_json_response(models.ErrorResponseData, http_res)
|
|
122
|
+
raise models.ErrorResponse(response_data, http_res)
|
|
123
|
+
if utils.match_response(http_res, "503", "application/hal+json"):
|
|
124
|
+
response_data = unmarshal_json_response(models.ErrorResponseData, http_res)
|
|
125
|
+
raise models.ErrorResponse(response_data, http_res)
|
|
126
|
+
if utils.match_response(http_res, "4XX", "*"):
|
|
127
|
+
http_res_text = utils.stream_to_text(http_res)
|
|
128
|
+
raise models.APIError("API error occurred", http_res, http_res_text)
|
|
129
|
+
if utils.match_response(http_res, "5XX", "*"):
|
|
130
|
+
http_res_text = utils.stream_to_text(http_res)
|
|
131
|
+
raise models.APIError("API error occurred", http_res, http_res_text)
|
|
132
|
+
|
|
133
|
+
raise models.APIError("Unexpected response received", http_res)
|
|
134
|
+
|
|
135
|
+
async def create_async(
|
|
136
|
+
self,
|
|
137
|
+
*,
|
|
138
|
+
include: OptionalNullable[str] = UNSET,
|
|
139
|
+
idempotency_key: Optional[str] = None,
|
|
140
|
+
payment_request: Optional[
|
|
141
|
+
Union[models.PaymentRequest, models.PaymentRequestTypedDict]
|
|
142
|
+
] = None,
|
|
143
|
+
retries: OptionalNullable[utils.RetryConfig] = UNSET,
|
|
144
|
+
server_url: Optional[str] = None,
|
|
145
|
+
timeout_ms: Optional[int] = None,
|
|
146
|
+
http_headers: Optional[Mapping[str, str]] = None,
|
|
147
|
+
) -> models.PaymentResponse:
|
|
148
|
+
r"""Create payment
|
|
149
|
+
|
|
150
|
+
Payment creation is elemental to the Mollie API: this is where most payment
|
|
151
|
+
implementations start off.
|
|
152
|
+
|
|
153
|
+
Once you have created a payment, you should redirect your customer to the
|
|
154
|
+
URL in the `_links.checkout` property from the response.
|
|
155
|
+
|
|
156
|
+
To wrap your head around the payment process, an explanation and flow charts
|
|
157
|
+
can be found in the 'Accepting payments' guide.
|
|
158
|
+
|
|
159
|
+
If you specify the `method` parameter when creating a payment, optional
|
|
160
|
+
additional parameters may be available for the payment method that are not listed below. Please refer to the
|
|
161
|
+
guide on [method-specific parameters](extra-payment-parameters).
|
|
162
|
+
|
|
163
|
+
:param include: This endpoint allows you to include additional information via the `include` query string parameter.
|
|
164
|
+
:param idempotency_key: A unique key to ensure idempotent requests. This key should be a UUID v4 string.
|
|
165
|
+
:param payment_request:
|
|
166
|
+
:param retries: Override the default retry configuration for this method
|
|
167
|
+
:param server_url: Override the default server URL for this method
|
|
168
|
+
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
|
|
169
|
+
:param http_headers: Additional headers to set or replace on requests.
|
|
170
|
+
"""
|
|
171
|
+
base_url = None
|
|
172
|
+
url_variables = None
|
|
173
|
+
if timeout_ms is None:
|
|
174
|
+
timeout_ms = self.sdk_configuration.timeout_ms
|
|
175
|
+
|
|
176
|
+
if server_url is not None:
|
|
177
|
+
base_url = server_url
|
|
178
|
+
else:
|
|
179
|
+
base_url = self._get_url(base_url, url_variables)
|
|
180
|
+
|
|
181
|
+
request = models.CreatePaymentRequest(
|
|
182
|
+
include=include,
|
|
183
|
+
idempotency_key=idempotency_key,
|
|
184
|
+
payment_request=utils.get_pydantic_model(
|
|
185
|
+
payment_request, Optional[models.PaymentRequest]
|
|
186
|
+
),
|
|
187
|
+
)
|
|
188
|
+
|
|
189
|
+
req = self._build_request_async(
|
|
190
|
+
method="POST",
|
|
191
|
+
path="/payments",
|
|
192
|
+
base_url=base_url,
|
|
193
|
+
url_variables=url_variables,
|
|
194
|
+
request=request,
|
|
195
|
+
request_body_required=False,
|
|
196
|
+
request_has_path_params=False,
|
|
197
|
+
request_has_query_params=True,
|
|
198
|
+
user_agent_header="user-agent",
|
|
199
|
+
accept_header_value="application/hal+json",
|
|
200
|
+
http_headers=http_headers,
|
|
201
|
+
security=self.sdk_configuration.security,
|
|
202
|
+
get_serialized_body=lambda: utils.serialize_request_body(
|
|
203
|
+
request.payment_request,
|
|
204
|
+
False,
|
|
205
|
+
True,
|
|
206
|
+
"json",
|
|
207
|
+
Optional[models.PaymentRequest],
|
|
208
|
+
),
|
|
209
|
+
timeout_ms=timeout_ms,
|
|
210
|
+
)
|
|
211
|
+
|
|
212
|
+
if retries == UNSET:
|
|
213
|
+
if self.sdk_configuration.retry_config is not UNSET:
|
|
214
|
+
retries = self.sdk_configuration.retry_config
|
|
215
|
+
else:
|
|
216
|
+
retries = utils.RetryConfig(
|
|
217
|
+
"backoff", utils.BackoffStrategy(500, 5000, 2, 7500), True
|
|
218
|
+
)
|
|
219
|
+
|
|
220
|
+
retry_config = None
|
|
221
|
+
if isinstance(retries, utils.RetryConfig):
|
|
222
|
+
retry_config = (retries, ["5xx"])
|
|
223
|
+
|
|
224
|
+
http_res = await self.do_request_async(
|
|
225
|
+
hook_ctx=HookContext(
|
|
226
|
+
config=self.sdk_configuration,
|
|
227
|
+
base_url=base_url or "",
|
|
228
|
+
operation_id="create-payment",
|
|
229
|
+
oauth2_scopes=None,
|
|
230
|
+
security_source=get_security_from_env(
|
|
231
|
+
self.sdk_configuration.security, models.Security
|
|
232
|
+
),
|
|
233
|
+
),
|
|
234
|
+
request=req,
|
|
235
|
+
error_status_codes=["422", "4XX", "503", "5XX"],
|
|
236
|
+
retry_config=retry_config,
|
|
237
|
+
)
|
|
238
|
+
|
|
239
|
+
response_data: Any = None
|
|
240
|
+
if utils.match_response(http_res, "201", "application/hal+json"):
|
|
241
|
+
return unmarshal_json_response(models.PaymentResponse, http_res)
|
|
242
|
+
if utils.match_response(http_res, "422", "application/hal+json"):
|
|
243
|
+
response_data = unmarshal_json_response(models.ErrorResponseData, http_res)
|
|
244
|
+
raise models.ErrorResponse(response_data, http_res)
|
|
245
|
+
if utils.match_response(http_res, "503", "application/hal+json"):
|
|
246
|
+
response_data = unmarshal_json_response(models.ErrorResponseData, http_res)
|
|
247
|
+
raise models.ErrorResponse(response_data, http_res)
|
|
248
|
+
if utils.match_response(http_res, "4XX", "*"):
|
|
249
|
+
http_res_text = await utils.stream_to_text_async(http_res)
|
|
250
|
+
raise models.APIError("API error occurred", http_res, http_res_text)
|
|
251
|
+
if utils.match_response(http_res, "5XX", "*"):
|
|
252
|
+
http_res_text = await utils.stream_to_text_async(http_res)
|
|
253
|
+
raise models.APIError("API error occurred", http_res, http_res_text)
|
|
254
|
+
|
|
255
|
+
raise models.APIError("Unexpected response received", http_res)
|
|
256
|
+
|
|
257
|
+
def list(
|
|
258
|
+
self,
|
|
259
|
+
*,
|
|
260
|
+
from_: Optional[str] = None,
|
|
261
|
+
limit: OptionalNullable[int] = UNSET,
|
|
262
|
+
sort: Optional[models.Sorting] = None,
|
|
263
|
+
profile_id: Optional[str] = None,
|
|
264
|
+
testmode: Optional[bool] = None,
|
|
265
|
+
idempotency_key: Optional[str] = None,
|
|
266
|
+
retries: OptionalNullable[utils.RetryConfig] = UNSET,
|
|
267
|
+
server_url: Optional[str] = None,
|
|
268
|
+
timeout_ms: Optional[int] = None,
|
|
269
|
+
http_headers: Optional[Mapping[str, str]] = None,
|
|
270
|
+
) -> models.ListPaymentsResponse:
|
|
271
|
+
r"""List payments
|
|
272
|
+
|
|
273
|
+
Retrieve all payments created with the current website profile.
|
|
274
|
+
|
|
275
|
+
The results are paginated.
|
|
276
|
+
|
|
277
|
+
:param from_: Provide an ID to start the result set from the item with the given ID and onwards. This allows you to paginate the result set.
|
|
278
|
+
:param limit: The maximum number of items to return. Defaults to 50 items.
|
|
279
|
+
:param sort: Used for setting the direction of the result set. Defaults to descending order, meaning the results are ordered from newest to oldest.
|
|
280
|
+
:param profile_id: The identifier referring to the [profile](get-profile) you wish to retrieve the resources for. Most API credentials are linked to a single profile. In these cases the `profileId` can be omitted. For organization-level credentials such as OAuth access tokens however, the `profileId` parameter is required.
|
|
281
|
+
:param testmode: Most API credentials are specifically created for either live mode or test mode. In those cases the `testmode` query parameter can be omitted. For organization-level credentials such as OAuth access tokens, you can enable test mode by setting the `testmode` query parameter to `true`. Test entities cannot be retrieved when the endpoint is set to live mode, and vice versa.
|
|
282
|
+
:param idempotency_key: A unique key to ensure idempotent requests. This key should be a UUID v4 string.
|
|
283
|
+
:param retries: Override the default retry configuration for this method
|
|
284
|
+
:param server_url: Override the default server URL for this method
|
|
285
|
+
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
|
|
286
|
+
:param http_headers: Additional headers to set or replace on requests.
|
|
287
|
+
"""
|
|
288
|
+
base_url = None
|
|
289
|
+
url_variables = None
|
|
290
|
+
if timeout_ms is None:
|
|
291
|
+
timeout_ms = self.sdk_configuration.timeout_ms
|
|
292
|
+
|
|
293
|
+
if server_url is not None:
|
|
294
|
+
base_url = server_url
|
|
295
|
+
else:
|
|
296
|
+
base_url = self._get_url(base_url, url_variables)
|
|
297
|
+
|
|
298
|
+
request = models.ListPaymentsRequest(
|
|
299
|
+
from_=from_,
|
|
300
|
+
limit=limit,
|
|
301
|
+
sort=sort,
|
|
302
|
+
profile_id=profile_id,
|
|
303
|
+
testmode=testmode,
|
|
304
|
+
idempotency_key=idempotency_key,
|
|
305
|
+
)
|
|
306
|
+
|
|
307
|
+
req = self._build_request(
|
|
308
|
+
method="GET",
|
|
309
|
+
path="/payments",
|
|
310
|
+
base_url=base_url,
|
|
311
|
+
url_variables=url_variables,
|
|
312
|
+
request=request,
|
|
313
|
+
request_body_required=False,
|
|
314
|
+
request_has_path_params=False,
|
|
315
|
+
request_has_query_params=True,
|
|
316
|
+
user_agent_header="user-agent",
|
|
317
|
+
accept_header_value="application/hal+json",
|
|
318
|
+
http_headers=http_headers,
|
|
319
|
+
_globals=models.ListPaymentsGlobals(
|
|
320
|
+
profile_id=self.sdk_configuration.globals.profile_id,
|
|
321
|
+
testmode=self.sdk_configuration.globals.testmode,
|
|
322
|
+
),
|
|
323
|
+
security=self.sdk_configuration.security,
|
|
324
|
+
timeout_ms=timeout_ms,
|
|
325
|
+
)
|
|
326
|
+
|
|
327
|
+
if retries == UNSET:
|
|
328
|
+
if self.sdk_configuration.retry_config is not UNSET:
|
|
329
|
+
retries = self.sdk_configuration.retry_config
|
|
330
|
+
else:
|
|
331
|
+
retries = utils.RetryConfig(
|
|
332
|
+
"backoff", utils.BackoffStrategy(500, 5000, 2, 7500), True
|
|
333
|
+
)
|
|
334
|
+
|
|
335
|
+
retry_config = None
|
|
336
|
+
if isinstance(retries, utils.RetryConfig):
|
|
337
|
+
retry_config = (retries, ["5xx"])
|
|
338
|
+
|
|
339
|
+
http_res = self.do_request(
|
|
340
|
+
hook_ctx=HookContext(
|
|
341
|
+
config=self.sdk_configuration,
|
|
342
|
+
base_url=base_url or "",
|
|
343
|
+
operation_id="list-payments",
|
|
344
|
+
oauth2_scopes=None,
|
|
345
|
+
security_source=get_security_from_env(
|
|
346
|
+
self.sdk_configuration.security, models.Security
|
|
347
|
+
),
|
|
348
|
+
),
|
|
349
|
+
request=req,
|
|
350
|
+
error_status_codes=["400", "4XX", "5XX"],
|
|
351
|
+
retry_config=retry_config,
|
|
352
|
+
)
|
|
353
|
+
|
|
354
|
+
response_data: Any = None
|
|
355
|
+
if utils.match_response(http_res, "200", "application/hal+json"):
|
|
356
|
+
return unmarshal_json_response(models.ListPaymentsResponse, http_res)
|
|
357
|
+
if utils.match_response(http_res, "400", "application/hal+json"):
|
|
358
|
+
response_data = unmarshal_json_response(models.ErrorResponseData, http_res)
|
|
359
|
+
raise models.ErrorResponse(response_data, http_res)
|
|
360
|
+
if utils.match_response(http_res, "4XX", "*"):
|
|
361
|
+
http_res_text = utils.stream_to_text(http_res)
|
|
362
|
+
raise models.APIError("API error occurred", http_res, http_res_text)
|
|
363
|
+
if utils.match_response(http_res, "5XX", "*"):
|
|
364
|
+
http_res_text = utils.stream_to_text(http_res)
|
|
365
|
+
raise models.APIError("API error occurred", http_res, http_res_text)
|
|
366
|
+
|
|
367
|
+
raise models.APIError("Unexpected response received", http_res)
|
|
368
|
+
|
|
369
|
+
async def list_async(
|
|
370
|
+
self,
|
|
371
|
+
*,
|
|
372
|
+
from_: Optional[str] = None,
|
|
373
|
+
limit: OptionalNullable[int] = UNSET,
|
|
374
|
+
sort: Optional[models.Sorting] = None,
|
|
375
|
+
profile_id: Optional[str] = None,
|
|
376
|
+
testmode: Optional[bool] = None,
|
|
377
|
+
idempotency_key: Optional[str] = None,
|
|
378
|
+
retries: OptionalNullable[utils.RetryConfig] = UNSET,
|
|
379
|
+
server_url: Optional[str] = None,
|
|
380
|
+
timeout_ms: Optional[int] = None,
|
|
381
|
+
http_headers: Optional[Mapping[str, str]] = None,
|
|
382
|
+
) -> models.ListPaymentsResponse:
|
|
383
|
+
r"""List payments
|
|
384
|
+
|
|
385
|
+
Retrieve all payments created with the current website profile.
|
|
386
|
+
|
|
387
|
+
The results are paginated.
|
|
388
|
+
|
|
389
|
+
:param from_: Provide an ID to start the result set from the item with the given ID and onwards. This allows you to paginate the result set.
|
|
390
|
+
:param limit: The maximum number of items to return. Defaults to 50 items.
|
|
391
|
+
:param sort: Used for setting the direction of the result set. Defaults to descending order, meaning the results are ordered from newest to oldest.
|
|
392
|
+
:param profile_id: The identifier referring to the [profile](get-profile) you wish to retrieve the resources for. Most API credentials are linked to a single profile. In these cases the `profileId` can be omitted. For organization-level credentials such as OAuth access tokens however, the `profileId` parameter is required.
|
|
393
|
+
:param testmode: Most API credentials are specifically created for either live mode or test mode. In those cases the `testmode` query parameter can be omitted. For organization-level credentials such as OAuth access tokens, you can enable test mode by setting the `testmode` query parameter to `true`. Test entities cannot be retrieved when the endpoint is set to live mode, and vice versa.
|
|
394
|
+
:param idempotency_key: A unique key to ensure idempotent requests. This key should be a UUID v4 string.
|
|
395
|
+
:param retries: Override the default retry configuration for this method
|
|
396
|
+
:param server_url: Override the default server URL for this method
|
|
397
|
+
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
|
|
398
|
+
:param http_headers: Additional headers to set or replace on requests.
|
|
399
|
+
"""
|
|
400
|
+
base_url = None
|
|
401
|
+
url_variables = None
|
|
402
|
+
if timeout_ms is None:
|
|
403
|
+
timeout_ms = self.sdk_configuration.timeout_ms
|
|
404
|
+
|
|
405
|
+
if server_url is not None:
|
|
406
|
+
base_url = server_url
|
|
407
|
+
else:
|
|
408
|
+
base_url = self._get_url(base_url, url_variables)
|
|
409
|
+
|
|
410
|
+
request = models.ListPaymentsRequest(
|
|
411
|
+
from_=from_,
|
|
412
|
+
limit=limit,
|
|
413
|
+
sort=sort,
|
|
414
|
+
profile_id=profile_id,
|
|
415
|
+
testmode=testmode,
|
|
416
|
+
idempotency_key=idempotency_key,
|
|
417
|
+
)
|
|
418
|
+
|
|
419
|
+
req = self._build_request_async(
|
|
420
|
+
method="GET",
|
|
421
|
+
path="/payments",
|
|
422
|
+
base_url=base_url,
|
|
423
|
+
url_variables=url_variables,
|
|
424
|
+
request=request,
|
|
425
|
+
request_body_required=False,
|
|
426
|
+
request_has_path_params=False,
|
|
427
|
+
request_has_query_params=True,
|
|
428
|
+
user_agent_header="user-agent",
|
|
429
|
+
accept_header_value="application/hal+json",
|
|
430
|
+
http_headers=http_headers,
|
|
431
|
+
_globals=models.ListPaymentsGlobals(
|
|
432
|
+
profile_id=self.sdk_configuration.globals.profile_id,
|
|
433
|
+
testmode=self.sdk_configuration.globals.testmode,
|
|
434
|
+
),
|
|
435
|
+
security=self.sdk_configuration.security,
|
|
436
|
+
timeout_ms=timeout_ms,
|
|
437
|
+
)
|
|
438
|
+
|
|
439
|
+
if retries == UNSET:
|
|
440
|
+
if self.sdk_configuration.retry_config is not UNSET:
|
|
441
|
+
retries = self.sdk_configuration.retry_config
|
|
442
|
+
else:
|
|
443
|
+
retries = utils.RetryConfig(
|
|
444
|
+
"backoff", utils.BackoffStrategy(500, 5000, 2, 7500), True
|
|
445
|
+
)
|
|
446
|
+
|
|
447
|
+
retry_config = None
|
|
448
|
+
if isinstance(retries, utils.RetryConfig):
|
|
449
|
+
retry_config = (retries, ["5xx"])
|
|
450
|
+
|
|
451
|
+
http_res = await self.do_request_async(
|
|
452
|
+
hook_ctx=HookContext(
|
|
453
|
+
config=self.sdk_configuration,
|
|
454
|
+
base_url=base_url or "",
|
|
455
|
+
operation_id="list-payments",
|
|
456
|
+
oauth2_scopes=None,
|
|
457
|
+
security_source=get_security_from_env(
|
|
458
|
+
self.sdk_configuration.security, models.Security
|
|
459
|
+
),
|
|
460
|
+
),
|
|
461
|
+
request=req,
|
|
462
|
+
error_status_codes=["400", "4XX", "5XX"],
|
|
463
|
+
retry_config=retry_config,
|
|
464
|
+
)
|
|
465
|
+
|
|
466
|
+
response_data: Any = None
|
|
467
|
+
if utils.match_response(http_res, "200", "application/hal+json"):
|
|
468
|
+
return unmarshal_json_response(models.ListPaymentsResponse, http_res)
|
|
469
|
+
if utils.match_response(http_res, "400", "application/hal+json"):
|
|
470
|
+
response_data = unmarshal_json_response(models.ErrorResponseData, http_res)
|
|
471
|
+
raise models.ErrorResponse(response_data, http_res)
|
|
472
|
+
if utils.match_response(http_res, "4XX", "*"):
|
|
473
|
+
http_res_text = await utils.stream_to_text_async(http_res)
|
|
474
|
+
raise models.APIError("API error occurred", http_res, http_res_text)
|
|
475
|
+
if utils.match_response(http_res, "5XX", "*"):
|
|
476
|
+
http_res_text = await utils.stream_to_text_async(http_res)
|
|
477
|
+
raise models.APIError("API error occurred", http_res, http_res_text)
|
|
478
|
+
|
|
479
|
+
raise models.APIError("Unexpected response received", http_res)
|
|
480
|
+
|
|
481
|
+
def get(
|
|
482
|
+
self,
|
|
483
|
+
*,
|
|
484
|
+
payment_id: str,
|
|
485
|
+
include: OptionalNullable[str] = UNSET,
|
|
486
|
+
embed: OptionalNullable[str] = UNSET,
|
|
487
|
+
testmode: Optional[bool] = None,
|
|
488
|
+
idempotency_key: Optional[str] = None,
|
|
489
|
+
retries: OptionalNullable[utils.RetryConfig] = UNSET,
|
|
490
|
+
server_url: Optional[str] = None,
|
|
491
|
+
timeout_ms: Optional[int] = None,
|
|
492
|
+
http_headers: Optional[Mapping[str, str]] = None,
|
|
493
|
+
) -> models.PaymentResponse:
|
|
494
|
+
r"""Get payment
|
|
495
|
+
|
|
496
|
+
Retrieve a single payment object by its payment ID.
|
|
497
|
+
|
|
498
|
+
:param payment_id: Provide the ID of the related payment.
|
|
499
|
+
:param include: This endpoint allows you to include additional information via the `include` query string parameter.
|
|
500
|
+
:param embed: This endpoint allows embedding related API items by appending the following values via the `embed` query string parameter.
|
|
501
|
+
:param testmode: Most API credentials are specifically created for either live mode or test mode. In those cases the `testmode` query parameter can be omitted. For organization-level credentials such as OAuth access tokens, you can enable test mode by setting the `testmode` query parameter to `true`. Test entities cannot be retrieved when the endpoint is set to live mode, and vice versa.
|
|
502
|
+
:param idempotency_key: A unique key to ensure idempotent requests. This key should be a UUID v4 string.
|
|
503
|
+
:param retries: Override the default retry configuration for this method
|
|
504
|
+
:param server_url: Override the default server URL for this method
|
|
505
|
+
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
|
|
506
|
+
:param http_headers: Additional headers to set or replace on requests.
|
|
507
|
+
"""
|
|
508
|
+
base_url = None
|
|
509
|
+
url_variables = None
|
|
510
|
+
if timeout_ms is None:
|
|
511
|
+
timeout_ms = self.sdk_configuration.timeout_ms
|
|
512
|
+
|
|
513
|
+
if server_url is not None:
|
|
514
|
+
base_url = server_url
|
|
515
|
+
else:
|
|
516
|
+
base_url = self._get_url(base_url, url_variables)
|
|
517
|
+
|
|
518
|
+
request = models.GetPaymentRequest(
|
|
519
|
+
payment_id=payment_id,
|
|
520
|
+
include=include,
|
|
521
|
+
embed=embed,
|
|
522
|
+
testmode=testmode,
|
|
523
|
+
idempotency_key=idempotency_key,
|
|
524
|
+
)
|
|
525
|
+
|
|
526
|
+
req = self._build_request(
|
|
527
|
+
method="GET",
|
|
528
|
+
path="/payments/{paymentId}",
|
|
529
|
+
base_url=base_url,
|
|
530
|
+
url_variables=url_variables,
|
|
531
|
+
request=request,
|
|
532
|
+
request_body_required=False,
|
|
533
|
+
request_has_path_params=True,
|
|
534
|
+
request_has_query_params=True,
|
|
535
|
+
user_agent_header="user-agent",
|
|
536
|
+
accept_header_value="application/hal+json",
|
|
537
|
+
http_headers=http_headers,
|
|
538
|
+
_globals=models.GetPaymentGlobals(
|
|
539
|
+
testmode=self.sdk_configuration.globals.testmode,
|
|
540
|
+
),
|
|
541
|
+
security=self.sdk_configuration.security,
|
|
542
|
+
timeout_ms=timeout_ms,
|
|
543
|
+
)
|
|
544
|
+
|
|
545
|
+
if retries == UNSET:
|
|
546
|
+
if self.sdk_configuration.retry_config is not UNSET:
|
|
547
|
+
retries = self.sdk_configuration.retry_config
|
|
548
|
+
else:
|
|
549
|
+
retries = utils.RetryConfig(
|
|
550
|
+
"backoff", utils.BackoffStrategy(500, 5000, 2, 7500), True
|
|
551
|
+
)
|
|
552
|
+
|
|
553
|
+
retry_config = None
|
|
554
|
+
if isinstance(retries, utils.RetryConfig):
|
|
555
|
+
retry_config = (retries, ["5xx"])
|
|
556
|
+
|
|
557
|
+
http_res = self.do_request(
|
|
558
|
+
hook_ctx=HookContext(
|
|
559
|
+
config=self.sdk_configuration,
|
|
560
|
+
base_url=base_url or "",
|
|
561
|
+
operation_id="get-payment",
|
|
562
|
+
oauth2_scopes=None,
|
|
563
|
+
security_source=get_security_from_env(
|
|
564
|
+
self.sdk_configuration.security, models.Security
|
|
565
|
+
),
|
|
566
|
+
),
|
|
567
|
+
request=req,
|
|
568
|
+
error_status_codes=["404", "4XX", "5XX"],
|
|
569
|
+
retry_config=retry_config,
|
|
570
|
+
)
|
|
571
|
+
|
|
572
|
+
response_data: Any = None
|
|
573
|
+
if utils.match_response(http_res, "200", "application/hal+json"):
|
|
574
|
+
return unmarshal_json_response(models.PaymentResponse, http_res)
|
|
575
|
+
if utils.match_response(http_res, "404", "application/hal+json"):
|
|
576
|
+
response_data = unmarshal_json_response(models.ErrorResponseData, http_res)
|
|
577
|
+
raise models.ErrorResponse(response_data, http_res)
|
|
578
|
+
if utils.match_response(http_res, "4XX", "*"):
|
|
579
|
+
http_res_text = utils.stream_to_text(http_res)
|
|
580
|
+
raise models.APIError("API error occurred", http_res, http_res_text)
|
|
581
|
+
if utils.match_response(http_res, "5XX", "*"):
|
|
582
|
+
http_res_text = utils.stream_to_text(http_res)
|
|
583
|
+
raise models.APIError("API error occurred", http_res, http_res_text)
|
|
584
|
+
|
|
585
|
+
raise models.APIError("Unexpected response received", http_res)
|
|
586
|
+
|
|
587
|
+
async def get_async(
|
|
588
|
+
self,
|
|
589
|
+
*,
|
|
590
|
+
payment_id: str,
|
|
591
|
+
include: OptionalNullable[str] = UNSET,
|
|
592
|
+
embed: OptionalNullable[str] = UNSET,
|
|
593
|
+
testmode: Optional[bool] = None,
|
|
594
|
+
idempotency_key: Optional[str] = None,
|
|
595
|
+
retries: OptionalNullable[utils.RetryConfig] = UNSET,
|
|
596
|
+
server_url: Optional[str] = None,
|
|
597
|
+
timeout_ms: Optional[int] = None,
|
|
598
|
+
http_headers: Optional[Mapping[str, str]] = None,
|
|
599
|
+
) -> models.PaymentResponse:
|
|
600
|
+
r"""Get payment
|
|
601
|
+
|
|
602
|
+
Retrieve a single payment object by its payment ID.
|
|
603
|
+
|
|
604
|
+
:param payment_id: Provide the ID of the related payment.
|
|
605
|
+
:param include: This endpoint allows you to include additional information via the `include` query string parameter.
|
|
606
|
+
:param embed: This endpoint allows embedding related API items by appending the following values via the `embed` query string parameter.
|
|
607
|
+
:param testmode: Most API credentials are specifically created for either live mode or test mode. In those cases the `testmode` query parameter can be omitted. For organization-level credentials such as OAuth access tokens, you can enable test mode by setting the `testmode` query parameter to `true`. Test entities cannot be retrieved when the endpoint is set to live mode, and vice versa.
|
|
608
|
+
:param idempotency_key: A unique key to ensure idempotent requests. This key should be a UUID v4 string.
|
|
609
|
+
:param retries: Override the default retry configuration for this method
|
|
610
|
+
:param server_url: Override the default server URL for this method
|
|
611
|
+
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
|
|
612
|
+
:param http_headers: Additional headers to set or replace on requests.
|
|
613
|
+
"""
|
|
614
|
+
base_url = None
|
|
615
|
+
url_variables = None
|
|
616
|
+
if timeout_ms is None:
|
|
617
|
+
timeout_ms = self.sdk_configuration.timeout_ms
|
|
618
|
+
|
|
619
|
+
if server_url is not None:
|
|
620
|
+
base_url = server_url
|
|
621
|
+
else:
|
|
622
|
+
base_url = self._get_url(base_url, url_variables)
|
|
623
|
+
|
|
624
|
+
request = models.GetPaymentRequest(
|
|
625
|
+
payment_id=payment_id,
|
|
626
|
+
include=include,
|
|
627
|
+
embed=embed,
|
|
628
|
+
testmode=testmode,
|
|
629
|
+
idempotency_key=idempotency_key,
|
|
630
|
+
)
|
|
631
|
+
|
|
632
|
+
req = self._build_request_async(
|
|
633
|
+
method="GET",
|
|
634
|
+
path="/payments/{paymentId}",
|
|
635
|
+
base_url=base_url,
|
|
636
|
+
url_variables=url_variables,
|
|
637
|
+
request=request,
|
|
638
|
+
request_body_required=False,
|
|
639
|
+
request_has_path_params=True,
|
|
640
|
+
request_has_query_params=True,
|
|
641
|
+
user_agent_header="user-agent",
|
|
642
|
+
accept_header_value="application/hal+json",
|
|
643
|
+
http_headers=http_headers,
|
|
644
|
+
_globals=models.GetPaymentGlobals(
|
|
645
|
+
testmode=self.sdk_configuration.globals.testmode,
|
|
646
|
+
),
|
|
647
|
+
security=self.sdk_configuration.security,
|
|
648
|
+
timeout_ms=timeout_ms,
|
|
649
|
+
)
|
|
650
|
+
|
|
651
|
+
if retries == UNSET:
|
|
652
|
+
if self.sdk_configuration.retry_config is not UNSET:
|
|
653
|
+
retries = self.sdk_configuration.retry_config
|
|
654
|
+
else:
|
|
655
|
+
retries = utils.RetryConfig(
|
|
656
|
+
"backoff", utils.BackoffStrategy(500, 5000, 2, 7500), True
|
|
657
|
+
)
|
|
658
|
+
|
|
659
|
+
retry_config = None
|
|
660
|
+
if isinstance(retries, utils.RetryConfig):
|
|
661
|
+
retry_config = (retries, ["5xx"])
|
|
662
|
+
|
|
663
|
+
http_res = await self.do_request_async(
|
|
664
|
+
hook_ctx=HookContext(
|
|
665
|
+
config=self.sdk_configuration,
|
|
666
|
+
base_url=base_url or "",
|
|
667
|
+
operation_id="get-payment",
|
|
668
|
+
oauth2_scopes=None,
|
|
669
|
+
security_source=get_security_from_env(
|
|
670
|
+
self.sdk_configuration.security, models.Security
|
|
671
|
+
),
|
|
672
|
+
),
|
|
673
|
+
request=req,
|
|
674
|
+
error_status_codes=["404", "4XX", "5XX"],
|
|
675
|
+
retry_config=retry_config,
|
|
676
|
+
)
|
|
677
|
+
|
|
678
|
+
response_data: Any = None
|
|
679
|
+
if utils.match_response(http_res, "200", "application/hal+json"):
|
|
680
|
+
return unmarshal_json_response(models.PaymentResponse, http_res)
|
|
681
|
+
if utils.match_response(http_res, "404", "application/hal+json"):
|
|
682
|
+
response_data = unmarshal_json_response(models.ErrorResponseData, http_res)
|
|
683
|
+
raise models.ErrorResponse(response_data, http_res)
|
|
684
|
+
if utils.match_response(http_res, "4XX", "*"):
|
|
685
|
+
http_res_text = await utils.stream_to_text_async(http_res)
|
|
686
|
+
raise models.APIError("API error occurred", http_res, http_res_text)
|
|
687
|
+
if utils.match_response(http_res, "5XX", "*"):
|
|
688
|
+
http_res_text = await utils.stream_to_text_async(http_res)
|
|
689
|
+
raise models.APIError("API error occurred", http_res, http_res_text)
|
|
690
|
+
|
|
691
|
+
raise models.APIError("Unexpected response received", http_res)
|
|
692
|
+
|
|
693
|
+
def update(
|
|
694
|
+
self,
|
|
695
|
+
*,
|
|
696
|
+
payment_id: str,
|
|
697
|
+
idempotency_key: Optional[str] = None,
|
|
698
|
+
request_body: Optional[
|
|
699
|
+
Union[
|
|
700
|
+
models.UpdatePaymentRequestBody,
|
|
701
|
+
models.UpdatePaymentRequestBodyTypedDict,
|
|
702
|
+
]
|
|
703
|
+
] = None,
|
|
704
|
+
retries: OptionalNullable[utils.RetryConfig] = UNSET,
|
|
705
|
+
server_url: Optional[str] = None,
|
|
706
|
+
timeout_ms: Optional[int] = None,
|
|
707
|
+
http_headers: Optional[Mapping[str, str]] = None,
|
|
708
|
+
) -> models.PaymentResponse:
|
|
709
|
+
r"""Update payment
|
|
710
|
+
|
|
711
|
+
Certain details of an existing payment can be updated.
|
|
712
|
+
|
|
713
|
+
Updating the payment details will not result in a webhook call.
|
|
714
|
+
|
|
715
|
+
:param payment_id: Provide the ID of the related payment.
|
|
716
|
+
:param idempotency_key: A unique key to ensure idempotent requests. This key should be a UUID v4 string.
|
|
717
|
+
:param request_body:
|
|
718
|
+
:param retries: Override the default retry configuration for this method
|
|
719
|
+
:param server_url: Override the default server URL for this method
|
|
720
|
+
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
|
|
721
|
+
:param http_headers: Additional headers to set or replace on requests.
|
|
722
|
+
"""
|
|
723
|
+
base_url = None
|
|
724
|
+
url_variables = None
|
|
725
|
+
if timeout_ms is None:
|
|
726
|
+
timeout_ms = self.sdk_configuration.timeout_ms
|
|
727
|
+
|
|
728
|
+
if server_url is not None:
|
|
729
|
+
base_url = server_url
|
|
730
|
+
else:
|
|
731
|
+
base_url = self._get_url(base_url, url_variables)
|
|
732
|
+
|
|
733
|
+
request = models.UpdatePaymentRequest(
|
|
734
|
+
payment_id=payment_id,
|
|
735
|
+
idempotency_key=idempotency_key,
|
|
736
|
+
request_body=utils.get_pydantic_model(
|
|
737
|
+
request_body, Optional[models.UpdatePaymentRequestBody]
|
|
738
|
+
),
|
|
739
|
+
)
|
|
740
|
+
|
|
741
|
+
req = self._build_request(
|
|
742
|
+
method="PATCH",
|
|
743
|
+
path="/payments/{paymentId}",
|
|
744
|
+
base_url=base_url,
|
|
745
|
+
url_variables=url_variables,
|
|
746
|
+
request=request,
|
|
747
|
+
request_body_required=False,
|
|
748
|
+
request_has_path_params=True,
|
|
749
|
+
request_has_query_params=True,
|
|
750
|
+
user_agent_header="user-agent",
|
|
751
|
+
accept_header_value="application/hal+json",
|
|
752
|
+
http_headers=http_headers,
|
|
753
|
+
security=self.sdk_configuration.security,
|
|
754
|
+
get_serialized_body=lambda: utils.serialize_request_body(
|
|
755
|
+
request.request_body,
|
|
756
|
+
False,
|
|
757
|
+
True,
|
|
758
|
+
"json",
|
|
759
|
+
Optional[models.UpdatePaymentRequestBody],
|
|
760
|
+
),
|
|
761
|
+
timeout_ms=timeout_ms,
|
|
762
|
+
)
|
|
763
|
+
|
|
764
|
+
if retries == UNSET:
|
|
765
|
+
if self.sdk_configuration.retry_config is not UNSET:
|
|
766
|
+
retries = self.sdk_configuration.retry_config
|
|
767
|
+
else:
|
|
768
|
+
retries = utils.RetryConfig(
|
|
769
|
+
"backoff", utils.BackoffStrategy(500, 5000, 2, 7500), True
|
|
770
|
+
)
|
|
771
|
+
|
|
772
|
+
retry_config = None
|
|
773
|
+
if isinstance(retries, utils.RetryConfig):
|
|
774
|
+
retry_config = (retries, ["5xx"])
|
|
775
|
+
|
|
776
|
+
http_res = self.do_request(
|
|
777
|
+
hook_ctx=HookContext(
|
|
778
|
+
config=self.sdk_configuration,
|
|
779
|
+
base_url=base_url or "",
|
|
780
|
+
operation_id="update-payment",
|
|
781
|
+
oauth2_scopes=None,
|
|
782
|
+
security_source=get_security_from_env(
|
|
783
|
+
self.sdk_configuration.security, models.Security
|
|
784
|
+
),
|
|
785
|
+
),
|
|
786
|
+
request=req,
|
|
787
|
+
error_status_codes=["404", "422", "4XX", "5XX"],
|
|
788
|
+
retry_config=retry_config,
|
|
789
|
+
)
|
|
790
|
+
|
|
791
|
+
response_data: Any = None
|
|
792
|
+
if utils.match_response(http_res, "200", "application/hal+json"):
|
|
793
|
+
return unmarshal_json_response(models.PaymentResponse, http_res)
|
|
794
|
+
if utils.match_response(http_res, ["404", "422"], "application/hal+json"):
|
|
795
|
+
response_data = unmarshal_json_response(models.ErrorResponseData, http_res)
|
|
796
|
+
raise models.ErrorResponse(response_data, http_res)
|
|
797
|
+
if utils.match_response(http_res, "4XX", "*"):
|
|
798
|
+
http_res_text = utils.stream_to_text(http_res)
|
|
799
|
+
raise models.APIError("API error occurred", http_res, http_res_text)
|
|
800
|
+
if utils.match_response(http_res, "5XX", "*"):
|
|
801
|
+
http_res_text = utils.stream_to_text(http_res)
|
|
802
|
+
raise models.APIError("API error occurred", http_res, http_res_text)
|
|
803
|
+
|
|
804
|
+
raise models.APIError("Unexpected response received", http_res)
|
|
805
|
+
|
|
806
|
+
async def update_async(
|
|
807
|
+
self,
|
|
808
|
+
*,
|
|
809
|
+
payment_id: str,
|
|
810
|
+
idempotency_key: Optional[str] = None,
|
|
811
|
+
request_body: Optional[
|
|
812
|
+
Union[
|
|
813
|
+
models.UpdatePaymentRequestBody,
|
|
814
|
+
models.UpdatePaymentRequestBodyTypedDict,
|
|
815
|
+
]
|
|
816
|
+
] = None,
|
|
817
|
+
retries: OptionalNullable[utils.RetryConfig] = UNSET,
|
|
818
|
+
server_url: Optional[str] = None,
|
|
819
|
+
timeout_ms: Optional[int] = None,
|
|
820
|
+
http_headers: Optional[Mapping[str, str]] = None,
|
|
821
|
+
) -> models.PaymentResponse:
|
|
822
|
+
r"""Update payment
|
|
823
|
+
|
|
824
|
+
Certain details of an existing payment can be updated.
|
|
825
|
+
|
|
826
|
+
Updating the payment details will not result in a webhook call.
|
|
827
|
+
|
|
828
|
+
:param payment_id: Provide the ID of the related payment.
|
|
829
|
+
:param idempotency_key: A unique key to ensure idempotent requests. This key should be a UUID v4 string.
|
|
830
|
+
:param request_body:
|
|
831
|
+
:param retries: Override the default retry configuration for this method
|
|
832
|
+
:param server_url: Override the default server URL for this method
|
|
833
|
+
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
|
|
834
|
+
:param http_headers: Additional headers to set or replace on requests.
|
|
835
|
+
"""
|
|
836
|
+
base_url = None
|
|
837
|
+
url_variables = None
|
|
838
|
+
if timeout_ms is None:
|
|
839
|
+
timeout_ms = self.sdk_configuration.timeout_ms
|
|
840
|
+
|
|
841
|
+
if server_url is not None:
|
|
842
|
+
base_url = server_url
|
|
843
|
+
else:
|
|
844
|
+
base_url = self._get_url(base_url, url_variables)
|
|
845
|
+
|
|
846
|
+
request = models.UpdatePaymentRequest(
|
|
847
|
+
payment_id=payment_id,
|
|
848
|
+
idempotency_key=idempotency_key,
|
|
849
|
+
request_body=utils.get_pydantic_model(
|
|
850
|
+
request_body, Optional[models.UpdatePaymentRequestBody]
|
|
851
|
+
),
|
|
852
|
+
)
|
|
853
|
+
|
|
854
|
+
req = self._build_request_async(
|
|
855
|
+
method="PATCH",
|
|
856
|
+
path="/payments/{paymentId}",
|
|
857
|
+
base_url=base_url,
|
|
858
|
+
url_variables=url_variables,
|
|
859
|
+
request=request,
|
|
860
|
+
request_body_required=False,
|
|
861
|
+
request_has_path_params=True,
|
|
862
|
+
request_has_query_params=True,
|
|
863
|
+
user_agent_header="user-agent",
|
|
864
|
+
accept_header_value="application/hal+json",
|
|
865
|
+
http_headers=http_headers,
|
|
866
|
+
security=self.sdk_configuration.security,
|
|
867
|
+
get_serialized_body=lambda: utils.serialize_request_body(
|
|
868
|
+
request.request_body,
|
|
869
|
+
False,
|
|
870
|
+
True,
|
|
871
|
+
"json",
|
|
872
|
+
Optional[models.UpdatePaymentRequestBody],
|
|
873
|
+
),
|
|
874
|
+
timeout_ms=timeout_ms,
|
|
875
|
+
)
|
|
876
|
+
|
|
877
|
+
if retries == UNSET:
|
|
878
|
+
if self.sdk_configuration.retry_config is not UNSET:
|
|
879
|
+
retries = self.sdk_configuration.retry_config
|
|
880
|
+
else:
|
|
881
|
+
retries = utils.RetryConfig(
|
|
882
|
+
"backoff", utils.BackoffStrategy(500, 5000, 2, 7500), True
|
|
883
|
+
)
|
|
884
|
+
|
|
885
|
+
retry_config = None
|
|
886
|
+
if isinstance(retries, utils.RetryConfig):
|
|
887
|
+
retry_config = (retries, ["5xx"])
|
|
888
|
+
|
|
889
|
+
http_res = await self.do_request_async(
|
|
890
|
+
hook_ctx=HookContext(
|
|
891
|
+
config=self.sdk_configuration,
|
|
892
|
+
base_url=base_url or "",
|
|
893
|
+
operation_id="update-payment",
|
|
894
|
+
oauth2_scopes=None,
|
|
895
|
+
security_source=get_security_from_env(
|
|
896
|
+
self.sdk_configuration.security, models.Security
|
|
897
|
+
),
|
|
898
|
+
),
|
|
899
|
+
request=req,
|
|
900
|
+
error_status_codes=["404", "422", "4XX", "5XX"],
|
|
901
|
+
retry_config=retry_config,
|
|
902
|
+
)
|
|
903
|
+
|
|
904
|
+
response_data: Any = None
|
|
905
|
+
if utils.match_response(http_res, "200", "application/hal+json"):
|
|
906
|
+
return unmarshal_json_response(models.PaymentResponse, http_res)
|
|
907
|
+
if utils.match_response(http_res, ["404", "422"], "application/hal+json"):
|
|
908
|
+
response_data = unmarshal_json_response(models.ErrorResponseData, http_res)
|
|
909
|
+
raise models.ErrorResponse(response_data, http_res)
|
|
910
|
+
if utils.match_response(http_res, "4XX", "*"):
|
|
911
|
+
http_res_text = await utils.stream_to_text_async(http_res)
|
|
912
|
+
raise models.APIError("API error occurred", http_res, http_res_text)
|
|
913
|
+
if utils.match_response(http_res, "5XX", "*"):
|
|
914
|
+
http_res_text = await utils.stream_to_text_async(http_res)
|
|
915
|
+
raise models.APIError("API error occurred", http_res, http_res_text)
|
|
916
|
+
|
|
917
|
+
raise models.APIError("Unexpected response received", http_res)
|
|
918
|
+
|
|
919
|
+
def cancel(
|
|
920
|
+
self,
|
|
921
|
+
*,
|
|
922
|
+
payment_id: str,
|
|
923
|
+
idempotency_key: Optional[str] = None,
|
|
924
|
+
request_body: Optional[
|
|
925
|
+
Union[
|
|
926
|
+
models.CancelPaymentRequestBody,
|
|
927
|
+
models.CancelPaymentRequestBodyTypedDict,
|
|
928
|
+
]
|
|
929
|
+
] = None,
|
|
930
|
+
retries: OptionalNullable[utils.RetryConfig] = UNSET,
|
|
931
|
+
server_url: Optional[str] = None,
|
|
932
|
+
timeout_ms: Optional[int] = None,
|
|
933
|
+
http_headers: Optional[Mapping[str, str]] = None,
|
|
934
|
+
) -> models.PaymentResponse:
|
|
935
|
+
r"""Cancel payment
|
|
936
|
+
|
|
937
|
+
Depending on the payment method, you may be able to cancel a payment for a certain amount of time — usually until
|
|
938
|
+
the next business day or as long as the payment status is open.
|
|
939
|
+
|
|
940
|
+
Payments may also be canceled manually from the Mollie Dashboard.
|
|
941
|
+
|
|
942
|
+
The `isCancelable` property on the [Payment object](get-payment) will indicate if the payment can be canceled.
|
|
943
|
+
|
|
944
|
+
:param payment_id: Provide the ID of the related payment.
|
|
945
|
+
:param idempotency_key: A unique key to ensure idempotent requests. This key should be a UUID v4 string.
|
|
946
|
+
:param request_body:
|
|
947
|
+
:param retries: Override the default retry configuration for this method
|
|
948
|
+
:param server_url: Override the default server URL for this method
|
|
949
|
+
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
|
|
950
|
+
:param http_headers: Additional headers to set or replace on requests.
|
|
951
|
+
"""
|
|
952
|
+
base_url = None
|
|
953
|
+
url_variables = None
|
|
954
|
+
if timeout_ms is None:
|
|
955
|
+
timeout_ms = self.sdk_configuration.timeout_ms
|
|
956
|
+
|
|
957
|
+
if server_url is not None:
|
|
958
|
+
base_url = server_url
|
|
959
|
+
else:
|
|
960
|
+
base_url = self._get_url(base_url, url_variables)
|
|
961
|
+
|
|
962
|
+
request = models.CancelPaymentRequest(
|
|
963
|
+
payment_id=payment_id,
|
|
964
|
+
idempotency_key=idempotency_key,
|
|
965
|
+
request_body=utils.get_pydantic_model(
|
|
966
|
+
request_body, Optional[models.CancelPaymentRequestBody]
|
|
967
|
+
),
|
|
968
|
+
)
|
|
969
|
+
|
|
970
|
+
req = self._build_request(
|
|
971
|
+
method="DELETE",
|
|
972
|
+
path="/payments/{paymentId}",
|
|
973
|
+
base_url=base_url,
|
|
974
|
+
url_variables=url_variables,
|
|
975
|
+
request=request,
|
|
976
|
+
request_body_required=False,
|
|
977
|
+
request_has_path_params=True,
|
|
978
|
+
request_has_query_params=True,
|
|
979
|
+
user_agent_header="user-agent",
|
|
980
|
+
accept_header_value="application/hal+json",
|
|
981
|
+
http_headers=http_headers,
|
|
982
|
+
security=self.sdk_configuration.security,
|
|
983
|
+
get_serialized_body=lambda: utils.serialize_request_body(
|
|
984
|
+
request.request_body,
|
|
985
|
+
False,
|
|
986
|
+
True,
|
|
987
|
+
"json",
|
|
988
|
+
Optional[models.CancelPaymentRequestBody],
|
|
989
|
+
),
|
|
990
|
+
timeout_ms=timeout_ms,
|
|
991
|
+
)
|
|
992
|
+
|
|
993
|
+
if retries == UNSET:
|
|
994
|
+
if self.sdk_configuration.retry_config is not UNSET:
|
|
995
|
+
retries = self.sdk_configuration.retry_config
|
|
996
|
+
else:
|
|
997
|
+
retries = utils.RetryConfig(
|
|
998
|
+
"backoff", utils.BackoffStrategy(500, 5000, 2, 7500), True
|
|
999
|
+
)
|
|
1000
|
+
|
|
1001
|
+
retry_config = None
|
|
1002
|
+
if isinstance(retries, utils.RetryConfig):
|
|
1003
|
+
retry_config = (retries, ["5xx"])
|
|
1004
|
+
|
|
1005
|
+
http_res = self.do_request(
|
|
1006
|
+
hook_ctx=HookContext(
|
|
1007
|
+
config=self.sdk_configuration,
|
|
1008
|
+
base_url=base_url or "",
|
|
1009
|
+
operation_id="cancel-payment",
|
|
1010
|
+
oauth2_scopes=None,
|
|
1011
|
+
security_source=get_security_from_env(
|
|
1012
|
+
self.sdk_configuration.security, models.Security
|
|
1013
|
+
),
|
|
1014
|
+
),
|
|
1015
|
+
request=req,
|
|
1016
|
+
error_status_codes=["404", "422", "4XX", "5XX"],
|
|
1017
|
+
retry_config=retry_config,
|
|
1018
|
+
)
|
|
1019
|
+
|
|
1020
|
+
response_data: Any = None
|
|
1021
|
+
if utils.match_response(http_res, "200", "application/hal+json"):
|
|
1022
|
+
return unmarshal_json_response(models.PaymentResponse, http_res)
|
|
1023
|
+
if utils.match_response(http_res, ["404", "422"], "application/hal+json"):
|
|
1024
|
+
response_data = unmarshal_json_response(models.ErrorResponseData, http_res)
|
|
1025
|
+
raise models.ErrorResponse(response_data, http_res)
|
|
1026
|
+
if utils.match_response(http_res, "4XX", "*"):
|
|
1027
|
+
http_res_text = utils.stream_to_text(http_res)
|
|
1028
|
+
raise models.APIError("API error occurred", http_res, http_res_text)
|
|
1029
|
+
if utils.match_response(http_res, "5XX", "*"):
|
|
1030
|
+
http_res_text = utils.stream_to_text(http_res)
|
|
1031
|
+
raise models.APIError("API error occurred", http_res, http_res_text)
|
|
1032
|
+
|
|
1033
|
+
raise models.APIError("Unexpected response received", http_res)
|
|
1034
|
+
|
|
1035
|
+
async def cancel_async(
|
|
1036
|
+
self,
|
|
1037
|
+
*,
|
|
1038
|
+
payment_id: str,
|
|
1039
|
+
idempotency_key: Optional[str] = None,
|
|
1040
|
+
request_body: Optional[
|
|
1041
|
+
Union[
|
|
1042
|
+
models.CancelPaymentRequestBody,
|
|
1043
|
+
models.CancelPaymentRequestBodyTypedDict,
|
|
1044
|
+
]
|
|
1045
|
+
] = None,
|
|
1046
|
+
retries: OptionalNullable[utils.RetryConfig] = UNSET,
|
|
1047
|
+
server_url: Optional[str] = None,
|
|
1048
|
+
timeout_ms: Optional[int] = None,
|
|
1049
|
+
http_headers: Optional[Mapping[str, str]] = None,
|
|
1050
|
+
) -> models.PaymentResponse:
|
|
1051
|
+
r"""Cancel payment
|
|
1052
|
+
|
|
1053
|
+
Depending on the payment method, you may be able to cancel a payment for a certain amount of time — usually until
|
|
1054
|
+
the next business day or as long as the payment status is open.
|
|
1055
|
+
|
|
1056
|
+
Payments may also be canceled manually from the Mollie Dashboard.
|
|
1057
|
+
|
|
1058
|
+
The `isCancelable` property on the [Payment object](get-payment) will indicate if the payment can be canceled.
|
|
1059
|
+
|
|
1060
|
+
:param payment_id: Provide the ID of the related payment.
|
|
1061
|
+
:param idempotency_key: A unique key to ensure idempotent requests. This key should be a UUID v4 string.
|
|
1062
|
+
:param request_body:
|
|
1063
|
+
:param retries: Override the default retry configuration for this method
|
|
1064
|
+
:param server_url: Override the default server URL for this method
|
|
1065
|
+
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
|
|
1066
|
+
:param http_headers: Additional headers to set or replace on requests.
|
|
1067
|
+
"""
|
|
1068
|
+
base_url = None
|
|
1069
|
+
url_variables = None
|
|
1070
|
+
if timeout_ms is None:
|
|
1071
|
+
timeout_ms = self.sdk_configuration.timeout_ms
|
|
1072
|
+
|
|
1073
|
+
if server_url is not None:
|
|
1074
|
+
base_url = server_url
|
|
1075
|
+
else:
|
|
1076
|
+
base_url = self._get_url(base_url, url_variables)
|
|
1077
|
+
|
|
1078
|
+
request = models.CancelPaymentRequest(
|
|
1079
|
+
payment_id=payment_id,
|
|
1080
|
+
idempotency_key=idempotency_key,
|
|
1081
|
+
request_body=utils.get_pydantic_model(
|
|
1082
|
+
request_body, Optional[models.CancelPaymentRequestBody]
|
|
1083
|
+
),
|
|
1084
|
+
)
|
|
1085
|
+
|
|
1086
|
+
req = self._build_request_async(
|
|
1087
|
+
method="DELETE",
|
|
1088
|
+
path="/payments/{paymentId}",
|
|
1089
|
+
base_url=base_url,
|
|
1090
|
+
url_variables=url_variables,
|
|
1091
|
+
request=request,
|
|
1092
|
+
request_body_required=False,
|
|
1093
|
+
request_has_path_params=True,
|
|
1094
|
+
request_has_query_params=True,
|
|
1095
|
+
user_agent_header="user-agent",
|
|
1096
|
+
accept_header_value="application/hal+json",
|
|
1097
|
+
http_headers=http_headers,
|
|
1098
|
+
security=self.sdk_configuration.security,
|
|
1099
|
+
get_serialized_body=lambda: utils.serialize_request_body(
|
|
1100
|
+
request.request_body,
|
|
1101
|
+
False,
|
|
1102
|
+
True,
|
|
1103
|
+
"json",
|
|
1104
|
+
Optional[models.CancelPaymentRequestBody],
|
|
1105
|
+
),
|
|
1106
|
+
timeout_ms=timeout_ms,
|
|
1107
|
+
)
|
|
1108
|
+
|
|
1109
|
+
if retries == UNSET:
|
|
1110
|
+
if self.sdk_configuration.retry_config is not UNSET:
|
|
1111
|
+
retries = self.sdk_configuration.retry_config
|
|
1112
|
+
else:
|
|
1113
|
+
retries = utils.RetryConfig(
|
|
1114
|
+
"backoff", utils.BackoffStrategy(500, 5000, 2, 7500), True
|
|
1115
|
+
)
|
|
1116
|
+
|
|
1117
|
+
retry_config = None
|
|
1118
|
+
if isinstance(retries, utils.RetryConfig):
|
|
1119
|
+
retry_config = (retries, ["5xx"])
|
|
1120
|
+
|
|
1121
|
+
http_res = await self.do_request_async(
|
|
1122
|
+
hook_ctx=HookContext(
|
|
1123
|
+
config=self.sdk_configuration,
|
|
1124
|
+
base_url=base_url or "",
|
|
1125
|
+
operation_id="cancel-payment",
|
|
1126
|
+
oauth2_scopes=None,
|
|
1127
|
+
security_source=get_security_from_env(
|
|
1128
|
+
self.sdk_configuration.security, models.Security
|
|
1129
|
+
),
|
|
1130
|
+
),
|
|
1131
|
+
request=req,
|
|
1132
|
+
error_status_codes=["404", "422", "4XX", "5XX"],
|
|
1133
|
+
retry_config=retry_config,
|
|
1134
|
+
)
|
|
1135
|
+
|
|
1136
|
+
response_data: Any = None
|
|
1137
|
+
if utils.match_response(http_res, "200", "application/hal+json"):
|
|
1138
|
+
return unmarshal_json_response(models.PaymentResponse, http_res)
|
|
1139
|
+
if utils.match_response(http_res, ["404", "422"], "application/hal+json"):
|
|
1140
|
+
response_data = unmarshal_json_response(models.ErrorResponseData, http_res)
|
|
1141
|
+
raise models.ErrorResponse(response_data, http_res)
|
|
1142
|
+
if utils.match_response(http_res, "4XX", "*"):
|
|
1143
|
+
http_res_text = await utils.stream_to_text_async(http_res)
|
|
1144
|
+
raise models.APIError("API error occurred", http_res, http_res_text)
|
|
1145
|
+
if utils.match_response(http_res, "5XX", "*"):
|
|
1146
|
+
http_res_text = await utils.stream_to_text_async(http_res)
|
|
1147
|
+
raise models.APIError("API error occurred", http_res, http_res_text)
|
|
1148
|
+
|
|
1149
|
+
raise models.APIError("Unexpected response received", http_res)
|
|
1150
|
+
|
|
1151
|
+
def release_authorization(
|
|
1152
|
+
self,
|
|
1153
|
+
*,
|
|
1154
|
+
payment_id: str,
|
|
1155
|
+
idempotency_key: Optional[str] = None,
|
|
1156
|
+
request_body: Optional[
|
|
1157
|
+
Union[
|
|
1158
|
+
models.ReleaseAuthorizationRequestBody,
|
|
1159
|
+
models.ReleaseAuthorizationRequestBodyTypedDict,
|
|
1160
|
+
]
|
|
1161
|
+
] = None,
|
|
1162
|
+
retries: OptionalNullable[utils.RetryConfig] = UNSET,
|
|
1163
|
+
server_url: Optional[str] = None,
|
|
1164
|
+
timeout_ms: Optional[int] = None,
|
|
1165
|
+
http_headers: Optional[Mapping[str, str]] = None,
|
|
1166
|
+
):
|
|
1167
|
+
r"""Release payment authorization
|
|
1168
|
+
|
|
1169
|
+
Releases the full remaining authorized amount. Call this endpoint when you will not be making any additional
|
|
1170
|
+
captures. Payment authorizations may also be released manually from the Mollie Dashboard.
|
|
1171
|
+
|
|
1172
|
+
Mollie will do its best to process release requests, but it is not guaranteed that it will succeed. It is up to
|
|
1173
|
+
the issuing bank if and when the hold will be released.
|
|
1174
|
+
|
|
1175
|
+
If the request does succeed, the payment status will change to `canceled` for payments without captures.
|
|
1176
|
+
If there is a successful capture, the payment will transition to `paid`.
|
|
1177
|
+
|
|
1178
|
+
:param payment_id: Provide the ID of the related payment.
|
|
1179
|
+
:param idempotency_key: A unique key to ensure idempotent requests. This key should be a UUID v4 string.
|
|
1180
|
+
:param request_body:
|
|
1181
|
+
:param retries: Override the default retry configuration for this method
|
|
1182
|
+
:param server_url: Override the default server URL for this method
|
|
1183
|
+
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
|
|
1184
|
+
:param http_headers: Additional headers to set or replace on requests.
|
|
1185
|
+
"""
|
|
1186
|
+
base_url = None
|
|
1187
|
+
url_variables = None
|
|
1188
|
+
if timeout_ms is None:
|
|
1189
|
+
timeout_ms = self.sdk_configuration.timeout_ms
|
|
1190
|
+
|
|
1191
|
+
if server_url is not None:
|
|
1192
|
+
base_url = server_url
|
|
1193
|
+
else:
|
|
1194
|
+
base_url = self._get_url(base_url, url_variables)
|
|
1195
|
+
|
|
1196
|
+
request = models.ReleaseAuthorizationRequest(
|
|
1197
|
+
payment_id=payment_id,
|
|
1198
|
+
idempotency_key=idempotency_key,
|
|
1199
|
+
request_body=utils.get_pydantic_model(
|
|
1200
|
+
request_body, Optional[models.ReleaseAuthorizationRequestBody]
|
|
1201
|
+
),
|
|
1202
|
+
)
|
|
1203
|
+
|
|
1204
|
+
req = self._build_request(
|
|
1205
|
+
method="POST",
|
|
1206
|
+
path="/payments/{paymentId}/release-authorization",
|
|
1207
|
+
base_url=base_url,
|
|
1208
|
+
url_variables=url_variables,
|
|
1209
|
+
request=request,
|
|
1210
|
+
request_body_required=False,
|
|
1211
|
+
request_has_path_params=True,
|
|
1212
|
+
request_has_query_params=True,
|
|
1213
|
+
user_agent_header="user-agent",
|
|
1214
|
+
accept_header_value="application/hal+json",
|
|
1215
|
+
http_headers=http_headers,
|
|
1216
|
+
security=self.sdk_configuration.security,
|
|
1217
|
+
get_serialized_body=lambda: utils.serialize_request_body(
|
|
1218
|
+
request.request_body,
|
|
1219
|
+
False,
|
|
1220
|
+
True,
|
|
1221
|
+
"json",
|
|
1222
|
+
Optional[models.ReleaseAuthorizationRequestBody],
|
|
1223
|
+
),
|
|
1224
|
+
timeout_ms=timeout_ms,
|
|
1225
|
+
)
|
|
1226
|
+
|
|
1227
|
+
if retries == UNSET:
|
|
1228
|
+
if self.sdk_configuration.retry_config is not UNSET:
|
|
1229
|
+
retries = self.sdk_configuration.retry_config
|
|
1230
|
+
else:
|
|
1231
|
+
retries = utils.RetryConfig(
|
|
1232
|
+
"backoff", utils.BackoffStrategy(500, 5000, 2, 7500), True
|
|
1233
|
+
)
|
|
1234
|
+
|
|
1235
|
+
retry_config = None
|
|
1236
|
+
if isinstance(retries, utils.RetryConfig):
|
|
1237
|
+
retry_config = (retries, ["5xx"])
|
|
1238
|
+
|
|
1239
|
+
http_res = self.do_request(
|
|
1240
|
+
hook_ctx=HookContext(
|
|
1241
|
+
config=self.sdk_configuration,
|
|
1242
|
+
base_url=base_url or "",
|
|
1243
|
+
operation_id="release-authorization",
|
|
1244
|
+
oauth2_scopes=None,
|
|
1245
|
+
security_source=get_security_from_env(
|
|
1246
|
+
self.sdk_configuration.security, models.Security
|
|
1247
|
+
),
|
|
1248
|
+
),
|
|
1249
|
+
request=req,
|
|
1250
|
+
error_status_codes=["404", "422", "4XX", "5XX"],
|
|
1251
|
+
retry_config=retry_config,
|
|
1252
|
+
)
|
|
1253
|
+
|
|
1254
|
+
response_data: Any = None
|
|
1255
|
+
if utils.match_response(http_res, "202", "*"):
|
|
1256
|
+
return
|
|
1257
|
+
if utils.match_response(http_res, ["404", "422"], "application/hal+json"):
|
|
1258
|
+
response_data = unmarshal_json_response(models.ErrorResponseData, http_res)
|
|
1259
|
+
raise models.ErrorResponse(response_data, http_res)
|
|
1260
|
+
if utils.match_response(http_res, "4XX", "*"):
|
|
1261
|
+
http_res_text = utils.stream_to_text(http_res)
|
|
1262
|
+
raise models.APIError("API error occurred", http_res, http_res_text)
|
|
1263
|
+
if utils.match_response(http_res, "5XX", "*"):
|
|
1264
|
+
http_res_text = utils.stream_to_text(http_res)
|
|
1265
|
+
raise models.APIError("API error occurred", http_res, http_res_text)
|
|
1266
|
+
|
|
1267
|
+
raise models.APIError("Unexpected response received", http_res)
|
|
1268
|
+
|
|
1269
|
+
async def release_authorization_async(
|
|
1270
|
+
self,
|
|
1271
|
+
*,
|
|
1272
|
+
payment_id: str,
|
|
1273
|
+
idempotency_key: Optional[str] = None,
|
|
1274
|
+
request_body: Optional[
|
|
1275
|
+
Union[
|
|
1276
|
+
models.ReleaseAuthorizationRequestBody,
|
|
1277
|
+
models.ReleaseAuthorizationRequestBodyTypedDict,
|
|
1278
|
+
]
|
|
1279
|
+
] = None,
|
|
1280
|
+
retries: OptionalNullable[utils.RetryConfig] = UNSET,
|
|
1281
|
+
server_url: Optional[str] = None,
|
|
1282
|
+
timeout_ms: Optional[int] = None,
|
|
1283
|
+
http_headers: Optional[Mapping[str, str]] = None,
|
|
1284
|
+
):
|
|
1285
|
+
r"""Release payment authorization
|
|
1286
|
+
|
|
1287
|
+
Releases the full remaining authorized amount. Call this endpoint when you will not be making any additional
|
|
1288
|
+
captures. Payment authorizations may also be released manually from the Mollie Dashboard.
|
|
1289
|
+
|
|
1290
|
+
Mollie will do its best to process release requests, but it is not guaranteed that it will succeed. It is up to
|
|
1291
|
+
the issuing bank if and when the hold will be released.
|
|
1292
|
+
|
|
1293
|
+
If the request does succeed, the payment status will change to `canceled` for payments without captures.
|
|
1294
|
+
If there is a successful capture, the payment will transition to `paid`.
|
|
1295
|
+
|
|
1296
|
+
:param payment_id: Provide the ID of the related payment.
|
|
1297
|
+
:param idempotency_key: A unique key to ensure idempotent requests. This key should be a UUID v4 string.
|
|
1298
|
+
:param request_body:
|
|
1299
|
+
:param retries: Override the default retry configuration for this method
|
|
1300
|
+
:param server_url: Override the default server URL for this method
|
|
1301
|
+
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
|
|
1302
|
+
:param http_headers: Additional headers to set or replace on requests.
|
|
1303
|
+
"""
|
|
1304
|
+
base_url = None
|
|
1305
|
+
url_variables = None
|
|
1306
|
+
if timeout_ms is None:
|
|
1307
|
+
timeout_ms = self.sdk_configuration.timeout_ms
|
|
1308
|
+
|
|
1309
|
+
if server_url is not None:
|
|
1310
|
+
base_url = server_url
|
|
1311
|
+
else:
|
|
1312
|
+
base_url = self._get_url(base_url, url_variables)
|
|
1313
|
+
|
|
1314
|
+
request = models.ReleaseAuthorizationRequest(
|
|
1315
|
+
payment_id=payment_id,
|
|
1316
|
+
idempotency_key=idempotency_key,
|
|
1317
|
+
request_body=utils.get_pydantic_model(
|
|
1318
|
+
request_body, Optional[models.ReleaseAuthorizationRequestBody]
|
|
1319
|
+
),
|
|
1320
|
+
)
|
|
1321
|
+
|
|
1322
|
+
req = self._build_request_async(
|
|
1323
|
+
method="POST",
|
|
1324
|
+
path="/payments/{paymentId}/release-authorization",
|
|
1325
|
+
base_url=base_url,
|
|
1326
|
+
url_variables=url_variables,
|
|
1327
|
+
request=request,
|
|
1328
|
+
request_body_required=False,
|
|
1329
|
+
request_has_path_params=True,
|
|
1330
|
+
request_has_query_params=True,
|
|
1331
|
+
user_agent_header="user-agent",
|
|
1332
|
+
accept_header_value="application/hal+json",
|
|
1333
|
+
http_headers=http_headers,
|
|
1334
|
+
security=self.sdk_configuration.security,
|
|
1335
|
+
get_serialized_body=lambda: utils.serialize_request_body(
|
|
1336
|
+
request.request_body,
|
|
1337
|
+
False,
|
|
1338
|
+
True,
|
|
1339
|
+
"json",
|
|
1340
|
+
Optional[models.ReleaseAuthorizationRequestBody],
|
|
1341
|
+
),
|
|
1342
|
+
timeout_ms=timeout_ms,
|
|
1343
|
+
)
|
|
1344
|
+
|
|
1345
|
+
if retries == UNSET:
|
|
1346
|
+
if self.sdk_configuration.retry_config is not UNSET:
|
|
1347
|
+
retries = self.sdk_configuration.retry_config
|
|
1348
|
+
else:
|
|
1349
|
+
retries = utils.RetryConfig(
|
|
1350
|
+
"backoff", utils.BackoffStrategy(500, 5000, 2, 7500), True
|
|
1351
|
+
)
|
|
1352
|
+
|
|
1353
|
+
retry_config = None
|
|
1354
|
+
if isinstance(retries, utils.RetryConfig):
|
|
1355
|
+
retry_config = (retries, ["5xx"])
|
|
1356
|
+
|
|
1357
|
+
http_res = await self.do_request_async(
|
|
1358
|
+
hook_ctx=HookContext(
|
|
1359
|
+
config=self.sdk_configuration,
|
|
1360
|
+
base_url=base_url or "",
|
|
1361
|
+
operation_id="release-authorization",
|
|
1362
|
+
oauth2_scopes=None,
|
|
1363
|
+
security_source=get_security_from_env(
|
|
1364
|
+
self.sdk_configuration.security, models.Security
|
|
1365
|
+
),
|
|
1366
|
+
),
|
|
1367
|
+
request=req,
|
|
1368
|
+
error_status_codes=["404", "422", "4XX", "5XX"],
|
|
1369
|
+
retry_config=retry_config,
|
|
1370
|
+
)
|
|
1371
|
+
|
|
1372
|
+
response_data: Any = None
|
|
1373
|
+
if utils.match_response(http_res, "202", "*"):
|
|
1374
|
+
return
|
|
1375
|
+
if utils.match_response(http_res, ["404", "422"], "application/hal+json"):
|
|
1376
|
+
response_data = unmarshal_json_response(models.ErrorResponseData, http_res)
|
|
1377
|
+
raise models.ErrorResponse(response_data, http_res)
|
|
1378
|
+
if utils.match_response(http_res, "4XX", "*"):
|
|
1379
|
+
http_res_text = await utils.stream_to_text_async(http_res)
|
|
1380
|
+
raise models.APIError("API error occurred", http_res, http_res_text)
|
|
1381
|
+
if utils.match_response(http_res, "5XX", "*"):
|
|
1382
|
+
http_res_text = await utils.stream_to_text_async(http_res)
|
|
1383
|
+
raise models.APIError("API error occurred", http_res, http_res_text)
|
|
1384
|
+
|
|
1385
|
+
raise models.APIError("Unexpected response received", http_res)
|