支付平台因超时或重试重复发送 Webhook 是正常机制,Magento 2 接口必须做到幂等。本文说明事件去重、事务锁、订单状态判断和响应时机,避免重复开票与重复发货。
继续阅读支付 Webhook 重复推送,Magento 2 如何避免重复开票?
Magento 2 加入购物车报 No such entity with cartId,Quote 到底丢在哪?
加入购物车或结账接口返回 No such entity with cartId,通常不是商品不存在,而是前端保存的 mask ID、客户会话和数据库 Quote 已经不同步。本文沿 guest cart 与 customer cart 两条路径定位。
继续阅读订单状态改了又被改回去,Magento 2 是谁在更新 state 和 status?
后台手工改了订单状态,几分钟后又自动恢复,通常是支付回调、Cron、ERP 同步或状态机重新保存订单。本文区分 state 与 status,并追踪最后一次写入来源。
继续阅读Magento 2 商品页显示有货,结账却提示 Out of Stock:MSI Reservation 怎么查?
商品页显示有货,加入购物车也成功,提交订单时却缺货,往往是展示库存、salable quantity 和结账时重新校验的时间点不同。本文用 MSI reservation 还原数量变化。
继续阅读Magento 2 退款成功但库存没回来,真的只是 Return to Stock 没勾吗?
Credit Memo 已生成、支付也退了款,库存却没增加。除 Return to Stock 外,还要看退款入口、发货 Source、MSI deduction、商品类型与外部仓库同步。
继续阅读客户地址保存后省份变空,Magento 2 Address 属性是否缺失?
地址表单提交时有省份,重新打开却为空,需要区分 region_id 与 region 文本、国家配置、客户地址 EAV 属性和自定义保存逻辑。本文沿请求到 customer_address_entity 定位。
继续阅读Magento 2 优惠码提示使用成功,购物车总价却一分钱没变
购物车显示优惠码已应用,但 discount_amount 仍为零,可能是规则条件、Action 范围、Coupon 绑定、网站/客户组或 Totals 重算被扩展覆盖。本文用 Quote 数据判断。
继续阅读Magento 2 数据库 Deadlock 频发,从订单保存和索引任务找竞争点
Deadlock found when trying to get lock 偶发重试可以恢复,但持续发生说明两个事务以不同顺序锁定相同资源。本文用 InnoDB deadlock 记录追到订单、库存和索引代码。
继续阅读结账页突然没有任何支付方式,Magento 2 先查哪些条件?
结账页可以填写地址,却显示 No payment methods available,通常不是支付模块整体失效,而是国家、币种、订单金额、客户组或接口异常把所有方式过滤掉。
继续阅读一张订单收到两封发货邮件,Magento 2 是重复发信还是重复 Shipment?
客户收到两封发货邮件时,先区分是否创建了两张 Shipment、同一 Shipment 被 send 两次,或邮件队列重复消费。三种问题修复位置完全不同。
继续阅读

