Compare commits

...

2 Commits

Author SHA1 Message Date
Richard Schreiber
105b60855a Fix: ignore outline, annots, etc. in background-pdf 2024-06-20 11:59:15 +02:00
Raphael Michel
7338381e58 Stripe: Support for TWINT (#4216)
* Stripe: Support for TWINT

* Update src/pretix/plugins/stripe/payment.py

Co-authored-by: Richard Schreiber <schreiber@rami.io>

---------

Co-authored-by: Richard Schreiber <schreiber@rami.io>
2024-06-20 10:22:43 +02:00
3 changed files with 52 additions and 5 deletions

View File

@@ -1092,10 +1092,20 @@ class Renderer:
fg_num_pages = fg_pdf.get_num_pages()
bg_num_pages = self.bg_pdf.get_num_pages()
bg_pdf_to_merge = PdfWriter()
bg_pdf_to_merge.append(self.bg_pdf, pages=(0, min(bg_num_pages, fg_num_pages)))
bg_pdf_to_merge.append(
self.bg_pdf,
pages=(0, min(bg_num_pages, fg_num_pages)),
import_outline=False,
excluded_fields=("/Annots", "/B")
)
if fg_num_pages > bg_num_pages:
# repeat last page in bg_pdf to match fg_pdf
bg_pdf_to_merge.append(bg_pdf_to_merge, pages=[bg_num_pages - 1] * (fg_num_pages - bg_num_pages))
bg_pdf_to_merge.append(
bg_pdf_to_merge,
pages=[bg_num_pages - 1] * (fg_num_pages - bg_num_pages),
import_outline=False,
excluded_fields=("/Annots", "/B")
)
bg_pdf_to_merge.write(bg_filename)
@@ -1162,7 +1172,12 @@ def merge_background(fg_pdf: PdfWriter, bg_pdf: PdfWriter, out_file, compress):
bg_num_pages = bg_pdf.get_num_pages()
if fg_num_pages > bg_num_pages:
# repeat last page in bg_pdf to match fg_pdf
bg_pdf.append(bg_pdf, pages=[bg_num_pages - 1] * (fg_num_pages - bg_num_pages))
bg_pdf.append(
bg_pdf,
pages=[bg_num_pages - 1] * (fg_num_pages - bg_num_pages),
import_outline=False,
excluded_fields=("/Annots", "/B")
)
bg_pdf.write(bg_filename)

View File

@@ -116,6 +116,7 @@ logger = logging.getLogger('pretix.plugins.stripe')
# - PayNow: ✗
# - UPI: ✗
# - Netbanking: ✗
# - TWINT: ✓
#
# Bank transfers
# - ACH Bank Transfer: ✗
@@ -448,6 +449,14 @@ class StripeSettingsHolder(BasePaymentProvider):
'before they work properly.'),
required=False,
)),
('method_twint',
forms.BooleanField(
label='TWINT',
disabled=self.event.currency != 'CHF',
help_text=_('Some payment methods might need to be enabled in the settings of your Stripe account '
'before they work properly.'),
required=False,
)),
('method_affirm',
forms.BooleanField(
label=_('Affirm'),
@@ -1793,3 +1802,25 @@ class StripeSwish(StripeRedirectMethod):
},
}
}
class StripeTwint(StripeRedirectMethod):
identifier = 'stripe_twint'
verbose_name = _('TWINT via Stripe')
public_name = 'TWINT'
method = 'twint'
confirmation_method = 'automatic'
explanation = _(
'This payment method is available to users of the Swiss app TWINT. Please have your app '
'ready.'
)
def is_allowed(self, request: HttpRequest, total: Decimal=None) -> bool:
return super().is_allowed(request, total) and request.event.currency == "CHF" and total <= Decimal("5000.00")
def _payment_intent_kwargs(self, request, payment):
return {
"payment_method_data": {
"type": "twint",
},
}

View File

@@ -48,13 +48,14 @@ def register_payment_provider(sender, **kwargs):
StripeAffirm, StripeAlipay, StripeBancontact, StripeCC, StripeEPS,
StripeGiropay, StripeIdeal, StripeKlarna, StripeMultibanco,
StripePayPal, StripePrzelewy24, StripeSEPADirectDebit,
StripeSettingsHolder, StripeSofort, StripeSwish, StripeWeChatPay,
StripeSettingsHolder, StripeSofort, StripeSwish, StripeTwint,
StripeWeChatPay,
)
return [
StripeSettingsHolder, StripeCC, StripeGiropay, StripeIdeal, StripeAlipay, StripeBancontact,
StripeSofort, StripeEPS, StripeMultibanco, StripePrzelewy24, StripeWeChatPay,
StripeSEPADirectDebit, StripeAffirm, StripeKlarna, StripePayPal, StripeSwish
StripeSEPADirectDebit, StripeAffirm, StripeKlarna, StripePayPal, StripeSwish, StripeTwint,
]