创建订单成功后,POST /Order/CreateOrder 会返回 pay.autoSubmit = true。前端应使用 pay.payUrl 与 pay.payData 自动提交 POST 表单到支付网关,当前页面保留在订单详情页。
订单详情 GET /Order/Detail 在待支付状态下返回:
data.canChangePayType: 是否允许切换付款方式。data.paymentMethods: 后台支付配置中启用的支付方式。用户在订单详情页切换付款方式时调用:
{ "uuid": "...", "session": "...", "orderId": "...", "pay_type": "wxpay" }
每次支付都会生成独立的易支付 out_trade_no,并写入 order_payment_attempts。切换支付方式不会尝试修改易支付平台已经创建的旧订单;回调和主动轮询会检查该业务订单下的所有支付尝试,任意一个支付成功都会完成原业务订单。
需要手动执行的表结构:
CREATE TABLE order_payment_attempts (
gateway_order_no VARCHAR(64) NOT NULL,
order_id VARCHAR(64) NOT NULL,
pay_type VARCHAR(32) NOT NULL,
create_time BIGINT NOT NULL,
PRIMARY KEY (gateway_order_no),
KEY idx_order_payment_attempt_order_id (order_id),
KEY idx_order_payment_attempt_order_time (order_id, create_time)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
订单关闭规则: