From 9d09343e57c0448f6885f77f57622820e1fc6aa1 Mon Sep 17 00:00:00 2001 From: Charles-Henri Decultot Date: Tue, 17 Jul 2018 16:15:30 +0000 Subject: [PATCH 1/3] Gocardless improvement and payment request correction --- .../accounts/doctype/payment_request/payment_request.py | 8 ++++---- .../doctype/gocardless_settings/gocardless_settings.py | 8 ++++---- .../pages/integrations/gocardless_confirmation.py | 9 +++++++-- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/erpnext/accounts/doctype/payment_request/payment_request.py b/erpnext/accounts/doctype/payment_request/payment_request.py index a633cc31a6..60275ba667 100644 --- a/erpnext/accounts/doctype/payment_request/payment_request.py +++ b/erpnext/accounts/doctype/payment_request/payment_request.py @@ -226,10 +226,10 @@ class PaymentRequest(Document): success_url = shopping_cart_settings.payment_success_url if success_url: redirect_to = ({ - "Orders": "orders", - "Invoices": "invoices", - "My Account": "me" - }).get(success_url, "me") + "Orders": "/orders", + "Invoices": "/invoices", + "My Account": "/me" + }).get(success_url, "/me") else: redirect_to = get_url("/orders/{0}".format(self.reference_name)) diff --git a/erpnext/erpnext_integrations/doctype/gocardless_settings/gocardless_settings.py b/erpnext/erpnext_integrations/doctype/gocardless_settings/gocardless_settings.py index af15cf58d0..44426b6c24 100644 --- a/erpnext/erpnext_integrations/doctype/gocardless_settings/gocardless_settings.py +++ b/erpnext/erpnext_integrations/doctype/gocardless_settings/gocardless_settings.py @@ -85,7 +85,7 @@ class GoCardlessSettings(Document): return get_url("./integrations/gocardless_checkout?{0}".format(urlencode(kwargs))) def create_payment_request(self, data): - self.data = frappe._dict(data) + self.data = {str(key): str(value) for (key, value) in data.items()} try: self.integration_request = create_request_log(self.data, "Host", "GoCardless") @@ -145,11 +145,11 @@ class GoCardlessSettings(Document): if self.flags.status_changed_to == "Completed": status = 'Completed' - if self.data.reference_doctype and self.data.reference_docname: + if 'reference_doctype' in self.data and 'reference_docname' in self.data: custom_redirect_to = None try: - custom_redirect_to = frappe.get_doc(self.data.reference_doctype, - self.data.reference_docname).run_method("on_payment_authorized", self.flags.status_changed_to) + custom_redirect_to = frappe.get_doc(self.data.get('reference_doctype'), + self.data.get('reference_docname')).run_method("on_payment_authorized", self.flags.status_changed_to) except Exception: frappe.log_error(frappe.get_traceback()) diff --git a/erpnext/templates/pages/integrations/gocardless_confirmation.py b/erpnext/templates/pages/integrations/gocardless_confirmation.py index fc564c3df9..912ad32fde 100644 --- a/erpnext/templates/pages/integrations/gocardless_confirmation.py +++ b/erpnext/templates/pages/integrations/gocardless_confirmation.py @@ -36,10 +36,15 @@ def confirm_payment(redirect_flow_id, reference_doctype, reference_docname): "session_token": frappe.session.user }) + confirmation_url = redirect_flow.confirmation_url + gocardless_success_page = frappe.get_hooks('gocardless_success_page') + if gocardless_success_page: + confirmation_url = frappe.get_attr(gocardless_success_page[-1])(reference_doctype, reference_docname) + data = { "mandate": redirect_flow.links.mandate, "customer": redirect_flow.links.customer, - "redirect_to": redirect_flow.confirmation_url, + "redirect_to": confirmation_url, "redirect_message": "Mandate successfully created", "reference_doctype": reference_doctype, "reference_docname": reference_docname @@ -53,7 +58,7 @@ def confirm_payment(redirect_flow_id, reference_doctype, reference_docname): gateway_controller = get_gateway_controller(reference_docname) frappe.get_doc("GoCardless Settings", gateway_controller).create_payment_request(data) - return {"redirect_to": redirect_flow.confirmation_url} + return {"redirect_to": confirmation_url} except Exception as e: frappe.log_error(e, "GoCardless Payment Error") From 39418b153274dbab096e4fe966ed9bcaa40bd18b Mon Sep 17 00:00:00 2001 From: Charles-Henri Decultot Date: Fri, 20 Jul 2018 09:37:22 +0000 Subject: [PATCH 2/3] CSS correction due to latest version of develop --- erpnext/templates/pages/integrations/gocardless_checkout.html | 2 +- .../templates/pages/integrations/gocardless_confirmation.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/erpnext/templates/pages/integrations/gocardless_checkout.html b/erpnext/templates/pages/integrations/gocardless_checkout.html index eb124cafb6..6072db49ea 100644 --- a/erpnext/templates/pages/integrations/gocardless_checkout.html +++ b/erpnext/templates/pages/integrations/gocardless_checkout.html @@ -9,7 +9,7 @@ {% endblock %} {%- block page_content -%} -

+

{{ _("Loading Payment System") }}

diff --git a/erpnext/templates/pages/integrations/gocardless_confirmation.html b/erpnext/templates/pages/integrations/gocardless_confirmation.html index 1baf23be26..d961c6344a 100644 --- a/erpnext/templates/pages/integrations/gocardless_confirmation.html +++ b/erpnext/templates/pages/integrations/gocardless_confirmation.html @@ -9,7 +9,7 @@ {% endblock %} {%- block page_content -%} -

+

{{ _("Payment Confirmation") }}

From 6321a6b9080351fe321da07cbcb94dfb814035a1 Mon Sep 17 00:00:00 2001 From: Charles-Henri Decultot Date: Mon, 23 Jul 2018 08:56:38 +0000 Subject: [PATCH 3/3] use standard dict method --- .../doctype/gocardless_settings/gocardless_settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/erpnext_integrations/doctype/gocardless_settings/gocardless_settings.py b/erpnext/erpnext_integrations/doctype/gocardless_settings/gocardless_settings.py index 44426b6c24..c65e3cefee 100644 --- a/erpnext/erpnext_integrations/doctype/gocardless_settings/gocardless_settings.py +++ b/erpnext/erpnext_integrations/doctype/gocardless_settings/gocardless_settings.py @@ -85,7 +85,7 @@ class GoCardlessSettings(Document): return get_url("./integrations/gocardless_checkout?{0}".format(urlencode(kwargs))) def create_payment_request(self, data): - self.data = {str(key): str(value) for (key, value) in data.items()} + self.data = frappe._dict(data) try: self.integration_request = create_request_log(self.data, "Host", "GoCardless")