订单停在Processing,没有Invoice,管理员点Invoice并选择Capture Online,网关返回declined。去网关后台一看,钱早就扣了。这个时候不要继续点,第二次Capture可能被当作重复交易。

先用订单号、网关transaction ID、金额和币种四项对账。确认是已Capture、仅Authorized,还是Webhook状态没同步。Magento的sales_payment_transaction也要看有没有对应txn_id。

SELECT txn_id,txn_type,is_closed,additional_information
FROM sales_payment_transaction
WHERE order_id=<order_id> ORDER BY transaction_id;

补Magento状态,不重复扣款

若网关已成功Capture,只缺Magento发票,支付模块应提供导入交易或离线创建Invoice的安全路径,并把正确的网关txn_id关联进来。不要调用在线capture API。操作前保留网关截图、回调日志和人工审批记录。

如果金额、币种或部分Capture不一致,停止自动补单,交给财务核对。看见paid就直接开全额Invoice,可能把部分付款订单记错。

修复根因通常在Webhook:签名验证失败、返回非2xx导致重试、事件处理抛异常。用测试交易跑authorize、capture、partial capture和refund全链路,Magento与网关状态必须同步。