From 8612056aab71bee13dd8ff85cd3bdea5a2a39a12 Mon Sep 17 00:00:00 2001 From: Saurabh Date: Tue, 21 May 2019 16:27:07 +0530 Subject: [PATCH] fix: check payment status before capturing the payment --- .../doctype/razorpay_settings/razorpay_settings.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/frappe/integrations/doctype/razorpay_settings/razorpay_settings.py b/frappe/integrations/doctype/razorpay_settings/razorpay_settings.py index cb66ed7f2a..98b6a0bdc8 100644 --- a/frappe/integrations/doctype/razorpay_settings/razorpay_settings.py +++ b/frappe/integrations/doctype/razorpay_settings/razorpay_settings.py @@ -312,9 +312,13 @@ def capture_payment(is_sandbox=False, sanbox_response=None): data = json.loads(doc.data) settings = controller.get_settings(data) - resp = make_post_request("https://api.razorpay.com/v1/payments/{0}/capture".format(data.get("razorpay_payment_id")), + resp = make_get_request("https://api.razorpay.com/v1/payments/{0}".format(data.get("razorpay_payment_id")), auth=(settings.api_key, settings.api_secret), data={"amount": data.get("amount")}) + if resp.get('status') == "authorized": + resp = make_post_request("https://api.razorpay.com/v1/payments/{0}/capture".format(data.get("razorpay_payment_id")), + auth=(settings.api_key, settings.api_secret), data={"amount": data.get("amount")}) + if resp.get("status") == "captured": frappe.db.set_value("Integration Request", doc.name, "status", "Completed")