feat: log everything
diff --git a/erpnext/non_profit/doctype/membership/membership.py b/erpnext/non_profit/doctype/membership/membership.py
index 7a0caed..a2c63af 100644
--- a/erpnext/non_profit/doctype/membership/membership.py
+++ b/erpnext/non_profit/doctype/membership/membership.py
@@ -81,17 +81,24 @@
 @frappe.whitelist(allow_guest=True)
 def trigger_razorpay_subscription(*args, **kwargs):
 	data = frappe.request.get_data(as_text=True)
-	verify_signature(data)
+	try:
+		verify_signature(data)
+	except Exception as e:
+		frappe.log_error(e, "Webhook Verification Error")
 
 	if isinstance(data, six.string_types):
 		data = json.loads(data)
 	data = frappe._dict(data)
 
-	subscription = data.payload.get("subscription", {}).get('entity', {})
-	subscription = frappe._dict(subscription)
+	try:
+		subscription = data.payload.get("subscription", {}).get('entity', {})
+		subscription = frappe._dict(subscription)
 
-	payment = data.payload.get("payment", {}).get('entity', {})
-	payment = frappe._dict(payment)
+		payment = data.payload.get("payment", {}).get('entity', {})
+		payment = frappe._dict(payment)
+	except Exception as e:
+		frappe.log_error(e, "Webhook Data Parsing Error")
+		return False
 
 	try:
 		data_json = json.dumps(data, indent=4, sort_keys=True)
@@ -103,30 +110,32 @@
 
 	if not member:
 		return False
+	try:
+		if data.event == "subscription.activated":
+			member.customer_id = payment.customer_id
+		elif data.event == "subscription.charged":
+			membership = frappe.new_doc("Membership")
+			membership.update({
+				"member": member.name,
+				"membership_status": "Current",
+				"membership_type": member.membership_type,
+				"currency": "INR",
+				"paid": 1,
+				"payment_id": payment.id,
+				"webhook_payload": data_json,
+				"from_date": datetime.fromtimestamp(subscription.current_start),
+				"to_date": datetime.fromtimestamp(subscription.current_end),
+				"amount": payment.amount / 100 # Convert to rupees from paise
+			})
+			membership.insert(ignore_permissions=True)
 
-	if data.event == "subscription.activated":
-		member.customer_id = payment.customer_id
-	elif data.event == "subscription.charged":
-		membership = frappe.new_doc("Membership")
-		membership.update({
-			"member": member.name,
-			"membership_status": "Current",
-			"membership_type": member.membership_type,
-			"currency": "INR",
-			"paid": 1,
-			"payment_id": payment.id,
-			"webhook_payload": data_json,
-			"from_date": datetime.fromtimestamp(subscription.current_start),
-			"to_date": datetime.fromtimestamp(subscription.current_end),
-			"amount": payment.amount / 100 # Convert to rupees from paise
-		})
-		membership.insert(ignore_permissions=True)
-
-	# Update these values anyway
-	member.subscription_start = datetime.fromtimestamp(subscription.start_at)
-	member.subscription_end = datetime.fromtimestamp(subscription.end_at)
-	member.subscription_activated = 1
-	member.save(ignore_permissions=True)
+		# Update these values anyway
+		member.subscription_start = datetime.fromtimestamp(subscription.start_at)
+		member.subscription_end = datetime.fromtimestamp(subscription.end_at)
+		member.subscription_activated = 1
+		member.save(ignore_permissions=True)
+	except Exception as e:
+		frappe.log_error(e, "Error creating membership entry")
 
 	return True