Appearance
概述
EBAOZU系统的支付宝集成采用分层架构,包括基础服务层、业务服务层、控制器层和事件监听层。本文档详细介绍支付宝模块的整体架构、核心组件和调用关系。
架构设计
整体架构图
┌─────────────────────────────────────────────────────────────────────────┐
│ 支付宝集成架构 │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ 控制器层 (Controller) │ │
│ ├─────────────────────────────────────────────────────────────────┤ │
│ │ AlipayPartner.php — 支付宝服务商管理(25个方法) │ │
│ │ ├── 商户管理:getMerchantList, updateMiniInfo │ │
│ │ ├── 版本管理:miniVersionList, miniVersionUpload, ... │ │
│ │ ├── 上架管理:miniVersionOnline, miniVersionOffline, ... │ │
│ │ ├── 体验版:miniExperienceCreate, miniExperienceQuery, ... │ │
│ │ └── 成员管理:appMembersQuery, appMembersCreate, ... │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ 服务层 (Services) │ │
│ ├─────────────────────────────────────────────────────────────────┤ │
│ │ 基础服务: │ │
│ │ ├── AlipayBaseServices.php # 支付宝基础服务 │ │
│ │ ├── AlipayServices.php # 支付宝核心服务 │ │
│ │ ├── CommonServices.php # 公共服务 │ │
│ │ └── EasyAlipayServices.php # EasySDK封装 │ │
│ │ │ │
│ │ 芝麻信用: │ │
│ │ ├── CreditZhimaServices.php # 芝麻信用核心服务 │ │
│ │ └── AlipayZhimaTraits.php # 芝麻信用Trait │ │
│ │ │ │
│ │ 租赁行业: │ │
│ │ ├── CommerceRentServices.php # 租赁行业交易服务 │ │
│ │ └── TradeComponentServices.php # 交易组件服务 │ │
│ │ │ │
│ │ 商户服务: │ │
│ │ ├── AliMerchantService.php # 商户服务 │ │
│ │ ├── AlipayPartnerServices.php # 合作伙伴服务 │ │
│ │ ├── AlipayPartnerMerchantServices.php # 合作伙伴商户服务 │ │
│ │ └── AlipayPartnerMiniServices.php # 合作伙伴小程序服务 │ │
│ │ │ │
│ │ 营销服务: │ │
│ │ ├── AlipayMarketServices.php # 营销服务 │ │
│ │ ├── AliLightPromotionService.php # 轻量级营销服务 │ │
│ │ └── MerchantCouponsServices.php # 商户优惠券服务 │ │
│ │ │ │
│ │ 用户服务: │ │
│ │ └── AlipayUserServices.php # 用户服务 │ │
│ │ │ │
│ │ 其他服务: │ │
│ │ ├── QuickOrderServices.php # 快捷下单服务 │ │
│ │ ├── RecycleServices.php # 回收服务 │ │
│ │ ├── RoutineServices.php # 生活号服务 │ │
│ │ └── AtoOpenApiServices.php # 开放API服务 │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ 事件监听层 (Listener) │ │
│ ├─────────────────────────────────────────────────────────────────┤ │
│ │ pay.create.order → PayCreateOrderListener # 支付订单创建 │ │
│ │ pay.notify → PayNotifyListener # 支付异步回调 │ │
│ │ pay.mchNotify → PayMchNotifyListener # 商家转账回调 │ │
│ │ pay.scan.notify → ScannedNotifyListener # 扫码回调(空壳) │ │
│ │ pay.refunded.notify → ScannedNotifyListener # 退款回调(映射错误)│ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────┘核心组件关系
AlipayServices (核心服务)
├── AlipayBaseServices (基础服务)
│ └── EasyAlipayServices (EasySDK封装)
├── CreditZhimaServices (芝麻信用)
│ └── AlipayZhimaTraits (Trait)
├── CommerceRentServices (租赁行业)
│ └── AlipayZhimaTraits (Trait)
├── TradeComponentServices (交易组件)
├── AliMerchantService (商户服务)
├── AlipayPartnerServices (合作伙伴)
│ ├── AlipayPartnerMerchantServices (合作伙伴商户)
│ └── AlipayPartnerMiniServices (合作伙伴小程序)
├── AlipayMarketServices (营销服务)
│ ├── AliLightPromotionService (轻量级营销)
│ └── MerchantCouponsServices (商户优惠券)
├── AlipayUserServices (用户服务)
├── QuickOrderServices (快捷下单)
├── RecycleServices (回收服务)
├── RoutineServices (生活号)
└── AtoOpenApiServices (开放API)核心服务说明
AlipayServices — 支付宝核心服务
支付宝核心服务,提供支付、查询、退款等基础功能。
主要方法:
create()— 创建支付订单query()— 查询支付状态refund()— 退款microPay()— 条码支付
代码来源:app/services/alipay/AlipayServices.php
CreditZhimaServices — 芝麻信用服务
芝麻信用免押服务,提供免押冻结、解冻、买断等功能。
主要方法:
createFreezeOrder()— 创建免押冻结订单freezeOrder()— 冻结订单unfreezeOrder()— 解冻订单buyoutPay()— 买断支付queryFreezeOrder()— 查询冻结状态
代码来源:app/services/alipay/CreditZhimaServices.php
CommerceRentServices — 租赁行业交易服务
支付宝租赁行业交易服务,提供租赁订单创建、代扣、续租、归还等功能。
主要方法:
createOrder()— 创建租赁订单pay()— 代扣支付reletAppend()— 续租receive()— 确认收货returnGoods()— 归还aftersaleConfirm()— 售后确认
代码来源:app/services/alipay/CommerceRentServices.php
TradeComponentServices — 交易组件服务
支付宝小程序交易组件服务,提供订单同步、状态更新等功能。
主要方法:
orderCreate()— 创建交易组件订单orderModify()— 修改订单orderSync()— 同步订单状态
代码来源:app/services/alipay/TradeComponentServices.php
AlipayPartnerServices — 合作伙伴服务
支付宝合作伙伴服务,提供小程序管理、版本管理、审核等功能。
主要方法:
getMerchantList()— 获取商户列表miniVersionList()— 获取版本列表miniVersionUpload()— 上传版本miniVersionAuditApply()— 提交审核miniVersionOnline()— 上架
代码来源:app/services/alipay/AlipayPartnerServices.php
支付事件
事件注册
所有支付事件在 app/event.php 中注册:
| 事件键 | 监听器类 | 说明 |
|---|---|---|
pay.create.order | PayCreateOrderListener | 支付订单创建 |
pay.notify | PayNotifyListener | 支付异步回调 |
pay.mchNotify | PayMchNotifyListener | 商家转账回调 |
pay.scan.notify | ScannedNotifyListener | 扫码回调(空壳) |
pay.refunded.notify | ScannedNotifyListener | 退款回调(映射错误) |
代码来源:app/event.php:63-67
支付回调处理
支付回调通过 Hook 机制路由到 PayNotifyServices 的对应方法:
| 业务类型 | 回调方法 | 说明 |
|---|---|---|
| 商品订单 | WechatProduct / AliyunProduct | 商品购买 |
| 积分订单 | WechatIntegral / AliyunIntegral | 积分购买 |
| 充值 | WechatUserRecharge / AliyunUserRecharge | 余额充值 |
| 会员卡 | WechatMember / AliyunMember | 会员购买 |
| 租赁分期 | AliyunLease | 租赁代扣 |
| 押金 | AliyunDeposit | 押金支付 |
| 买断 | AliyunBuyout | 买断支付 |
| 违约金 | AliyunOverdue | 违约金支付 |
| 损耗费 | AliyunDamage | 货损赔付 |
| 配送费 | AliyunDelivery | 配送费支付 |
代码来源:app/services/pay/PayNotifyServices.php:32-389
配置项
支付宝配置
| 配置项 | 说明 | 代码位置 |
|---|---|---|
alipay_app_id | 支付宝应用ID | AlipayServices.php |
alipay_private_key | 应用私钥 | AlipayServices.php |
alipay_public_key | 支付宝公钥 | AlipayServices.php |
alipay_notify_url | 异步通知地址 | AlipayServices.php |
alipay_encrypt_key | AES密钥 | AlipayServices.php |
ali_pay_status | 支付宝支付开关 | PayServices.php |
芝麻信用配置
| 配置项 | 说明 | 代码位置 |
|---|---|---|
alipay_zhima_freeratio | 租押分离押金比例 | CreditZhimaServices.php |
lease_check_type | 代扣签约类型 | StoreOrderServices.php |
常见问题
Q: 支付宝支付失败怎么办?
A: 检查以下配置:
alipay_app_id是否正确alipay_private_key和alipay_public_key是否匹配ali_pay_status是否开启- 异步通知地址是否可访问
Q: 芝麻免押失败怎么办?
A: 检查以下条件:
- 用户芝麻信用分是否满足要求
alipay_zhima_freeratio配置是否正确- 订单是否满足免押条件
Q: 租赁行业交易代扣失败怎么办?
A: 检查以下条件:
- 代扣时间是否在 7:00-22:00 之间
- 用户支付宝余额是否充足
- 代扣协议是否已签署