Merge pull request #6065 from expsa/store_hyperpay_response

[IMP] payment_hyperpay, payment_hyperpay_tokenization: save hyperpay …
This commit is contained in:
abdurrahman-saber 2026-01-08 12:12:10 +04:00 committed by GitHub
commit 330290fc66
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 13 additions and 3 deletions

View File

@ -322,7 +322,6 @@ class DonationRecurring(models.Model):
rec._advance_next_date() rec._advance_next_date()
except Exception as e: except Exception as e:
self.message_post(body=_("⛔ Unexpected error:<br/><pre>%s</pre>") % str(e)) self.message_post(body=_("⛔ Unexpected error:<br/><pre>%s</pre>") % str(e))
raise
return True return True
@api.model @api.model

View File

@ -37,6 +37,7 @@ class HyperPayPaymentTransaction(models.Model):
_inherit = 'payment.transaction' _inherit = 'payment.transaction'
hyperpay_checkout_id = fields.Char('Checkout Id', groups='base.group_user', help='Unique checkout id for every hyper transasction') 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 @api.model
def _hyperpay_form_get_tx_from_data(self, data): def _hyperpay_form_get_tx_from_data(self, data):

View File

@ -6,6 +6,8 @@ import re
import dateutil import dateutil
import pytz import pytz
import logging import logging
import pprint
_logger = logging.getLogger(__name__) _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)" 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)" pending_re = r"^(000\.200|800\.400\.5|100\.400\.500)"
result = data.get('result') result = data.get('result', {})
result_code = result.get('code') result_code = result.get('code','')
res = { res = {
'acquirer_reference': data.get('id'), 'acquirer_reference': data.get('id'),
'state_message': f"{result.get('description', '')}\n{','.join([str(s) for s in data.get('parameterErrors', [])])}" '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): if re.match(success_re, result_code):
date_validate = dateutil.parser.parse(data.get('timestamp')).astimezone(pytz.utc).replace(tzinfo=None) date_validate = dateutil.parser.parse(data.get('timestamp')).astimezone(pytz.utc).replace(tzinfo=None)