From f96ec7417634cb03190300016501381a0ea8238a Mon Sep 17 00:00:00 2001 From: Jet Li Date: Tue, 28 Jan 2025 07:48:53 +0000 Subject: [PATCH] Fix payment webhook --- apps/payment/.env | 3 ++- .../backend/application/payment_hub.py | 4 ++-- .../backend/business/stripe_manager.py | 22 ++++--------------- .../payment/stripe_manager_controller.py | 4 ++-- 4 files changed, 10 insertions(+), 23 deletions(-) diff --git a/apps/payment/.env b/apps/payment/.env index 525251a..fb5f31c 100644 --- a/apps/payment/.env +++ b/apps/payment/.env @@ -19,6 +19,7 @@ export DOCKER_BACKEND_HOME=$DOCKER_APP_HOME/$APP_NAME export DOCKER_BACKEND_LOG_HOME=$DOCKER_BACKEND_HOME/log export MONGODB_URI=mongodb://localhost:27017/ export FREELEAPS_ENV=local -export SITE_URL_ROOT=http://localhost/ +export SITE_URL_ROOT=http://localhost:5173/ export LOG_BASE_PATH=${CODEBASE_ROOT}/log export STRIPE_API_KEY=sk_test_51Ogsw5B0IyqaSJBrwczlr820jnmvA1qQQGoLZ2XxOsIzikpmXo4pRLjw4XVMTEBR8DdVTYySiAv1XX53Zv5xqynF00GfMqttFd +export STRIPE_WEBHOOK_SECRET=whsec_59191b39e20582f0a7eafa7370613ffdaf848fb94d6617493a806d9d2a00ed63 diff --git a/apps/payment/backend/application/payment_hub.py b/apps/payment/backend/application/payment_hub.py index 9ad3766..07cce96 100644 --- a/apps/payment/backend/application/payment_hub.py +++ b/apps/payment/backend/application/payment_hub.py @@ -79,10 +79,10 @@ class PaymentHub: return await self.stripe_manager.fetch_checkout_session_url(transaction_id) async def invoke_checkout_session_webhook( - self, payload: str, stripe_signature: str + self, event: dict ) -> Tuple[bool, Optional[str], Optional[str]]: return await self.stripe_manager.invoke_checkout_session_webhook( - payload, stripe_signature + event ) async def handle_account_update( diff --git a/apps/payment/backend/business/stripe_manager.py b/apps/payment/backend/business/stripe_manager.py index e9a6888..49fef8a 100644 --- a/apps/payment/backend/business/stripe_manager.py +++ b/apps/payment/backend/business/stripe_manager.py @@ -322,30 +322,16 @@ class StripeManager: return None async def invoke_checkout_session_webhook( - self, payload: str, stripe_signature: str + self, event: dict ) -> Tuple[bool, Optional[str], Optional[str]]: - try: - event = stripe.Webhook.construct_event( - payload, stripe_signature, app_settings.STRIPE_WEBHOOK_SECRET - ) - except ValueError as e: - await self.module_logger.log_exception(exception=e, text="Invalid payload") - - return False, None, None - except SignatureVerificationError as e: - await self.module_logger.log_exception( - exception=e, text="Invalid signature" - ) - return False, None, None - # Handle the checkout.session.completed event if event["type"] == "checkout.session.completed": session = event["data"]["object"] - transaction = await self.__fetch_transaction_by_session_id(session.id) + transaction = await self.__fetch_transaction_by_session_id(session["id"]) if not transaction: await self.module_logger.log_error( - error="Transaction not found for session_id: {}".format(session.id), - properties={"session_id": session.id}, + error="Transaction not found for session_id: {}".format(session["id"]), + properties={"session_id": session["id"]}, ) return False diff --git a/apps/payment/webapi/routes/payment/stripe_manager_controller.py b/apps/payment/webapi/routes/payment/stripe_manager_controller.py index 0e20d06..97b7f4e 100644 --- a/apps/payment/webapi/routes/payment/stripe_manager_controller.py +++ b/apps/payment/webapi/routes/payment/stripe_manager_controller.py @@ -184,8 +184,8 @@ async def fetch_checkout_session_url(transaction_id: str) -> Optional[str]: summary="Invoke checkout session webhook", description="Invoke checkout session webhook", ) -async def invoke_checkout_session_webhook(payload: str, stripe_signature: str): - return await payment_hub.invoke_checkout_session_webhook(payload, stripe_signature) +async def invoke_checkout_session_webhook(event: dict): + return await payment_hub.invoke_checkout_session_webhook(event) @router.post(