From 588ff48db9b0970fe32c293e21f68fb0c9a1b523 Mon Sep 17 00:00:00 2001 From: Mira Weller Date: Tue, 2 Dec 2025 13:20:06 +0100 Subject: [PATCH] add czech SPAYD qr code standard --- src/pretix/helpers/payment.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/pretix/helpers/payment.py b/src/pretix/helpers/payment.py index 6163d4f61f..9eef529c40 100644 --- a/src/pretix/helpers/payment.py +++ b/src/pretix/helpers/payment.py @@ -38,6 +38,21 @@ def generate_payment_qr_codes( "css_class": "banktransfer-swiss-cross-overlay", }) + qr_data = czech_spayd( + event, + code, + amount, + bank_details_sepa_bic, + bank_details_sepa_name, + bank_details_sepa_iban + ) + if qr_data: + out.append({ + "id": "spayd", + "label": "SPAYD", + "qr_data": qr_data, + }) + if event.currency == 'EUR' and bank_details_sepa_iban: out.append({ "id": "girocode", @@ -127,3 +142,19 @@ def swiss_qrbill( data_fields = [text_unidecode.unidecode(d or '') for d in data_fields] return '\r\n'.join(data_fields) + + +def czech_spayd( + event, + code, + amount, + bank_details_sepa_bic, + bank_details_sepa_name, + bank_details_sepa_iban +): + if not bank_details_sepa_iban or not bank_details_sepa_iban[:2] in ('CZ', 'SK'): + return + if event.currency not in ('EUR', 'CZK'): + return + + return f"SPD*1.0*ACC:{bank_details_sepa_iban}*AM:{dotdecimal(amount)}*CC:{event.currency}*MSG:{code}"