修复: 订单不存在问题-平台MySQL直查+同步机制+管理后台手动同步

- queryOrder: 本地订单不存在时直查平台MySQL,找到则自动同步到本地
- handleNotify: 回调找不到本地订单时从平台MySQL补建
- checkPlatformOrderStatus: 超时3s→10s,返回更多字段(trade_no/money/player)
- recharge_orders_api: 新增sync_platform action,管理员手动从平台同步全部已支付订单
- admin.php: 充值对账页新增「从平台同步」按钮
- 解决: 游戏已发钱但前端/后台显示订单不存在的问题

关闭 #1069 #1070
This commit is contained in:
ypsdf1
2026-07-15 21:58:30 +08:00
parent 9c50e58e7d
commit bed190ca8d
3 changed files with 210 additions and 10 deletions
+15
View File
@@ -3403,6 +3403,7 @@ async function loadRechargeOrders(el) {
<option value="200">200条</option>
</select>
<button class="btn btn-blue" onclick="_roReconcile()">🔄 立即对账</button>
<button class="btn btn-yellow" onclick="_roSyncPlatform()" style="margin-left:4px">⬇️ 从平台同步</button>
</div>
<div id="roList"><div class="ro-empty">加载中...</div></div>
</div>`;
@@ -3483,6 +3484,20 @@ async function _roReconcile() {
}
} catch(e) { glassAlert('对账请求失败: '+e.message); }
}
async function _roSyncPlatform() {
if (!await glassConfirm('从支付平台同步所有已支付订单到本地数据库,同时写入充值流水供Java拉取。是否继续?')) return;
try {
const r = await fetch('api/recharge_orders_api.php?action=sync_platform');
const d = await r.json();
if (d.error) { glassAlert('同步失败: '+d.error); return; }
if (d.success) {
glassAlert('同步完成!平台共 '+d.data.platform_total+' 笔,新同步 '+d.data.synced+' 笔,已存在 '+d.data.already_paid+' 笔');
_roLoad();
} else {
glassAlert('同步失败: '+(d.message||'未知错误'));
}
} catch(e) { glassAlert('同步请求失败: '+e.message); }
}
document.addEventListener('keydown', function(e) { if (e.key==='Escape') _roCloseDtl(); });
async function loadCashierManage(el) {