mirror of
https://github.com/pretix/pretix.git
synced 2026-08-10 10:47:00 +00:00
note: bezahlcode encoding changed slightly due to actually url-encoding all parameters (comma is now encoded as %2C). i tested with ING app, it accepts both. before: 'bank://singlepaymentsepa?name=Verein%20f%C3%BCr%20Testzwecke%20e.V.&iban=DE37796500000069799047&bic=BYLADEM1MIL&amount=123,00&reason=TESTVERANST-12345¤cy=EUR' after: 'bank://singlepaymentsepa?name=Verein%20f%C3%BCr%20Testzwecke%20e.V.&iban=DE37796500000069799047&bic=BYLADEM1MIL&amount=123%2C00&reason=TESTVERANST-12345¤cy=EUR'
102 lines
2.6 KiB
Python
102 lines
2.6 KiB
Python
from datetime import timedelta
|
|
from decimal import Decimal
|
|
|
|
import pytest
|
|
from django.utils.timezone import now
|
|
|
|
from pretix.base.models import Organizer, Event
|
|
from pretix.helpers.payment import generate_payment_qr_codes
|
|
|
|
|
|
@pytest.fixture
|
|
def env():
|
|
o = Organizer.objects.create(name='Verein für Testzwecke e.V.', slug='testverein')
|
|
event = Event.objects.create(
|
|
organizer=o, name='Testveranstaltung', slug='testveranst',
|
|
date_from=now() + timedelta(days=10),
|
|
live=True, is_public=False, currency='EUR',
|
|
)
|
|
event.settings.invoice_address_from = 'Verein für Testzwecke e.V.'
|
|
event.settings.invoice_address_from_zipcode = '1234'
|
|
event.settings.invoice_address_from_city = 'Testhausen'
|
|
event.settings.invoice_address_from_country = 'CH'
|
|
|
|
return o, event
|
|
|
|
|
|
@pytest.mark.django_db
|
|
def test_payment_qr_codes_euro(env):
|
|
o, event = env
|
|
codes = generate_payment_qr_codes(
|
|
event=event,
|
|
code='TESTVERANST-12345',
|
|
amount=Decimal('123.00'),
|
|
bank_details_sepa_bic='BYLADEM1MIL',
|
|
bank_details_sepa_iban='DE37796500000069799047',
|
|
bank_details_sepa_name='Verein für Testzwecke e.V.',
|
|
)
|
|
assert len(codes) == 2
|
|
assert codes[0]['label'] == 'EPC-QR'
|
|
assert codes[0]['qr_data'] == '''BCD
|
|
002
|
|
2
|
|
SCT
|
|
BYLADEM1MIL
|
|
Verein fur Testzwecke e.V.
|
|
DE37796500000069799047
|
|
EUR123.00
|
|
|
|
|
|
TESTVERANST-12345
|
|
|
|
'''
|
|
|
|
assert codes[1]['label'] == 'BezahlCode'
|
|
assert codes[1]['qr_data'] == 'bank://singlepaymentsepa?name=Verein%20f%C3%BCr%20Testzwecke%20e.V.&iban=DE37796500000069799047&bic=BYLADEM1MIL&amount=123%2C00&reason=TESTVERANST-12345¤cy=EUR'
|
|
|
|
|
|
@pytest.mark.django_db
|
|
def test_payment_qr_codes_swiss(env):
|
|
o, event = env
|
|
codes = generate_payment_qr_codes(
|
|
event=event,
|
|
code='TESTVERANST-12345',
|
|
amount=Decimal('123.00'),
|
|
bank_details_sepa_bic='TESTCHXXXXX',
|
|
bank_details_sepa_iban='CH6389144757654882127',
|
|
bank_details_sepa_name='Verein für Testzwecke e.V.',
|
|
)
|
|
assert codes[0]['label'] == 'QR-bill'
|
|
assert codes[0]['qr_data'] == "\r\n".join([
|
|
"SPC",
|
|
"0200",
|
|
"1",
|
|
"CH6389144757654882127",
|
|
"K",
|
|
"Verein fur Testzwecke e.V.",
|
|
"Verein fur Testzwecke e.V.",
|
|
"1234 Testhausen",
|
|
"",
|
|
"",
|
|
"CH",
|
|
"",
|
|
"",
|
|
"",
|
|
"",
|
|
"",
|
|
"",
|
|
"",
|
|
"123.00",
|
|
"EUR",
|
|
"",
|
|
"",
|
|
"",
|
|
"",
|
|
"",
|
|
"",
|
|
"",
|
|
"NON",
|
|
"",
|
|
"TESTVERANST-12345",
|
|
"EPD",
|
|
]) |