一个基于支付宝转账码的自动化支付解决方案,支持经营码收款和转账码收款两种模式。
- 🚀 自动监控: 实时监控支付宝账单,自动检测支付状态
- 📱 码支付: 支持经营码收款和转账码收款
- ⏰ 智能超时: 5分钟支付时限,超时订单自动清理
- 🔐 安全可靠: MD5签名验证,防止数据篡改
- 🎯 协议兼容: 100%兼容CodePay协议
- PHP 7.4+
- Composer
- 支付宝开放平台应用
# 下载项目
# 安装依赖
composer install
# 复制配置文件
cp config/alipay.example.php config/alipay.php- 登录 支付宝开放平台
- 创建"网页/移动应用"
- 获取以下参数:
- 应用ID: 应用详情页的AppId
- 应用私钥: 使用密钥工具生成
- 支付宝公钥: 从平台获取
- 用户ID: 账户中心的账号ID
可以参考这个文章申请应用,一般都会有一个默认的 生成密钥即可
编辑 config/alipay.php:
<?php
return [
'app_id' => 'YOUR_APP_ID', // 应用ID
'private_key' => 'YOUR_PRIVATE_KEY', // 应用私钥
'alipay_public_key' => 'YOUR_ALIPAY_PUBLIC_KEY', // 支付宝公钥
'transfer_user_id' => 'YOUR_USER_ID', // 支付宝用户ID
// 其他配置保持默认即可
];首次运行需要获取系统分配的商户ID和密钥:
# 启动服务
# 访问健康检查,系统会自动生成商户配置
curl http://domain/health.php
# 查看生成的商户信息
cat config/codepay.json商户配置文件示例:
{
"merchant_id": "1001123456789012",
"merchant_key": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6",
"created_at": "2024-01-01 12:00:00",
"status": 1,
"balance": "0.00",
"rate": "96"
}重要:请妥善保存 merchant_id (商户ID) 和 merchant_key (商户密钥) ,这是商户接入时必需的参数。
目前支付宝放水,进入经营码申请页面填写商户信息时,返回,就会提示是否免填写开启经营码 如果实在没有此处使用收款码替代,或者使用下方转账方式
特点: 无需转账备注,通过金额+时间匹配订单
-
上传经营码:将支付宝经营码二维码保存为
qrcode/business_qr.png -
启用配置:编辑
config/alipay.php
'payment' => [
'business_qr_mode' => [
'enabled' => true, // 启用经营码模式
]
]工作原理:
- 相同金额的订单自动增加0.01元偏移(1.00→1.01→1.02...)
- 客户扫码支付对应金额
- 系统通过金额和时间匹配订单
工作原理:
- 客户转账时填写订单号作为备注
- 系统监控账单,通过备注匹配订单
// 发起支付请求
$params = [
'pid' => '商户ID',
'type' => 'alipay',
'out_trade_no' => '订单号',
'notify_url' => '通知地址',
'return_url' => '返回地址',
'name' => '商品名称',
'money' => '支付金额',
'sign' => '签名'
];
// POST 到 /submit.php 或 /mapi.php系统会自动:
- 查询账单: 每30秒查询支付宝账单API
- 匹配订单: 根据模式匹配相应订单
- 更新状态: 自动更新订单为已支付
- 发送通知: 向商户notify_url发送支付成功通知
# 查询单个订单
GET /api.php?act=order&pid=商户ID&out_trade_no=订单号
# 查询商户信息
GET /api.php?act=query&pid=商户ID&key=商户密钥访问 /submit.php 生成支付页面,包含:
- 订单信息展示
- 二维码显示
- 实时倒计时(5分钟)
- 支付状态检查
# 检查系统状态
curl http://domain/health.php# 查看实时日志
tail -f data/app.logalimpay/
├── api.php # API接口
├── submit.php # 支付页面
├── mapi.php # 移动端API
├── health.php # 健康检查
├── qrcode.php # 二维码访问
├── config/ # 配置文件
│ └── alipay.php # 支付宝配置
├── src/Core/ # 核心类库
├── data/ # 数据存储
└── qrcode/ # 二维码文件
使用MD5签名算法:
// 1. 参数按键名升序排序
// 2. 拼接成 key1=value1&key2=value2 格式
// 3. 末尾拼接商户密钥
// 4. 计算MD5值
$signStr = 'money=0.01&name=测试&out_trade_no=123&pid=1001';
$sign = md5($signStr . $merchantKey);A: 通常在支付完成后30秒内检测到并发送通知。
A: 订单创建后5分钟内必须完成支付,超时自动删除。
A: 查看 data/app.log 日志文件,使用健康检查接口排查。
A: 将项目部署到Web服务器,配置好支付宝参数即可。
MIT License
本项目仅供学习交流使用,使用者需确保遵守相关法律法规和支付宝服务协议。