|
|
@@ -857,6 +857,8 @@ class AccountService:
|
|
|
from app.plugin.module_payment.account.model import TransferModel
|
|
|
from app.plugin.module_payment.account.enums import TransferStatusEnum
|
|
|
|
|
|
+ # 检查支付宝SDK是否支持转账订单查询API
|
|
|
+ _can_query = False
|
|
|
try:
|
|
|
from alipay.aop.api.request.AlipayCommerceEcTransOrderQueryRequest import (
|
|
|
AlipayCommerceEcTransOrderQueryRequest,
|
|
|
@@ -868,12 +870,13 @@ class AccountService:
|
|
|
AlipayCommerceEcTransOrderQueryResponse,
|
|
|
)
|
|
|
from app.core.alipay_client import AlipayClient
|
|
|
+ _can_query = True
|
|
|
except ImportError:
|
|
|
- raise CustomException(msg="支付宝SDK未正确安装")
|
|
|
+ log.warning("支付宝SDK未包含 TransOrderQuery API,将仅列出 DEALING 记录供手动同步")
|
|
|
|
|
|
- client = AlipayClient.get_client()
|
|
|
+ client = AlipayClient.get_client() if _can_query else None
|
|
|
|
|
|
- # 直接查库,绕过 CRUD 权限过滤,获取所有 DEALING 转账
|
|
|
+ # 直接查库,获取所有 DEALING 转账(不含 out_biz_no 为空的记录)
|
|
|
stmt = select(TransferModel).where(
|
|
|
TransferModel.status == TransferStatusEnum.DEALING.value,
|
|
|
TransferModel.out_biz_no.isnot(None),
|
|
|
@@ -887,6 +890,24 @@ class AccountService:
|
|
|
total = len(dealing_transfers)
|
|
|
details = []
|
|
|
|
|
|
+ if not _can_query:
|
|
|
+ # SDK不支持查询API,仅列出记录供参考
|
|
|
+ for transfer in dealing_transfers:
|
|
|
+ details.append({
|
|
|
+ "out_biz_no": transfer.out_biz_no,
|
|
|
+ "enterprise_id": transfer.enterprise_id,
|
|
|
+ "amount": float(transfer.amount) if transfer.amount else 0,
|
|
|
+ "status": "DEALING",
|
|
|
+ "hint": "请使用 transfer/sync-status 手动补录",
|
|
|
+ })
|
|
|
+ return {
|
|
|
+ "total": total,
|
|
|
+ "synced": 0,
|
|
|
+ "failed": 0,
|
|
|
+ "details": details,
|
|
|
+ "note": "SDK不支持自动查询,请参考 details 中的 out_biz_no 逐条调用 sync-status 手动同步",
|
|
|
+ }
|
|
|
+
|
|
|
for transfer in dealing_transfers:
|
|
|
out_biz_no = transfer.out_biz_no
|
|
|
eid = transfer.enterprise_id
|