[FIX] payment_razorpay: sanitize the partner phone numbers in RazorPay
Currently, when the partner phone has space, Razorpay throws an invalid phone exception error.
In this commit we sanitize the partner phone.
Case 1:
If partner phone is empty then validation error will be arrived. 'Phone number is required'.
Case 2:
If partner phone is not sanitized then validation error will be arrived. 'Incorrect phone number'.
EX: (+91 96385 44240) -> (+919638544240)
task-3113199
closes odoo/odoo#108969
X-original-commit: 38af5ee6a4feba802d50305fab8c001494f4e538
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * payment_razorpay
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-01-02 10:49+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: payment_razorpay
|
||||
#: code:addons/payment_razorpay/models/payment_transaction.py:0
|
||||
#, python-format
|
||||
msgid "The phone number is missing."
|
||||
msgstr ""
|
||||
@@ -11,6 +11,7 @@ from odoo.exceptions import UserError, ValidationError
|
||||
from odoo.addons.payment import utils as payment_utils
|
||||
from odoo.addons.payment_razorpay.const import PAYMENT_STATUS_MAPPING
|
||||
from odoo.addons.payment_razorpay.controllers.main import RazorpayController
|
||||
from odoo.addons.phone_validation.tools.phone_validation import phone_sanitize_numbers
|
||||
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
@@ -49,6 +50,19 @@ class PaymentTransaction(models.Model):
|
||||
converted_amount = payment_utils.to_minor_currency_units(self.amount, self.currency_id)
|
||||
base_url = self.provider_id.get_base_url()
|
||||
return_url_params = {'reference': self.reference}
|
||||
|
||||
phone = self.partner_phone
|
||||
error_message = _("The phone number is missing.")
|
||||
if phone:
|
||||
# sanitize partner phone
|
||||
country_code = self.partner_country_id.code
|
||||
country_phone_code = self.partner_country_id.phone_code
|
||||
phone_info = phone_sanitize_numbers([phone], country_code, country_phone_code)
|
||||
phone = phone_info[self.partner_phone]['sanitized']
|
||||
error_message = phone_info[self.partner_phone]['msg']
|
||||
if not phone:
|
||||
raise ValidationError("Razorpay: " + error_message)
|
||||
|
||||
rendering_values = {
|
||||
'key_id': self.provider_id.razorpay_key_id,
|
||||
'name': self.company_id.name,
|
||||
@@ -59,7 +73,7 @@ class PaymentTransaction(models.Model):
|
||||
'currency': self.currency_id.name,
|
||||
'partner_name': self.partner_name,
|
||||
'partner_email': self.partner_email,
|
||||
'partner_phone': self.partner_phone,
|
||||
'partner_phone': phone,
|
||||
'return_url': url_join(
|
||||
base_url, f'{RazorpayController._return_url}?{url_encode(return_url_params)}'
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user