From 50f64185ad50e8e52f184e4cae7fb1c36d2dff0e Mon Sep 17 00:00:00 2001 From: Abdurrahman Saber Date: Thu, 8 Jan 2026 12:10:37 +0400 Subject: [PATCH] [IMP] payment_hyperpay, payment_hyperpay_tokenization: save hyperpay response history --- .../models/donation_recurring.py | 1 - odex25_donation/payment_hyperpay/models/payment.py | 1 + .../models/payment.py | 14 ++++++++++++-- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/odex25_donation/ensan_donation_request/models/donation_recurring.py b/odex25_donation/ensan_donation_request/models/donation_recurring.py index b8933947c..db5fb903b 100644 --- a/odex25_donation/ensan_donation_request/models/donation_recurring.py +++ b/odex25_donation/ensan_donation_request/models/donation_recurring.py @@ -322,7 +322,6 @@ class DonationRecurring(models.Model): rec._advance_next_date() except Exception as e: self.message_post(body=_("⛔ Unexpected error:
%s
") % str(e)) - raise return True @api.model diff --git a/odex25_donation/payment_hyperpay/models/payment.py b/odex25_donation/payment_hyperpay/models/payment.py index 46a86f910..aea032303 100644 --- a/odex25_donation/payment_hyperpay/models/payment.py +++ b/odex25_donation/payment_hyperpay/models/payment.py @@ -37,6 +37,7 @@ class HyperPayPaymentTransaction(models.Model): _inherit = 'payment.transaction' hyperpay_checkout_id = fields.Char('Checkout Id', groups='base.group_user', help='Unique checkout id for every hyper transasction') + hyperpay_response_payload = fields.Text('Response Payload', help='Response payload from HyperPay') @api.model def _hyperpay_form_get_tx_from_data(self, data): diff --git a/odex25_donation/payment_hyperpay_tokenization/models/payment.py b/odex25_donation/payment_hyperpay_tokenization/models/payment.py index 0df4ac766..35b403f16 100644 --- a/odex25_donation/payment_hyperpay_tokenization/models/payment.py +++ b/odex25_donation/payment_hyperpay_tokenization/models/payment.py @@ -6,6 +6,8 @@ import re import dateutil import pytz import logging +import pprint + _logger = logging.getLogger(__name__) @@ -91,12 +93,20 @@ class HyperPayTransaction(models.Model): success_re = r"^(000\.000\.|000\.100\.1|000\.[36]|000\.400\.1[12]0|000\.400\.0[^3]|000\.400\.100)" pending_re = r"^(000\.200|800\.400\.5|100\.400\.500)" - result = data.get('result') - result_code = result.get('code') + result = data.get('result', {}) + result_code = result.get('code','') res = { 'acquirer_reference': data.get('id'), 'state_message': f"{result.get('description', '')}\n{','.join([str(s) for s in data.get('parameterErrors', [])])}" } + if self.hyperpay_response_payload: + res.update({ + 'hyperpay_response_payload': f"{self.hyperpay_response_payload} \n===============\n {pprint.pformat(data)}" + }) + else: + res.update({ + 'hyperpay_response_payload': pprint.pformat(data) + }) if re.match(success_re, result_code): date_validate = dateutil.parser.parse(data.get('timestamp')).astimezone(pytz.utc).replace(tzinfo=None)