feat(pay): 增加支付状态paid 已支付
This commit is contained in:
@@ -74,4 +74,5 @@ class OrderStatusType(enum.Enum):
|
||||
FAIL = 'fail'
|
||||
OK = 'ok'
|
||||
WAIT_PAYMENT = 'wait_payment'
|
||||
PAID = 'paid'
|
||||
CANCEL = 'cancel'
|
||||
|
||||
@@ -244,10 +244,10 @@ class Order(BaseModel, DateModel):
|
||||
total_fee: Mapped[int] = mapped_column(Integer, nullable=True, comment='发起的总金额,单位为分')
|
||||
notify_total_fee: Mapped[int] = mapped_column(Integer, nullable=True, comment='回调成功支付的总金额,单位为分')
|
||||
pay_url: Mapped[str] = mapped_column(String(255), nullable=True, comment='支付地址')
|
||||
status: Mapped[str] = mapped_column(
|
||||
status: Mapped[base_schema.OrderStatusType] = mapped_column(
|
||||
Enum(base_schema.OrderStatusType, inherit_schema=True),
|
||||
server_default=base_schema.OrderStatusType.INIT.value,
|
||||
comment='订单状态,init:初始化 fail:失败 ok:完成 wait payment:待支付 cancel. 取消'
|
||||
comment='订单状态,init:初始化 fail:失败 ok:完成 wait payment:待支付 paid:已支付 cancel. 取消'
|
||||
)
|
||||
ip_address: Mapped[str] = mapped_column(String(255), nullable=True, comment='操作ip')
|
||||
|
||||
|
||||
@@ -57,7 +57,7 @@ async def get_current_user(
|
||||
if user_id is None:
|
||||
raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="Invalid token")
|
||||
|
||||
keyname = generate_keyname(f'login_cache', use_today=True)
|
||||
keyname = generate_keyname('login_cache', use_today=True)
|
||||
user_str = await redis_conn.hget(keyname, user_id)
|
||||
if user_str is None:
|
||||
user_model = await CRUD(db_session, User).get(filters={'user_id': user_id})
|
||||
|
||||
@@ -7,12 +7,10 @@
|
||||
import logging
|
||||
from datetime import timedelta, datetime
|
||||
|
||||
from fastapi import Depends
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from core.base.schema import ProductCategory, ProductAction, OrderStatusType
|
||||
from core.db.crud import CRUD
|
||||
from core.db.engine import get_async_session
|
||||
from core.db.models import User, Order, Product, PointsTransaction
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
@@ -54,6 +52,13 @@ async def actions_after_payment(
|
||||
)
|
||||
await actions_handler(db_crud, gift_product, user)
|
||||
|
||||
record = {
|
||||
'order_id': notify_params['out_trade_no'],
|
||||
'transaction_id': notify_params['transaction_id'],
|
||||
'status': OrderStatusType.OK,
|
||||
}
|
||||
await db_crud.update(data=record, filters={'order_id': record['order_id']})
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f'Payment Actions Exception occurred -> {e}')
|
||||
logger.exception(e)
|
||||
|
||||
@@ -126,7 +126,7 @@ async def wechat_notify(
|
||||
if params['return_code'] == 'SUCCESS' and params['result_code'] == 'SUCCESS':
|
||||
record.update({
|
||||
'notify_total_fee': params['total_fee'],
|
||||
'status': base_schema.OrderStatusType.OK
|
||||
'status': base_schema.OrderStatusType.PAID
|
||||
})
|
||||
result = {'status': 200, 'message': 'OK'}
|
||||
background_tasks.add_task(actions_after_payment, notify_params=params, db_session=db_session)
|
||||
|
||||
Reference in New Issue
Block a user