code-strom / diagnose_payment_update.py
suryateja008's picture
Initial Commit
7466735 verified
"""
Diagnose Payment Update Issue
"""
import requests
import json
from datetime import datetime, timedelta
from backend.database_api import DatabaseAPI
api = DatabaseAPI()
base_url = "https://aadarshsenapati.in/api/api.php"
print("=" * 70)
print("DIAGNOSING PAYMENT UPDATE ISSUE")
print("=" * 70)
# Step 1: Create a test booking first
print("\n1️⃣ Creating a test booking...")
start_time = datetime.now()
end_time = start_time + timedelta(hours=2)
booking_result = api.book_slot(
user_id=9,
slot_id=1,
start_time=start_time.strftime("%Y-%m-%d %H:%M:%S"),
end_time=end_time.strftime("%Y-%m-%d %H:%M:%S"),
total_amount=120.0
)
if booking_result['status'] == 'success':
booking_uid = booking_result['booking_uid']
print(f"✅ Booking created: {booking_uid}")
# Step 2: Check initial status
print(f"\n2️⃣ Checking initial booking status...")
status_result = api.get_booking_status(booking_uid)
if status_result['status'] == 'success':
booking_data = status_result['data']
print(f"Initial payment_status: '{booking_data.get('payment_status')}'")
print(f"Full booking data:")
print(json.dumps(booking_data, indent=2))
# Step 3: Update payment status
print(f"\n3️⃣ Updating payment status to 'Paid'...")
# Direct API call to see exact request/response
payment_data = {
"booking_uid": booking_uid,
"payment_status": "Paid",
"transaction_id": f"txn_test_{booking_uid}",
"amount": 120.0
}
print(f"\nPayload being sent:")
print(json.dumps(payment_data, indent=2))
response = requests.post(
f"{base_url}?action=update_payment_status",
json=payment_data,
headers={'Content-Type': 'application/json'},
timeout=10
)
print(f"\nResponse Status: {response.status_code}")
print(f"Response Body:")
print(response.text)
if response.status_code == 200:
try:
result = response.json()
print(f"\nParsed Response:")
print(json.dumps(result, indent=2))
except:
print("Could not parse JSON")
# Step 4: Check updated status
print(f"\n4️⃣ Checking booking status after update...")
status_result = api.get_booking_status(booking_uid)
if status_result['status'] == 'success':
booking_data = status_result['data']
payment_status = booking_data.get('payment_status')
print(f"After update payment_status: '{payment_status}'")
print(f"Full booking data:")
print(json.dumps(booking_data, indent=2))
# Analysis
print(f"\n5️⃣ ANALYSIS:")
if payment_status == 'Paid':
print("✅ Payment status updated correctly!")
elif payment_status == 'Completed':
print("⚠️ Payment status is 'Completed' (should be 'Paid')")
print(" Valid statuses: Pending, Paid, Failed, Refunded")
elif payment_status == '':
print("❌ Payment status is EMPTY (removed)")
print(" This suggests the UPDATE query is setting it to empty string")
elif payment_status is None:
print("❌ Payment status is NULL")
print(" This suggests the UPDATE query is setting it to NULL")
elif payment_status == 'Pending':
print("❌ Payment status is still 'Pending'")
print(" This suggests the UPDATE query didn't execute")
else:
print(f"⚠️ Payment status is: '{payment_status}'")
print(" Unexpected value")
else:
print(f"❌ Failed to create booking: {booking_result.get('message')}")
print("\n" + "=" * 70)
print("💡 COMMON CAUSES:")
print("=" * 70)
print("""
1. UPDATE query is setting payment_status to empty string instead of value
2. Column name mismatch (e.g., 'paymentStatus' vs 'payment_status')
3. Missing WHERE clause causing wrong row to update
4. Database user lacks UPDATE permission
5. SQL syntax error silently failing
🔍 Check your PHP update_payment code!
""")