[FIx] payment_applepay: tx reference, form validate
This commit is contained in:
parent
4bc61c1b25
commit
2eec3ff3eb
|
|
@ -87,8 +87,7 @@ class ApplepayController(http.Controller):
|
|||
tx_id = payment.search([('applepay_checkout_id', '=', post.get('id', ''))])
|
||||
tx_id.sale_order_ids.sudo().write({'order_mobile_number': phone})
|
||||
_logger.info("Tx Sudo = %s", tx_id)
|
||||
tx = response.get('customParameters', {}).get('SHOPPER_tx_id') or tx_id or ''
|
||||
response.update({'tx_id': tx})
|
||||
response.update({'tx_id': tx_id.id})
|
||||
ids = tx_id.sale_order_ids.sudo().ids
|
||||
request.session['sale_last_order_id'] = ids[0] if len(ids) else None
|
||||
request.env['payment.transaction'].sudo().form_feedback(response, "applepay")
|
||||
|
|
|
|||
|
|
@ -33,34 +33,23 @@ class PaymentTransaction(models.Model):
|
|||
return txs[0]
|
||||
|
||||
def _applepay_form_validate(self, data):
|
||||
_logger.info('Validated ApplePay payment for tx %s: set as pending' % (self.reference))
|
||||
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')
|
||||
status_code = data.get('result').get('code')
|
||||
result_code = result.get('code')
|
||||
res = {
|
||||
'acquirer_reference': data.get('id'),
|
||||
'state_message': result.get('description', '')
|
||||
'state_message': f"{result.get('description', '')}\n{','.join([str(s) for s in data.get('parameterErrors', [])])}"
|
||||
}
|
||||
|
||||
success_regex_1 = re.compile(r'000\.000\.|000\.100\.1|000\.[36]').search(status_code)
|
||||
success_regex_2 = re.compile(r'000\.400\.0[^3]|000\.400\.100').search(status_code)
|
||||
pending_regex_1 = re.compile(r'000\.200').search(status_code)
|
||||
pending_regex_2 = re.compile(r'800\.400\.5|100\.400\.500').search(status_code)
|
||||
error_regex_1 = re.compile(r'000\.100\.2').search(status_code)
|
||||
|
||||
_logger.info("Apple Pay Status Code = %s",status_code)
|
||||
|
||||
if success_regex_1 or success_regex_2:
|
||||
if re.match(success_re, result_code):
|
||||
date_validate = dateutil.parser.parse(data.get('timestamp')).astimezone(pytz.utc).replace(tzinfo=None)
|
||||
res.update(acquirer_reference=data.get('id'), date=date_validate)
|
||||
res.update(date=date_validate)
|
||||
self._set_transaction_done()
|
||||
elif pending_regex_1 or pending_regex_2:
|
||||
elif re.match(pending_re, result_code):
|
||||
self._set_transaction_pending()
|
||||
elif error_regex_1:
|
||||
self._set_transaction_error()
|
||||
else:
|
||||
error = 'Received unrecognized status for ApplePay payment %s: %s, set as error' % (self.reference, status_code)
|
||||
_logger.info(error)
|
||||
self._set_transaction_cancel()
|
||||
return self.write(res)
|
||||
self._set_transaction_error(result.get('description', ''))
|
||||
return self.write(res)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue