当面付(预下单)是发卡站最常用的支付宝通道,接入步骤不多,但涉及金额与幂等,必须严谨。
【步骤一:签约与配置】
在支付宝开放平台签约「当面付」,拿到 app_id、应用私钥、支付宝公钥。回调地址必须是公网 HTTPS,本地调试可用内网穿透。
【步骤二:生成订单与二维码】
调用 alipay.trade.precreate,传 out_trade_no(用你自己的订单号)、total_amount、subject。返回的 qr_code 直接渲染成二维码给客户扫。
【步骤三:接收异步通知】
支付宝会 POST 到你的 notify_url。必须做三件事:验签、校验金额与订单号、校验 trade_status 是否 TRADE_SUCCESS。三项都过才允许发货。
【步骤四:幂等发货】
同一个 out_trade_no 可能收到多次通知。先把订单行锁住(UPDATE … WHERE status=’pending’),影响行数为 1 才继续发货,否则直接返回 success 让支付宝停止重试。
【三个常见的坑】
1. 只信前端「我付好了」的按钮,不做服务端校验 → 白嫖;
2. 回调里没校验金额,客户改价后补 1 分钱也能触发发货;
3. 回调超时没返回 success,支付宝持续重试导致重复发货。
