mirror of
https://github.com/lucaspalomodevelop/indico-plugins.git
synced 2026-03-12 23:27:22 +00:00
58 lines
2.0 KiB
Python
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()
|