Source code for pyticketswitch.debitor

from pyticketswitch.mixins import JSONMixin


[docs]class Debitor(JSONMixin, object): """Information about a 3rd party that will take payment from your customer. This information is primarily used for bypassing callouts an integrating directly with payment providers on the front end. When your account is set up to sell on credit (i.e. you are always taking payment from the customer in your application directly), this information will not be present, and it should not be relevant. When the source system is taking payment this information will not be present. When debitor information is not present or you are not front end integrating you should refer to the :attr:`Reservation.needs_payment_card <pyticketswitch.reservation.Reservation.needs_payment_card>`, :attr:`Reservation.needs_email_address <pyticketswitch.reservation.Reservation.needs_email_address>`, and :attr:`Reservation.needs_agent_reference <pyticketswitch.reservation.Reservation.needs_agent_reference>` attributes as to what information you need to pass back to the API for purchasing tickets. Regardless of the debitor it's advisable to implement the full purchase/callout/callback process in the event that your front end integration goes awry. :ref:`See front end integrations for more information <frontend_integrations>` Attributes: type (str): all debitors with the same type can be assumed to integrate in the same manor, however their parameters and integration data might be different. name (str): name of the specific implementation of the debitor. description (str): human readable description of the debitor. integration_data (dict): data used to do front end integrations. For the format of this data please consult :ref:`the documentation for the relevant debitor type <frontend_integrations>`. aggregation_key (str): a key used to identify if debitors are the same for purposes of payment aggregation between bundles """ def __init__(self, typ=None, name=None, description=None, integration_data=None, aggregation_key=None): self.type = typ self.name = name self.description = description self.integration_data = integration_data self.aggregation_key = aggregation_key @classmethod def from_api_data(cls, data): kwargs = { 'typ': data.get('debitor_type'), 'name': data.get('debitor_name'), 'description': data.get('debitor_desc'), 'integration_data': data.get('debitor_integration_data', {}), 'aggregation_key': data.get('debitor_aggregation_key'), } return cls(**kwargs) def __repr__(self): return u'<Debitor {}:{}>'.format(self.type, self.name)