jerry 3 сар өмнө
parent
commit
a21705728c

+ 1 - 0
.env

@@ -3,3 +3,4 @@ DATABASE_URL=mysql+asyncmy://root:GqLLL7Bofj0WaaOpp.0@visafly.top:3306/book_user
 REDIS_URL=redis://:STEs2x6ML0U1HlpE9SojM6YU7QPhqzY8@45.137.220.138:6379/0
 OPENAI_API_KEY=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
 STRIPE_API_KEY=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
+STRIPE_WEBHOOK_SECRET=whsec_MRfGMJZVv1v8xnwnGl9ai8yXqpLSeQVL

+ 14 - 6
app/api/router.py

@@ -721,8 +721,6 @@ async def webhook_smshelper(
     logger.info(f'smshelper webhook title={payload.title}, content={payload.content}')
     if "微信支付" in payload.title:
         res = await WebhookService.smshelper_payment_webhook(db, payload)
-        if res:
-            print(f"📧 send payment succeeded notification email")
     return success()
 
 @public_router.post("/webhook/stripe", summary="Stripe Webhook", tags=["webhook"], response_model=ApiResponse)
@@ -731,16 +729,26 @@ async def webhook_stripe(
     db: AsyncSession = Depends(get_db),
     redis_client: Redis = Depends(get_redis_client)
 ):
-    payload = request.body()
+    payload = await request.body()
     sig_header = request.headers.get("stripe-signature")
+    
+    
+    # 3️⃣ 打调试日志(安全,不要打 secret)
+    logger.info("Stripe webhook received")
+    logger.info("Stripe-Signature: %s", sig_header)
+    logger.info("Payload bytes length: %s", len(payload))
+    logger.info("Payload raw: %s", payload.decode("utf-8", errors="ignore"))
+    logger.info(
+        "Webhook secret prefix: %s",
+        settings.stripe_webhook_secret[:8] if settings.stripe_webhook_secret else None,
+    )
+    
     event = stripe.Webhook.construct_event(
         payload=payload,
         sig_header=sig_header,
-        secret=settings.STRIPE_WEBHOOK_SECRET,
+        secret=settings.stripe_webhook_secret,
     )
     res = await WebhookService.stripe_payment_webhook(db, event)
-    if res:
-        print(f"📧 send payment succeeded notification email")
     return success()
 
 @public_router.post("/auth/auto-register", summary="自动注册", tags=["用户管理"], response_model=ApiResponse[AutoRegisterData])

+ 1 - 5
app/core/config.py

@@ -22,6 +22,7 @@ class Settings(BaseSettings):
     # -----------------------
     openai_api_key: str
     stripe_api_key: str
+    stripe_webhook_secret: str
 
     model_config = SettingsConfigDict(
         env_file=".env",
@@ -39,8 +40,3 @@ def get_settings() -> Settings:
 
 
 settings = get_settings()
-
-# -----------------------
-# Global constants
-# -----------------------
-BASE_CURRENCY = "EUR"

+ 1 - 0
app/schemas/slot_snapshot.py

@@ -29,6 +29,7 @@ class SlotOverviewOut(SlotSnapshotBase):
     routing_key:  Optional[str]=None
     snapshot_source: Optional[str]=None
     last_check_at: Optional[datetime]=None
+    availability: Optional[Any]=None
     model_config = {
         "from_attributes": True
     }