# 가상계좌 입금 확인 WebHook @app.route("/webhook", methods=["POST"]) def webhook(): #(시작) 파라미터 받아오기 ---------------------------- # Post 파라미터 받아오기 data = request.get_json(silent=True) if data: # JSON 형태일 경우 # resultCode = data.get("resultCode") # resultMsg = data.get("resultMsg") print(">>webhook json data:", data) else: # form-data 형태일 경우 # resultCode = request.form.get("resultCode") # resultMsg = request.form.get("resultMsg") data = request.form print(">>webhook json form:", data) # Get 파라미터 받아오기 # metadata 대신 goodsName, mallReserved 등 필요 시 활용 가능 # resultCode = request.args.get("resultCode") # resultMsg = request.args.get("resultMsg") # print(f">>webhook get {resultCode}") # print(f">>webhook get {resultMsg}") #(종료) 파라미터 받아오기 ---------------------------- orderId = data.get("orderId") status = data.get("status") # Get 파라미터 받아오기 # orderId = data.get("orderId") print(">>webhook orderId:",orderId) print(">>webhook status:",status) #(종료) 파라미터 받아오기 ---------------------------- #입금완료 if status == "DONE": # purchases DB에 저장 conn2 = sqlite3.connect(DB_PURCHASES_PATH) c2 = conn2.cursor() c2.execute("SELECT user_id, keyword, site FROM purchases WHERE order_id = ?", (orderId,)) row = c2.fetchone() if not row: conn2.close() return "OK", 200 # 아직 입금전 # 입금완료에 따른 URLS 정보 입력 user_id = row[0] keyword = row[1] site = normalize_url(row[2]) conn2.close() conn4 = sqlite3.connect(DB_PURCHASES_PATH) c4 = conn4.cursor() c4.execute( "UPDATE purchases SET status = ? WHERE order_id = ?", ("complete", orderId) ) conn4.commit() conn4.close() kst_now = datetime.now(KST).strftime("%Y-%m-%d %H:%M:%S") conn3 = sqlite3.connect(DB_PATH) c3 = conn3.cursor() c3.execute( "INSERT OR IGNORE INTO urls (id, original_url, user_id, created_at) VALUES (?, ?, ?, ?)", (keyword, site, user_id, kst_now) ) conn3.commit() conn3.close() print(f"[webhook] URL 저장 완료: 고정URL, user_id={user_id}") # :white_check_mark: DB 저장 # :white_check_mark: 입금완료 시 웹소켓으로 알림 push socketio.emit("deposit_result", { "orderId": orderId, "result": "success" }) return "OK", 200