2024-01-02 20:51:21 +01:00

58 lines
2.0 KiB
Python

# This file is part of the Indico plugins.
# Copyright (C) 2017 - 2024 Max Fischer, Martin Claus, CERN
#
# The Indico plugins are free software; you can redistribute
# them and/or modify them under the terms of the MIT License;
# see the LICENSE file for more details.
import dateutil.parser
from indico.core.plugins import IndicoPlugin
from indico.modules.events.payment import PaymentPluginMixin
from indico.util.date_time import now_utc
from indico_payment_sixpay.forms import EventSettingsForm, PluginSettingsForm
class SixpayPaymentPlugin(PaymentPluginMixin, IndicoPlugin):
"""SIXPay Saferpay
Provides a payment method using the SIXPay Saferpay API.
"""
configurable = True
#: form for default configuration across events
settings_form = PluginSettingsForm
#: form for configuration for specific events
event_settings_form = EventSettingsForm
#: global default settings - should be a reasonable default
default_settings = {
'method_name': 'SIXPay Saferpay',
'url': 'https://www.saferpay.com/api/',
'username': None,
'password': None,
'account_id': None,
'order_description': '{event_title}, {regform_title}, {user_name}',
'order_identifier': 'e{event_id}r{registration_id}',
'notification_mail': None
}
#: per event default settings - use the global settings
default_event_settings = {
'enabled': False,
'method_name': None,
'account_id': None,
'order_description': None,
'order_identifier': None,
'notification_mail': None,
}
def get_blueprints(self):
"""Blueprint for URL endpoints with callbacks."""
from indico_payment_sixpay.blueprint import blueprint
return blueprint
def is_pending_transaction_expired(self, transaction):
if not (expiration := transaction.data.get('Init_PP_response', {}).get('Expiration')):
return False
return dateutil.parser.parse(expiration) <= now_utc()