pay.models.payment_providers.datatrans ====================================== .. py:module:: pay.models.payment_providers.datatrans Attributes ---------- .. autoapisummary:: pay.models.payment_providers.datatrans.DATATRANS_NAMESPACE Classes ------- .. autoapisummary:: pay.models.payment_providers.datatrans.DatatransTransaction pay.models.payment_providers.datatrans.DatatransClient pay.models.payment_providers.datatrans.DatatransSettleManager pay.models.payment_providers.datatrans.DatatransFeePolicy pay.models.payment_providers.datatrans.DatatransPayment pay.models.payment_providers.datatrans.DatatransProvider Module Contents --------------- .. py:data:: DATATRANS_NAMESPACE .. py:class:: DatatransTransaction(/, **data: Any) Bases: :py:obj:`pydantic.BaseModel` Usage docs: https://docs.pydantic.dev/2.10/concepts/models/ A base class for creating Pydantic models. Attributes: __class_vars__: The names of the class variables defined on the model. __private_attributes__: Metadata about the private attributes of the model. __signature__: The synthesized `__init__` [`Signature`][inspect.Signature] of the model. __pydantic_complete__: Whether model building is completed, or if there are still undefined fields. __pydantic_core_schema__: The core schema of the model. __pydantic_custom_init__: Whether the model has a custom `__init__` function. __pydantic_decorators__: Metadata containing the decorators defined on the model. This replaces `Model.__validators__` and `Model.__root_validators__` from Pydantic V1. __pydantic_generic_metadata__: Metadata for generic models; contains data used for a similar purpose to __args__, __origin__, __parameters__ in typing-module generics. May eventually be replaced by these. __pydantic_parent_namespace__: Parent namespace of the model, used for automatic rebuilding of models. __pydantic_post_init__: The name of the post-init method for the model, if defined. __pydantic_root_model__: Whether the model is a [`RootModel`][pydantic.root_model.RootModel]. __pydantic_serializer__: The `pydantic-core` `SchemaSerializer` used to dump instances of the model. __pydantic_validator__: The `pydantic-core` `SchemaValidator` used to validate instances of the model. __pydantic_fields__: A dictionary of field names and their corresponding [`FieldInfo`][pydantic.fields.FieldInfo] objects. __pydantic_computed_fields__: A dictionary of computed field names and their corresponding [`ComputedFieldInfo`][pydantic.fields.ComputedFieldInfo] objects. __pydantic_extra__: A dictionary containing extra values, if [`extra`][pydantic.config.ConfigDict.extra] is set to `'allow'`. __pydantic_fields_set__: The names of fields explicitly set during instantiation. __pydantic_private__: Values of private attributes set on the model instance. .. py:attribute:: model_config Configuration for the model, should be a dictionary conforming to [`ConfigDict`][pydantic.config.ConfigDict]. .. py:attribute:: transaction_id :type: str .. py:attribute:: merchant_id :type: str .. py:attribute:: type :type: Literal['payment', 'credit', 'card_check'] .. py:attribute:: status :type: Literal['initialized', 'challenge_required', 'challenge_ongoing', 'authenticated', 'authorized', 'settled', 'canceled', 'transmitted', 'failed'] .. py:attribute:: refno :type: str .. py:attribute:: currency :type: pydantic_extra_types.currency_code.Currency .. py:attribute:: amount :type: int | None :value: None .. py:method:: raise_if_cannot_be_settled() -> None .. py:class:: DatatransClient(merchant_id: str | None, password: str | None, sandbox: bool = False) .. py:attribute:: merchant_id .. py:attribute:: session .. py:attribute:: base_url :value: 'https://api.datatrans.com/v1' .. py:method:: raise_for_status(res: requests.Response) -> None .. py:method:: status(transaction_id: str) -> DatatransTransaction .. py:method:: init(amount: decimal.Decimal | None = None, currency: str = 'CHF', **extra: Any) -> str Initializes a transaction and returns the transaction_id. .. py:method:: settle(tx: DatatransTransaction) -> None .. py:method:: refund(tx: DatatransTransaction) -> str | None .. py:class:: DatatransSettleManager(client: DatatransClient, tx: DatatransTransaction) Settles an open datatrans charge when the transaction finishes. If there is an error during this step, it is logged, but the transaction still continues successfully. The user is then supposed to manually settle the charge. .. py:attribute:: transaction_manager .. py:attribute:: client .. py:attribute:: tx .. py:method:: settle_charge(client: DatatransClient, tx: DatatransTransaction) -> None :classmethod: .. py:method:: sortKey() -> str .. py:method:: tpc_vote(transaction: transaction.interfaces.ITransaction) -> None .. py:method:: tpc_finish(transaction: transaction.interfaces.ITransaction) -> None .. py:method:: commit(transaction: transaction.interfaces.ITransaction) -> None .. py:method:: abort(transaction: transaction.interfaces.ITransaction) -> None .. py:method:: tpc_begin(transaction: transaction.interfaces.ITransaction) -> None .. py:method:: tpc_abort(transaction: transaction.interfaces.ITransaction) -> None .. py:class:: DatatransFeePolicy All Datarans fee calculations in one place. .. py:attribute:: fixed :value: 0.29 .. py:method:: from_amount(amount: decimal.Decimal | float) -> float :classmethod: .. py:method:: compensate(amount: decimal.Decimal | float) -> float :classmethod: .. py:class:: DatatransPayment Bases: :py:obj:`onegov.pay.models.payment.Payment` Represents a payment done through various means. .. py:attribute:: __mapper_args__ .. py:attribute:: fee_policy :type: onegov.pay.types.FeePolicy .. py:attribute:: refno :type: onegov.core.orm.mixins.dict_property[str | None] .. py:attribute:: refunds :type: onegov.core.orm.mixins.dict_property[list[str]] .. py:attribute:: provider :type: sqlalchemy.orm.relationship[DatatransProvider] .. py:property:: fee :type: decimal.Decimal The calculated fee or the effective fee if available. .. py:property:: remote_url :type: str Returns the url of this object on the payment provider. .. py:property:: transaction :type: DatatransTransaction .. py:method:: refund() -> str | None .. py:method:: sync(remote_obj: DatatransTransaction | None = None) -> None Updates the local payment information with the information from the remote payment provider. .. py:class:: DatatransProvider Bases: :py:obj:`onegov.pay.models.payment_provider.PaymentProvider`\ [\ :py:obj:`DatatransPayment`\ ] Represents a payment provider. .. py:attribute:: __mapper_args__ .. py:attribute:: fee_policy :type: onegov.pay.types.FeePolicy .. py:attribute:: sandbox :type: onegov.core.orm.mixins.dict_property[bool] .. py:attribute:: merchant_name :type: onegov.core.orm.mixins.dict_property[str | None] .. py:attribute:: merchant_id :type: onegov.core.orm.mixins.dict_property[str | None] .. py:attribute:: password :type: onegov.core.orm.mixins.dict_property[str | None] .. py:attribute:: webhook_key :type: onegov.core.orm.mixins.dict_property[str | None] .. py:attribute:: charge_fee_to_customer :type: onegov.core.orm.mixins.dict_property[bool | None] .. py:method:: adjust_price(price: onegov.pay.utils.Price | None) -> onegov.pay.utils.Price | None Called by client implementations this method allows to adjust the price by adding a fee to it. By default no change is made. .. py:property:: livemode :type: bool .. py:property:: payment_class :type: type[DatatransPayment] .. py:property:: title :type: str The title of the payment provider (i.e. the product name). .. py:property:: url :type: str The url to the backend of the payment provider. .. py:property:: public_identity :type: str The public identifier of this payment provider. For example, the account name. .. py:property:: identity :type: str | None Uniquely identifies this payment provider amongst other providers of the same type (say the private key of the api). Used to be able to tell if a new oauth connection is the same as an existing one. This identity is not meant to be displayed. .. py:property:: client :type: DatatransClient .. py:property:: connected :type: bool Returns True if the provider is properly hooked up to the payment provider. .. py:method:: charge(amount: decimal.Decimal, currency: str, token: str) -> DatatransPayment Given a payment token, charges the customer and creates a payment which is returned. .. py:method:: get_token(request: onegov.core.request.CoreRequest) -> str | None Extracts this provider's specific token from the request. .. py:method:: checkout_button(label: str, amount: decimal.Decimal | None, currency: str | None, complete_url: str, request: onegov.core.request.CoreRequest, **extra: Any) -> markupsafe.Markup Generates the html for the checkout button. .. py:method:: sync() -> None Updates the local payment information with the information from the remote payment provider.