Garbage Value for title, description on Razorpay Payments Page [0010, 00101110, 00011, 00100100010]

Information about bug

Garbage Value for title, description and payer_name on Razorpay Payments Page

How to reproduce :
Make Payment Request with method/type Razorpay
After Save, Submit open payment url in browser you will see garbage values like [0010 0010 00011 001001]
instead of description and title.

Module

accounts

Version

Frappe 15.30.0
ERPNext 15.30.0

Installation method

manual install

Relevant log output / Stack trace / Full Error Message.

Getting Garbage Value on Razorpay Payments UI Page

Issue: Garbage Value for title, description and payer_name on Razorpay Payments Page [0010, 00101110, 00011, 00100100010] · Issue #42562 · frappe/erpnext · GitHub

Solution :

git : Garbage Value for title, description and payer_name on Razorpay Payments Page [0010, 00101110, 00011, 00100100010] · Issue #42562 · frappe/erpnext · GitHub

Override Class PaymentRequest / Edit payment_request.py (def get_payment_url(self))
/frappe-bench/apps/erpnext/erpnext/accounts/doctype/payment_request/payment_request.py

        class PaymentRequest(Document):
                def get_payment_url(self):
	                    if self.reference_doctype != "Fees":
		                    data = frappe.db.get_value(
			                    self.reference_doctype, self.reference_name, ["company", "customer_name"], as_dict=1
		                    )
	                    else:
		                    data = frappe.db.get_value(
			                    self.reference_doctype, self.reference_name, ["student_name"], as_dict=1
		                    )
		                    data.update({"company": frappe.defaults.get_defaults().company})
                
	                    controller = _get_payment_gateway_controller(self.payment_gateway)
	                    controller.validate_transaction_currency(self.currency)
                
	                    if hasattr(controller, "validate_minimum_transaction_amount"):
		                    controller.validate_minimum_transaction_amount(self.currency, self.grand_total)
                
	                    return controller.get_payment_url(
		                    **{
			                    "amount": flt(self.grand_total, self.precision("grand_total")),
			                    "title": data.company,
			                    "description": self.subject,
			                    "reference_doctype": "Payment Request",
			                    "reference_docname": self.name,
			                    "payer_email": self.email_to or frappe.session.user,
			                    "payer_name": data.customer_name,
			                    "order_id": self.name,
			                    "currency": self.currency,
		                    }
	                    )

Changes:

Old :
return controller.get_payment_url(
**{
“amount”: flt(self.grand_total, self.precision(“grand_total”)),
“title”: data.company.encode(“utf-8”),
“description”: self.subject.encode(“utf-8”),
“reference_doctype”: “Payment Request”,
“reference_docname”: self.name,
“payer_email”: self.email_to or frappe.session.user,
“payer_name”: frappe.safe_encode(data.customer_name),
“order_id”: self.name,
“currency”: self.currency,
}
)

New / Replace With :
return controller.get_payment_url(
**{
“amount”: flt(self.grand_total, self.precision(“grand_total”)),
“title”: data.company,
“description”: self.subject,
“reference_doctype”: “Payment Request”,
“reference_docname”: self.name,
“payer_email”: self.email_to or frappe.session.user,
“payer_name”: data.customer_name,
“order_id”: self.name,
“currency”: self.currency,
}
)

Check this

Solution :

Pull Request :
# fix: correct garbage value on Razorpay Payments Page #42607

Issue :
# Garbage Value for title, description and payer_name on Razorpay Payments Page [0010, 00101110, 00011, 00100100010] #42562