feat(pay): 新增获取订单状态接口

This commit is contained in:
xingc
2025-04-16 14:43:07 +08:00
parent 42e6b66984
commit 02a1589833
2 changed files with 29 additions and 3 deletions

View File

@@ -15,7 +15,7 @@ from core.db.crud import CRUD
from core.db.engine import get_async_session
from core.db.models import Order
from core.routers.auth.schema import LoginUser
from core.routers.auth.services import get_current_user
from core.routers.auth.services import get_current_user_form_http
from core.utils.helper import generate_keyname, generate_order_number
from core.wechat.api import wechat_pay_api
@@ -26,6 +26,23 @@ logger = logging.getLogger(__name__)
pay_router = APIRouter(prefix='/pay', tags=['支付模块'])
@pay_router.get(
'/order/check/{order_id}',
summary='获取订单状态',
response_model=base_schema.BaseResponse[schema.CheckOrderOut])
async def check_order(
order_id: str,
login_user: LoginUser = Depends(get_current_user_form_http),
db_session: AsyncSession = Depends(get_async_session)
):
order = await CRUD(db_session, Order).get(filters={
'order_id': order_id, 'user_id': login_user.user_id
})
if order is None:
raise HTTPException(status.HTTP_404_NOT_FOUND, detail='订单不存在')
return {'data': order}
@pay_router.post(
'/order/create',
summary='订单创建',
@@ -34,7 +51,7 @@ pay_router = APIRouter(prefix='/pay', tags=['支付模块'])
async def create_order(
request: Request,
payload: schema.CreateOrderIn,
login_user: LoginUser = Depends(get_current_user),
login_user: LoginUser = Depends(get_current_user_form_http),
db_session: AsyncSession = Depends(get_async_session),
):
client_ip = (
@@ -44,7 +61,7 @@ async def create_order(
)
out_trade_no = generate_order_number()
prepay_id = wechat_pay_api.create_unified_order(
**payload.dict(exclude_none=True),
**payload.model_dump(exclude_none=True),
out_trade_no=out_trade_no,
spbill_create_ip=client_ip
)

View File

@@ -6,6 +6,8 @@
# @Desc :
from pydantic import BaseModel
from core.base.schema import OrderStatusType
class CreateOrderIn(BaseModel):
product_id: int
@@ -26,3 +28,10 @@ class PaymentParamsOut(BaseModel):
class CreateOrderOut(BaseModel):
payment_params: PaymentParamsOut
order_id: str
class CheckOrderOut(BaseModel):
order_id: str
status: OrderStatusType
user_id: int
product_id: int