蓝鲸支付支付知识库

免签支付工作原理

免签支付的关键不是生成二维码,而是把“业务订单”和“真实到账通知”可靠地关联起来,并把确认结果安全、可重试地通知业务系统。

一、系统由哪些部分组成

组件职责
业务网站生成商户订单号,提交金额,接收回调并发货
支付服务创建订单、分配金额、维护状态和发送通知
个人收款码承接顾客实际付款,资金进入本人账户
安卓监听端读取微信或支付宝到账通知并上报

二、订单生成

业务网站为每笔交易生成唯一 payId,将订单金额、支付方式和签名提交给支付服务。支付服务校验签名、金额和支付方式,创建一笔有有效期的待支付订单。

若多个顾客同时支付相同金额,系统需要为订单分配可区分的实际支付金额,或通过其他可靠维度避免串单。

三、二维码和实际金额

静态个人收款码本身通常不包含业务订单号。系统返回收款二维码内容,并把“商户订单号—平台订单号—实际金额—支付渠道—有效期”建立映射。顾客应按支付页显示的实际金额付款,否则可能无法自动匹配。

四、到账监听

微信或支付宝产生到账通知后,安卓端读取通知中的渠道、金额和时间并上报服务器。服务端只应接受已认证设备的数据,并记录原始事件,防止重复上报造成订单重复处理。

监听端是状态链路的一部分。通知读取权限、后台保活、网络连接和设备时间都会影响到账识别速度。

五、金额匹配

服务端在仍有效、支付方式一致的待支付订单中查找实际金额相同的记录。准确匹配依赖三个条件:金额区分空间足够、订单有效期合理、同一到账事件只处理一次。

若找不到唯一订单,应进入异常队列,而不是猜测归属。人工补单也应保留操作记录。

六、异步回调

订单确认后,系统向业务网站发送包含订单号、原订单金额、实际支付金额、支付方式和签名的通知。业务网站验签、校验金额并更新订单,返回约定的成功字符串。若响应不正确,支付服务应保留“已支付但通知失败”状态,方便重试或人工处理。

七、订单状态与幂等

业务端必须以订单号建立唯一约束。即使收到多次相同通知,也只能发货一次。

八、安全边界

签名用于确认请求参数未被篡改,但不能代替业务校验。回调处理仍需核对订单是否存在、是否待支付、金额是否一致,并限制异常请求频率。通讯密钥应定期更换且不出现在前端代码中。

理解关键机制

深入了解金额匹配查看回调排障