diff --git a/addons/payment_razorpay/models/payment_transaction.py b/addons/payment_razorpay/models/payment_transaction.py index 97cc27c23a1..1bdfcf58239 100644 --- a/addons/payment_razorpay/models/payment_transaction.py +++ b/addons/payment_razorpay/models/payment_transaction.py @@ -34,7 +34,8 @@ class PaymentTransaction(models.Model): if self.provider_code != 'razorpay': return res - customer_id = self._razorpay_create_customer()['id'] + customer_is_required = self.tokenize or self.operation in ('online_token', 'offline') + customer_id = customer_is_required and self._razorpay_create_customer()['id'] order_id = self._razorpay_create_order(customer_id)['id'] return { 'razorpay_key_id': self.provider_id.razorpay_key_id, @@ -121,7 +122,8 @@ class PaymentTransaction(models.Model): 'method': pm_code, } if self.operation in ['online_direct', 'validation']: - payload['customer_id'] = customer_id # Required for only non-subsequent payments. + if customer_id: + payload['customer_id'] = customer_id # Required for only non-subsequent payments. if self.tokenize: payload['token'] = { 'max_amount': payment_utils.to_minor_currency_units( diff --git a/addons/payment_razorpay/static/src/js/payment_form.js b/addons/payment_razorpay/static/src/js/payment_form.js index c09d2adef64..6f1e6255338 100644 --- a/addons/payment_razorpay/static/src/js/payment_form.js +++ b/addons/payment_razorpay/static/src/js/payment_form.js @@ -58,10 +58,9 @@ paymentForm.include({ * @return {object} */ _prepareRazorpayOptions(processingValues) { - return Object.assign({}, processingValues, { + const vals = Object.assign({}, processingValues, { 'key': processingValues['razorpay_key_id'], 'order_id': processingValues['razorpay_order_id'], - 'customer_id': processingValues['razorpay_customer_id'], 'description': processingValues['reference'], 'recurring': processingValues['is_tokenize_request'] ? '1': '0', 'handler': response => { @@ -79,6 +78,10 @@ paymentForm.include({ } }, }); + if (processingValues['razorpay_customer_id']) { + vals['customer_id'] = processingValues['razorpay_customer_id']; + } + return vals; }, });