Appearance
架构概述
EBAOZU V4 深度集成了支付宝官方 租赁行业交易组件 (Alipay Commerce Rent) 解决方案。与传统普通电商支付不同,租赁行业交易组件深度融合了芝麻信用免押、资金预授权、周期性信用代扣、履约合同上报及逆向货损追索等全套行业能力。
核心服务实现位于 app/services/alipay/CommerceRentServices.php,通过 Alipay EasySDK 与支付宝开放平台进行双向通信与数据签名。
行业交易组件生命周期与时序
mermaid
sequenceDiagram
autonumber
participant User as 用户 (支付宝小程序)
participant Server as EBAOZU 后端
participant Alipay as 支付宝开放平台
participant Contract as 电子合同服务
User->>Server: 1. 提交租赁订单
Server->>Alipay: 2. 方案同步与创建订单 (create)
Alipay-->>Server: 返回 trade_no 与 rent_id
Server-->>User: 返回预授权与签约参数
User->>Alipay: 3. 授权免押与签约代扣 (sign)
Alipay-->>Server: 异步通知签约与首期支付结果 (pay)
Server->>Server: 4. 履约发货并录入 SN 码 (send)
Server->>Alipay: 同步物流运单信息
User->>Server: 5. 确认收货 (receive)
Server->>Contract: 生成已盖章合同 PDF
Server->>Alipay: 异步回传合同文件 (RENT_CONTRACT)
Note over Server,Alipay: 履约代扣周期 (每月 07:00~22:00 定时扣款)
Server->>Alipay: 6. 完结履约/到期归还/买断 (finish)核心接口与服务方法
订单与方案同步 (create)
- 方法:
CommerceRentServices::createRentOrder($orderInfo) - 支付宝接口:
alipay.commerce.merchant.order.sync - 业务载荷:同步租赁商品名称、规格、月租金、押金总额、租期月数及还款计划表。
预授权与代扣签约 (sign)
- 方法:
CommerceRentServices::getRentSignParams($orderId) - 说明:生成芝麻信用免押评估与
alipay.user.agreement.page.sign周期扣款协议参数,拉起用户端信用授权。
周期扣款与货损代扣 (pay)
- 方法:
CommerceRentServices::withholdRentInstallment($installmentId) - 支付宝接口:
alipay.trade.pay(指定协议号agreement_no) - 业务规则:
- 扣款时间窗口:根据支付宝金融监管要求,系统仅在 07:00 ~ 22:00 之间发起代扣;
- 货损赔偿代扣:若设备在归还时存在损毁,调用
deductDamageDeposit()扣除预授权资金。
履约发货与单号上报 (send)
- 方法:
CommerceRentServices::syncOrderDelivery($orderId) - 说明:将顺丰/物流运单号及出库 Kit SN 码实时同步至支付宝小程序订单中心。
确认收货与合同回传 (receive)
- 方法:
CommerceRentServices::syncOrderReceiveAndContract($orderId) - 核心逻辑:
- 用户确认收货时,系统触发状态流转至「履约中」;
- 自动将生成的具备法律效力的电子合同 PDF 文件流上传至支付宝多媒体接口,类型标记为
RENT_CONTRACT; - 支付宝端将在用户账单与服务中心展示《租赁履约合同》,满足行业监管合规。
履约完结 (finish)
- 方法:
CommerceRentServices::finishRentOrder($orderId) - 说明:设备到期完好归还或用户全额买断后,调用支付宝行业组件将订单标记为最终完结,解冻剩余预授权押金并解约代扣协议。
存量合同整改与历史补偿命令
为了满足支付宝租赁行业合规巡检要求,针对历史未回传或回传失败的租赁订单合同,系统提供了 CLI 补偿命令行工具:
bash
php think rent:rectify-contract
php think rent:rectify-contract --order_id=WX2026081510001 --force- 逻辑说明:该命令会自动检索
eb_store_order中已收货但contract_sync_status = 0的历史订单,自动重新渲染 PDF 并批量调用支付宝接口补传。
常见报错码与排查指南
| 支付宝报错代码 | 错误原因分析 | 推荐解决方案与系统容错 |
|---|---|---|
AGREEMENT_INVALID | 用户的代扣协议已被解约或失效 | 标记本期代扣失败,短信通知用户进入小程序重新授权签约或手动补缴 |
BALANCE_INSUFFICIENT | 用户绑定的银行卡或支付宝余额不足 | 触发 OrderWithholdJob 指数退避重试(当日 12:00、18:00 重试),超过 3 天进入逾期催缴 |
MERCHANT_PERM_DENIED | 商户号未开通租赁行业交易组件权限 | 登录支付宝开放平台确认商户是否已签约「租赁行业解决方案」与「周期扣款」产品 |
CONTRACT_UPLOAD_FAILED | 上传的合同 PDF 超过 10MB 或格式不合法 | 检查云存储中生成的 PDF 压缩比率与图片内嵌大小,重新执行整改命令补传 |