From 35a7cce283012d9643368b17ccdb44db70827d1c Mon Sep 17 00:00:00 2001 From: Jannat Patel Date: Wed, 25 Sep 2024 10:50:53 +0530 Subject: [PATCH] feat: payment gateway settings --- frontend/src/components/Modals/Settings.vue | 24 +++++++++++++++++++ frontend/src/components/SettingDetails.vue | 7 +++--- .../doctype/lms_settings/lms_settings.json | 6 ++--- lms/lms/payments.py | 8 ++++++- 4 files changed, 38 insertions(+), 7 deletions(-) diff --git a/frontend/src/components/Modals/Settings.vue b/frontend/src/components/Modals/Settings.vue index 843c945c..1f250c2c 100644 --- a/frontend/src/components/Modals/Settings.vue +++ b/frontend/src/components/Modals/Settings.vue @@ -113,6 +113,12 @@ const tabsStructure = computed(() => { description: 'Configure the payment gateway and other payment related settings', fields: [ + { + label: 'Payment Gateway', + name: 'payment_gateway', + type: 'Link', + doctype: 'Payment Gateway', + }, { label: 'Razorpay Key', name: 'razorpay_key', @@ -254,6 +260,24 @@ const tabs = computed(() => { }) }) +const paymentGateways = computed(() => { + const gateways = [ + 'Razorpay', + 'Stripe', + 'Mpesa', + 'Patym', + 'Paypal', + 'Braintree', + 'GoCardless', + ] + return gateways.map((gateway) => { + return { + label: gateway, + value: gateway, + } + }) +}) + watch(show, async () => { if (show.value) { const currentTab = await tabs.value diff --git a/frontend/src/components/SettingDetails.vue b/frontend/src/components/SettingDetails.vue index e54b4b0d..eff8fa3b 100644 --- a/frontend/src/components/SettingDetails.vue +++ b/frontend/src/components/SettingDetails.vue @@ -22,13 +22,13 @@ v-if="field.type == 'Link'" v-model="field.value" :doctype="field.doctype" - :label="field.label" + :label="__(field.label)" /> diff --git a/lms/lms/doctype/lms_settings/lms_settings.json b/lms/lms/doctype/lms_settings/lms_settings.json index 9b8dd0fd..ef3dd8ea 100644 --- a/lms/lms/doctype/lms_settings/lms_settings.json +++ b/lms/lms/doctype/lms_settings/lms_settings.json @@ -335,15 +335,15 @@ }, { "fieldname": "payment_gateway", - "fieldtype": "Select", + "fieldtype": "Link", "label": "Payment Gateway", - "options": "Razorpay\nMpesa\nPaytm\nBraintree\nStripe\nPaypal\nGoCardless" + "options": "Payment Gateway" } ], "index_web_pages_for_search": 1, "issingle": 1, "links": [], - "modified": "2024-09-24 18:09:25.366651", + "modified": "2024-09-24 19:55:47.914930", "modified_by": "Administrator", "module": "LMS", "name": "LMS Settings", diff --git a/lms/lms/payments.py b/lms/lms/payments.py index cc8ccd4e..f42f76b8 100644 --- a/lms/lms/payments.py +++ b/lms/lms/payments.py @@ -22,6 +22,12 @@ def get_payment_link(doctype, docname, amount, total_amount, currency, address): amount_with_gst = total_amount if total_amount != amount else 0 payment = record_payment(address, doctype, docname, amount, currency, amount_with_gst) + controller = get_controller(payment_gateway) + + if controller.doctype == "Stripe Settings": + print(controller.as_dict()) + doctype = "Stripe Settings" + docname = controller.name payment_details = { "amount": total_amount, @@ -37,7 +43,7 @@ def get_payment_link(doctype, docname, amount, total_amount, currency, address): "redirect_to": f"/lms/batches/{docname}", "payment": payment.name, } - controller = get_controller(payment_gateway) + print(controller) url = controller.get_payment_url(**payment_details) return url