From bf48ae567f3a89b5e37347bd45e6a5c10e1e8ab2 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Thu, 11 Apr 2024 09:27:55 +0200 Subject: [PATCH] NREI export: Fix parsing of stripe data --- src/pretix/base/exporters/dekodi.py | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/pretix/base/exporters/dekodi.py b/src/pretix/base/exporters/dekodi.py index 4afe0d905..4f6e6a32a 100644 --- a/src/pretix/base/exporters/dekodi.py +++ b/src/pretix/base/exporters/dekodi.py @@ -116,15 +116,29 @@ class DekodiNREIExporter(BaseExporter): 'PTNo15': p.full_id or '', }) elif p.provider and p.provider.startswith('stripe'): - src = p.info_data.get("source", p.info_data) + pi = p.info_data or {} + try: + if "latest_charge" in pi and isinstance(pi.get("latest_charge"), dict): + details = pi["latest_charge"]["payment_method_details"] + card = details.get("card", {}) + elif pi.get("charges") and pi["charges"]["data"]: + details = pi["charges"]["data"][0].get("payment_method_details", {}) + card = details.get("card", {}) + else: + details = pi["source"] + card = pi["source"]["card"] + except: + details = {} + card = {} + payments.append({ 'PTID': '81', 'PTN': 'Stripe', - 'PTNo1': p.info_data.get("id") or '', - 'PTNo5': src.get("card", {}).get("last4") or '', + 'PTNo1': pi.get("id") or '', + 'PTNo5': card.get("last4", ""), 'PTNo7': round(float(p.amount), 2) or '', 'PTNo8': str(self.event.currency) or '', - 'PTNo10': src.get('owner', {}).get('verified_name') or src.get('owner', {}).get('name') or '', + 'PTNo10': details.get('owner', {}).get('verified_name') or details.get('owner', {}).get('name') or '', 'PTNo15': p.full_id or '', }) else: