import traceback from fastapi import APIRouter, HTTPException from starlette.concurrency import run_in_threadpool from apps.jd.schemas.models import ( PlatPayRequest, PlatPayResponseData, RefreshPaymentRequest, ) from apps.jd.services.app_store import AppStoreSpider from apps.jd.services.ctrip import XiechengCardSpider from core.responses import ApiResponse, BusinessCode, success, error from observability.logging import get_logger_with_trace router = APIRouter(prefix="/order", tags=["支付"]) logger = get_logger_with_trace(__name__) # @router.post("/plat_pay_channel", response_model=ApiResponse) # async def plat_pay_channel(request_data: PlatPayRequest): # """获取微信app端支付参数""" # # 接收参数 # order_id = request_data.order_id # jd_order_id = request_data.jd_order_id # face_price = float(request_data.face_price) # pay_id = request_data.pay_id # cookies = request_data.cookies.strip() # # 打印日志 # logger.info( # f"获取微信app端支付参数 cookie:{cookies} order_id:{order_id} face_price:{face_price} pay_id:{pay_id}" # ) # try: # apple_store_spider = AppStoreSpider( # cookies=cookies, # order_num=order_id, # face_price=face_price, # ) # code, deeplink = await run_in_threadpool( # apple_store_spider.ios_pay, jd_order_id, pay_id # ) # data = PlatPayResponseData( # deeplink=deeplink, order_id=order_id, pay_id=pay_id, face_price=face_price # ) # return success(code=getattr(code, "value", code), data=data, msg="请求成功") # except Exception as e: # logger.error("请求失败" + traceback.format_exc(), exc_info=True) # raise HTTPException(status_code=500, detail="请求失败") @router.post("/refresh-payment", response_model=ApiResponse[PlatPayResponseData]) async def refresh_payment(request_data: RefreshPaymentRequest): """获取微信app端支付参数""" # 打印日志 logger.info( f"获取微信app端支付参数 cookie:{request_data.cookies} order_id:{request_data.order_id} pay_id:{request_data.pay_id} user_order_id:{request_data.user_order_id}" ) # data = { # "deeplink": "weixin://wap/pay?prepayid%3Dwx11141602253864f3a03c1c654daa820001&package=3012187903&noncestr=1760163364&sign=b8e94df5e28a10e0938d84e322161882", # "order_id": "339328433580", # "pay_id": "652e4edb825348e78f692c17ef1bc8b9", # "face_price": 0 # } # return my_json(code=100, data=data, msg="请求完成") res = {} try: for i in range(3): c_trip_spider = XiechengCardSpider( cookies=request_data.cookies, order_num=request_data.user_order_id, sku_id="", ) code, res = await run_in_threadpool( c_trip_spider.refresh_payment_url, request_data.pay_id, request_data.order_id, ) if code == BusinessCode.JD_ORDER_RISK_ERR: continue if code == BusinessCode.SUCCESS: return success(data=res) return error( code=BusinessCode.JD_ORDER_RISK_ERR, data=PlatPayResponseData(**{ "deeplink": "", "order_id": "", "pay_id": "", "remark": res.get("remark"), }), ) except Exception as e: logger.error(f"请求失败:{traceback.format_exc()}") raise HTTPException(status_code=500, detail="请求失败")