Stripe: Only use alphanumeric characters in statement descriptors

This commit is contained in:
Raphael Michel
2019-11-18 09:57:42 +01:00
parent 8564d20183
commit 56cfdfc5b3

View File

@@ -1,6 +1,7 @@
import hashlib import hashlib
import json import json
import logging import logging
import re
import urllib.parse import urllib.parse
from collections import OrderedDict from collections import OrderedDict
from decimal import Decimal from decimal import Decimal
@@ -271,6 +272,13 @@ class StripeMethod(BasePaymentProvider):
d['application_fee_amount'] = self._decimal_to_int(fee) d['application_fee_amount'] = self._decimal_to_int(fee)
return d return d
def statement_descriptor(self, payment, length=22):
return '{event}-{code} {eventname}'.format(
event=self.event.slug.upper(),
code=payment.order.code,
eventname=re.sub('[^a-zA-Z0-9 ]', '', str(self.event.name))
)[:length]
@property @property
def api_kwargs(self): def api_kwargs(self):
if self.settings.connect_client_id and self.settings.connect_user_id: if self.settings.connect_client_id and self.settings.connect_user_id:
@@ -311,11 +319,7 @@ class StripeMethod(BasePaymentProvider):
try: try:
params = {} params = {}
if not source.startswith('src_'): if not source.startswith('src_'):
params['statement_descriptor'] = '{event}-{code} {eventname}'.format( params['statement_descriptor'] = self.statement_descriptor(payment)
event=self.event.slug.upper(),
code=payment.order.code,
eventname=str(self.event.name)
)[:22]
params.update(self.api_kwargs) params.update(self.api_kwargs)
params.update(self._connect_kwargs(payment)) params.update(self._connect_kwargs(payment))
charge = stripe.Charge.create( charge = stripe.Charge.create(
@@ -642,11 +646,7 @@ class StripeCC(StripeMethod):
event=self.event.slug.upper(), event=self.event.slug.upper(),
code=payment.order.code code=payment.order.code
), ),
statement_descriptor='{event}-{code} {eventname}'.format( statement_descriptor=self.statement_descriptor(payment),
event=self.event.slug.upper(),
code=payment.order.code,
eventname=str(self.event.name)
)[:22],
metadata={ metadata={
'order': str(payment.order.id), 'order': str(payment.order.id),
'event': self.event.id, 'event': self.event.id,
@@ -870,11 +870,7 @@ class StripeGiropay(StripeMethod):
'name': request.session.get('payment_stripe_giropay_account') or ugettext('unknown name') 'name': request.session.get('payment_stripe_giropay_account') or ugettext('unknown name')
}, },
giropay={ giropay={
'statement_descriptor': '{event}-{code} {eventname}'.format( 'statement_descriptor': self.statement_descriptor(payment, 35),
event=self.event.slug.upper(),
code=payment.order.code,
eventname=str(self.event.name)
)[:35],
}, },
redirect={ redirect={
'return_url': build_absolute_uri(self.event, 'plugins:stripe:return', kwargs={ 'return_url': build_absolute_uri(self.event, 'plugins:stripe:return', kwargs={
@@ -929,11 +925,7 @@ class StripeIdeal(StripeMethod):
'code': payment.order.code 'code': payment.order.code
}, },
ideal={ ideal={
'statement_descriptor': '{event}-{code} {eventname}'.format( 'statement_descriptor': self.statement_descriptor(payment)
event=self.event.slug.upper(),
code=payment.order.code,
eventname=str(self.event.name)
)[:22],
}, },
redirect={ redirect={
'return_url': build_absolute_uri(self.event, 'plugins:stripe:return', kwargs={ 'return_url': build_absolute_uri(self.event, 'plugins:stripe:return', kwargs={
@@ -1033,11 +1025,7 @@ class StripeBancontact(StripeMethod):
'name': request.session.get('payment_stripe_bancontact_account') or ugettext('unknown name') 'name': request.session.get('payment_stripe_bancontact_account') or ugettext('unknown name')
}, },
bancontact={ bancontact={
'statement_descriptor': '{event}-{code} {eventname}'.format( 'statement_descriptor': self.statement_descriptor(payment, 35)
event=self.event.slug.upper(),
code=payment.order.code,
eventname=str(self.event.name)
)[:35],
}, },
redirect={ redirect={
'return_url': build_absolute_uri(self.event, 'plugins:stripe:return', kwargs={ 'return_url': build_absolute_uri(self.event, 'plugins:stripe:return', kwargs={
@@ -1106,11 +1094,7 @@ class StripeSofort(StripeMethod):
}, },
sofort={ sofort={
'country': request.session.get('payment_stripe_sofort_bank_country'), 'country': request.session.get('payment_stripe_sofort_bank_country'),
'statement_descriptor': '{event}-{code} {eventname}'.format( 'statement_descriptor': self.statement_descriptor(payment, 35)
event=self.event.slug.upper(),
code=payment.order.code,
eventname=str(self.event.name)
)[:35],
}, },
redirect={ redirect={
'return_url': build_absolute_uri(self.event, 'plugins:stripe:return', kwargs={ 'return_url': build_absolute_uri(self.event, 'plugins:stripe:return', kwargs={