Fix payment micro-service webhook not set bug

This commit is contained in:
Jet Li 2025-01-21 01:44:23 +00:00
parent a94dcca6c4
commit db90cf7e46
2 changed files with 18 additions and 16 deletions

View File

@ -4,6 +4,7 @@ from backend.infra.payment.models import StripeTransactionDoc
from backend.infra.payment.constants import TransactionStatus from backend.infra.payment.constants import TransactionStatus
from common.config.app_settings import app_settings from common.config.app_settings import app_settings
import stripe import stripe
from stripe.error import SignatureVerificationError
from common.log.module_logger import ModuleLogger from common.log.module_logger import ModuleLogger
from decimal import Decimal from decimal import Decimal
import json import json
@ -232,13 +233,13 @@ class StripeManager:
connected_account = stripe.Account.retrieve( connected_account = stripe.Account.retrieve(
transaction.to_stripe_account_id transaction.to_stripe_account_id
) )
if ( # if (
connected_account.capabilities.get("card_payments") != "active" # connected_account.capabilities.get("card_payments") != "active"
or connected_account.capabilities.get("transfers") != "active" # or connected_account.capabilities.get("transfers") != "active"
): # ):
raise Exception( # raise Exception(
f"Connected account {transaction.to_stripe_account_id} lacks required capabilities." # f"Connected account {transaction.to_stripe_account_id} lacks required capabilities."
) # )
if not transaction.stripe_product_id: if not transaction.stripe_product_id:
product = stripe.Product.create( product = stripe.Product.create(
@ -316,13 +317,13 @@ class StripeManager:
) -> Tuple[bool, Optional[str], Optional[str]]: ) -> Tuple[bool, Optional[str], Optional[str]]:
try: try:
event = stripe.Webhook.construct_event( event = stripe.Webhook.construct_event(
payload, stripe_signature, settings.STRIPE_WEBHOOK_SECRET payload, stripe_signature, app_settings.STRIPE_WEBHOOK_SECRET
) )
except ValueError as e: except ValueError as e:
await self.module_logger.log_exception(exception=e, text="Invalid payload") await self.module_logger.log_exception(exception=e, text="Invalid payload")
return False, None, None return False, None, None
except stripe.error.SignatureVerificationError as e: except SignatureVerificationError as e:
await self.module_logger.log_exception( await self.module_logger.log_exception(
exception=e, text="Invalid signature" exception=e, text="Invalid signature"
) )

View File

@ -3,20 +3,21 @@ from pydantic_settings import BaseSettings
class AppSettings(BaseSettings): class AppSettings(BaseSettings):
NAME: str = "payment" NAME: str = "payment"
APP_NAME:str = NAME APP_NAME: str = NAME
JWT_SECRET_KEY: str = "" JWT_SECRET_KEY: str = ""
ACCESS_TOKEN_EXPIRE_MINUTES:int = 3600 ACCESS_TOKEN_EXPIRE_MINUTES: int = 3600
REFRESH_TOKEN_EXPIRE_DAYS:int = 1 REFRESH_TOKEN_EXPIRE_DAYS: int = 1
MONGODB_URI:str= "" MONGODB_URI: str = ""
MONGODB_NAME:str= "" MONGODB_NAME: str = ""
LOG_BASE_PATH : str = "./log" LOG_BASE_PATH: str = "./log"
BACKEND_LOG_FILE_NAME: str = APP_NAME BACKEND_LOG_FILE_NAME: str = APP_NAME
APPLICATION_ACTIVITY_LOG: str = APP_NAME + "-application-activity" APPLICATION_ACTIVITY_LOG: str = APP_NAME + "-application-activity"
STRIPE_API_KEY: str="" STRIPE_API_KEY: str = ""
STRIPE_WEBHOOK_SECRET: str = ""
SITE_URL_ROOT: str = "" SITE_URL_ROOT: str = ""
class Config: class Config: