diff --git a/addons/pos_adyen/models/pos_payment_method.py b/addons/pos_adyen/models/pos_payment_method.py index a4cc6e1b04c..b49f43e4a46 100644 --- a/addons/pos_adyen/models/pos_payment_method.py +++ b/addons/pos_adyen/models/pos_payment_method.py @@ -78,7 +78,6 @@ class PosPaymentMethod(models.Model): latest_response = self.sudo().adyen_latest_response latest_response = json.loads(latest_response) if latest_response else False - self.sudo().adyen_latest_response = '' # avoid handling old responses multiple times return { 'latest_response': latest_response, @@ -87,6 +86,9 @@ class PosPaymentMethod(models.Model): def proxy_adyen_request(self, data, operation=False): ''' Necessary because Adyen's endpoints don't have CORS enabled ''' + if data['SaleToPOIRequest']['MessageHeader']['MessageCategory'] == 'Payment': # Clear only if it is a payment request + self.sudo().adyen_latest_response = '' # avoid handling old responses multiple times + if not operation: operation = 'terminal_request' diff --git a/addons/pos_adyen/static/src/js/payment_adyen.js b/addons/pos_adyen/static/src/js/payment_adyen.js index d4901628235..6efb71ec444 100644 --- a/addons/pos_adyen/static/src/js/payment_adyen.js +++ b/addons/pos_adyen/static/src/js/payment_adyen.js @@ -197,6 +197,9 @@ var PaymentAdyen = PaymentInterface.extend({ self.poll_error_order = self.pos.get_order(); return self._handle_odoo_connection_failure(data); } + // This is to make sure that if 'data' is not an instance of Error (i.e. timeout error), + // this promise don't resolve -- that is, it doesn't go to the 'then' clause. + return Promise.reject(data); }).then(function (status) { var notification = status.latest_response; var last_diagnosis_service_id = status.last_received_diagnosis_id; @@ -302,7 +305,7 @@ var PaymentAdyen = PaymentInterface.extend({ self.polling = setInterval(function () { self._poll_for_response(resolve, reject); - }, 3000); + }, 5500); }); // make sure to stop polling when we're done