From ffee50dde87545a94b77a8f89360e9798c5fd1c2 Mon Sep 17 00:00:00 2001 From: Bowrna Date: Mon, 30 Mar 2026 13:38:17 +0530 Subject: [PATCH 1/2] refactor(billing): Prefill contact details for better conversion --- .../src/components/billing/BuyCreditsRazorpay.vue | 13 +++++++++++-- press/press/doctype/team/team.py | 11 +++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/dashboard/src/components/billing/BuyCreditsRazorpay.vue b/dashboard/src/components/billing/BuyCreditsRazorpay.vue index 623bd4255d0..cf2d9b54068 100644 --- a/dashboard/src/components/billing/BuyCreditsRazorpay.vue +++ b/dashboard/src/components/billing/BuyCreditsRazorpay.vue @@ -117,13 +117,23 @@ const handlePaymentFailed = createResource({ }, }); +function getRazorpayContact() { + if (team.doc?.phone_number) { + return team.doc.phone_number; + } + return team.doc?.country_isd_code || undefined; +} + function processOrder(data) { const options = { key: data.key_id, order_id: data.order_id, name: 'Frappe Cloud', image: 'https://frappe.io/files/cloud.png', - prefill: { email: team.doc?.user }, + prefill: { + email: team.doc?.user, + ...(getRazorpayContact() && { contact: getRazorpayContact() }), + }, handler: handlePaymentSuccess, theme: { color: '#171717' }, ...(paypalEnabled @@ -150,7 +160,6 @@ function processOrder(data) { } : {}), }; - const rzp = new Razorpay(options); // Opens the payment checkout frame diff --git a/press/press/doctype/team/team.py b/press/press/doctype/team/team.py index ef97fb46b9f..59a4b2881ab 100644 --- a/press/press/doctype/team/team.py +++ b/press/press/doctype/team/team.py @@ -158,6 +158,7 @@ class Team(Document): "hybrid_servers_enabled", "relaxed_permissions", "upi_autopay_enabled", + "phone_number", ) def get_doc(self, doc): @@ -200,6 +201,7 @@ def get_doc(self, doc): ], as_dict=True, ) + doc.country_isd_code = self.get_country_isd_code() doc.communication_infos = self.get_communication_infos() doc.receive_budget_alerts = self.receive_budget_alerts doc.monthly_alert_threshold = self.monthly_alert_threshold @@ -207,6 +209,15 @@ def get_doc(self, doc): "Press Settings", "disable_binlog_indexer_service", cache=True ) + def get_country_isd_code(self): + if not self.country: + return None + from frappe.geo.country_info import get_all as get_country_data + + country_data = get_country_data() + country_info = country_data.get(self.country, {}) + return country_info.get("isd") + def onload(self): load_address_and_contact(self) From c1a3390ddc440a248c189371418ffa9b72ac17ff Mon Sep 17 00:00:00 2001 From: Bowrna Date: Mon, 6 Apr 2026 14:22:08 +0530 Subject: [PATCH 2/2] fix(billing): Remove isd code part as razorpay considers only full contact --- .../src/components/billing/BuyCreditsRazorpay.vue | 7 ++----- press/press/doctype/team/team.py | 10 ---------- 2 files changed, 2 insertions(+), 15 deletions(-) diff --git a/dashboard/src/components/billing/BuyCreditsRazorpay.vue b/dashboard/src/components/billing/BuyCreditsRazorpay.vue index cf2d9b54068..6cd3002f582 100644 --- a/dashboard/src/components/billing/BuyCreditsRazorpay.vue +++ b/dashboard/src/components/billing/BuyCreditsRazorpay.vue @@ -43,7 +43,7 @@