[FIX] payment_alipay: improvement as per the current payment

No need of return URL as '/payment/process' will handle all the cases for payment.
use of _set_transaction_state as per the state of the transaction.

closes - https://github.com/odoo/odoo/pull/33231
This commit is contained in:
Nikunj Ladava
2019-05-08 07:05:11 +00:00
parent 2cc7f0dd49
commit 0aefe72b77
2 changed files with 9 additions and 7 deletions
+2 -2
View File
@@ -50,11 +50,11 @@ class AlipayController(http.Controller):
return ""
@http.route('/payment/alipay/return', type='http', auth="none", methods=['GET', 'POST'])
def alipay_return(self, redirect_url=False, **post):
def alipay_return(self, **post):
""" Alipay return """
_logger.info('Beginning Alipay form_feedback with post data %s', pprint.pformat(post))
self._alipay_validate_data(**post)
return werkzeug.utils.redirect(redirect_url or "/")
return werkzeug.utils.redirect('/payment/process')
@http.route('/payment/alipay/notify', type='http', auth='none', methods=['POST'], csrf=False)
def alipay_notify(self, **post):
+7 -5
View File
@@ -80,13 +80,12 @@ class PaymentAcquirer(models.Model):
def _get_alipay_tx_values(self, values):
base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url')
tx = self.env['payment.transaction'].search([('reference', '=', values.get('reference'))], limit=1)
alipay_tx_values = ({
'_input_charset': 'utf-8',
'notify_url': urls.url_join(base_url, AlipayController._notify_url),
'out_trade_no': values.get('reference'),
'partner': self.alipay_merchant_partner_id,
'return_url': urls.url_join(base_url, AlipayController._return_url) + '?' + urls.url_encode({'redirect_url': values.get('return_url')}),
'return_url': urls.url_join(base_url, AlipayController._return_url),
'subject': values.get('reference'),
'total_fee': values.get('amount') + values.get('fees'),
})
@@ -213,16 +212,19 @@ class PaymentTransaction(models.Model):
if status in ['TRADE_FINISHED', 'TRADE_SUCCESS']:
_logger.info('Validated Alipay payment for tx %s: set as done' % (self.reference))
date_validate = fields.Datetime.now()
res.update(state='done', date=date_validate)
res.update(date=date_validate)
self._set_transaction_done()
self.write(res)
self.execute_callback()
return True
elif status == 'TRADE_CLOSED':
_logger.info('Received notification for Alipay payment %s: set as Canceled' % (self.reference))
res.update(state='cancel', state_message=data.get('close_reason', ''))
res.update(state_message=data.get('close_reason', ''))
self._set_transaction_cancel()
return self.write(res)
else:
error = 'Received unrecognized status for Alipay payment %s: %s, set as error' % (self.reference, status)
_logger.info(error)
res.update(state='error', state_message=error)
res.update(state_message=error)
self._set_transaction_error()
return self.write(res)