Skip to content

架构概述

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 压缩比率与图片内嵌大小,重新执行整改命令补传

承信租多门店租赁商城系统官方文档