pay.models.payment_providers.datatrans

Attributes

DATATRANS_NAMESPACE

Classes

DatatransTransaction

Usage docs: https://docs.pydantic.dev/2.10/concepts/models/

DatatransClient

DatatransSettleManager

Settles an open datatrans charge when the transaction finishes.

DatatransFeePolicy

All Datarans fee calculations in one place.

DatatransPayment

Represents a payment done through various means.

DatatransProvider

Represents a payment provider.

Module Contents

pay.models.payment_providers.datatrans.DATATRANS_NAMESPACE[source]
class pay.models.payment_providers.datatrans.DatatransTransaction(/, **data: Any)[source]

Bases: 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.

model_config[source]

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

transaction_id: str[source]
merchant_id: str[source]
type: Literal['payment', 'credit', 'card_check'][source]
status: Literal['initialized', 'challenge_required', 'challenge_ongoing', 'authenticated', 'authorized', 'settled', 'canceled', 'transmitted', 'failed'][source]
refno: str[source]
currency: pydantic_extra_types.currency_code.Currency[source]
amount: int | None = None[source]
raise_if_cannot_be_settled() None[source]
class pay.models.payment_providers.datatrans.DatatransClient(merchant_id: str | None, password: str | None, sandbox: bool = False)[source]
merchant_id[source]
session[source]
base_url = 'https://api.datatrans.com/v1'[source]
raise_for_status(res: requests.Response) None[source]
status(transaction_id: str) DatatransTransaction[source]
init(amount: decimal.Decimal | None = None, currency: str = 'CHF', **extra: Any) str[source]

Initializes a transaction and returns the transaction_id.

settle(tx: DatatransTransaction) None[source]
refund(tx: DatatransTransaction) str | None[source]
class pay.models.payment_providers.datatrans.DatatransSettleManager(client: DatatransClient, tx: DatatransTransaction)[source]

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.

transaction_manager[source]
client[source]
tx[source]
classmethod settle_charge(client: DatatransClient, tx: DatatransTransaction) None[source]
sortKey() str[source]
tpc_vote(transaction: transaction.interfaces.ITransaction) None[source]
tpc_finish(transaction: transaction.interfaces.ITransaction) None[source]
commit(transaction: transaction.interfaces.ITransaction) None[source]
abort(transaction: transaction.interfaces.ITransaction) None[source]
tpc_begin(transaction: transaction.interfaces.ITransaction) None[source]
tpc_abort(transaction: transaction.interfaces.ITransaction) None[source]
class pay.models.payment_providers.datatrans.DatatransFeePolicy[source]

All Datarans fee calculations in one place.

fixed = 0.29[source]
classmethod from_amount(amount: decimal.Decimal | float) float[source]
classmethod compensate(amount: decimal.Decimal | float) float[source]
class pay.models.payment_providers.datatrans.DatatransPayment[source]

Bases: onegov.pay.models.payment.Payment

Represents a payment done through various means.

__mapper_args__[source]
fee_policy: onegov.pay.types.FeePolicy[source]
refno: onegov.core.orm.mixins.dict_property[str | None][source]
refunds: onegov.core.orm.mixins.dict_property[list[str]][source]
provider: sqlalchemy.orm.relationship[DatatransProvider][source]
property fee: decimal.Decimal[source]

The calculated fee or the effective fee if available.

property remote_url: str[source]

Returns the url of this object on the payment provider.

property transaction: DatatransTransaction[source]
refund() str | None[source]
sync(remote_obj: DatatransTransaction | None = None) None[source]

Updates the local payment information with the information from the remote payment provider.

class pay.models.payment_providers.datatrans.DatatransProvider[source]

Bases: onegov.pay.models.payment_provider.PaymentProvider[DatatransPayment]

Represents a payment provider.

__mapper_args__[source]
fee_policy: onegov.pay.types.FeePolicy[source]
sandbox: onegov.core.orm.mixins.dict_property[bool][source]
merchant_name: onegov.core.orm.mixins.dict_property[str | None][source]
merchant_id: onegov.core.orm.mixins.dict_property[str | None][source]
password: onegov.core.orm.mixins.dict_property[str | None][source]
webhook_key: onegov.core.orm.mixins.dict_property[str | None][source]
charge_fee_to_customer: onegov.core.orm.mixins.dict_property[bool | None][source]
adjust_price(price: onegov.pay.utils.Price | None) onegov.pay.utils.Price | None[source]

Called by client implementations this method allows to adjust the price by adding a fee to it.

By default no change is made.

property livemode: bool[source]
property payment_class: type[DatatransPayment][source]
property title: str[source]

The title of the payment provider (i.e. the product name).

property url: str[source]

The url to the backend of the payment provider.

property public_identity: str[source]

The public identifier of this payment provider. For example, the account name.

property identity: str | None[source]

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.

property client: DatatransClient[source]
property connected: bool[source]

Returns True if the provider is properly hooked up to the payment provider.

charge(amount: decimal.Decimal, currency: str, token: str) DatatransPayment[source]

Given a payment token, charges the customer and creates a payment which is returned.

get_token(request: onegov.core.request.CoreRequest) str | None[source]

Extracts this provider’s specific token from the request.

checkout_button(label: str, amount: decimal.Decimal | None, currency: str | None, complete_url: str, request: onegov.core.request.CoreRequest, **extra: Any) markupsafe.Markup[source]

Generates the html for the checkout button.

sync() None[source]

Updates the local payment information with the information from the remote payment provider.