fix: redirection
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import logging
|
||||
import requests
|
||||
import json
|
||||
from odoo import http
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
@@ -43,7 +44,7 @@ class PaydunyaController(http.Controller):
|
||||
tx_model = http.request.env['payment.transaction'].sudo()
|
||||
handled = tx_model._handle_notification_data(data)
|
||||
if handled:
|
||||
return http.request.redirect('/payment/process')
|
||||
return http.request.redirect('/shop/confirmation')
|
||||
except Exception:
|
||||
_logger.exception('Error handling PayDunya notification data')
|
||||
|
||||
@@ -56,25 +57,32 @@ class PaydunyaController(http.Controller):
|
||||
_logger.info('PayDunya payment cancelled: token=%s', token)
|
||||
return http.request.redirect('/shop/cart')
|
||||
|
||||
@http.route('/payment/paydunya/callback', type='http', auth='public', methods=['POST'], csrf=False)
|
||||
@http.route('/payment/paydunya/callback', type='http', auth='public', methods=['GET', 'POST'], csrf=False)
|
||||
def paydunya_callback(self, **kwargs):
|
||||
"""Handle IPN callback from PayDunya.
|
||||
|
||||
PayDunya sends data as application/x-www-form-urlencoded with 'data' key containing JSON.
|
||||
"""
|
||||
try:
|
||||
# The 'data' parameter contains the JSON-encoded transaction info
|
||||
import json
|
||||
payload = {}
|
||||
data_str = http.request.params.get('data')
|
||||
if data_str:
|
||||
data = json.loads(data_str)
|
||||
_logger.info('PayDunya IPN callback received: %s', data)
|
||||
|
||||
tx_model = http.request.env['payment.transaction'].sudo()
|
||||
tx_model._handle_notification_data(data)
|
||||
payload = {'data': data_str}
|
||||
elif http.request.params:
|
||||
payload = dict(http.request.params)
|
||||
else:
|
||||
raw_body = http.request.httprequest.get_data(as_text=True)
|
||||
if raw_body:
|
||||
try:
|
||||
payload = json.loads(raw_body)
|
||||
except Exception:
|
||||
payload = {'data': raw_body}
|
||||
|
||||
_logger.info('PayDunya IPN callback received: %s', payload)
|
||||
tx_model = http.request.env['payment.transaction'].sudo()
|
||||
tx_model._handle_notification_data(payload)
|
||||
except Exception:
|
||||
_logger.exception('Error handling PayDunya callback')
|
||||
|
||||
# Always return 200 OK to PayDunya
|
||||
return 'OK'
|
||||
|
||||
|
||||
Reference in New Issue
Block a user