AliMPay - 一个手搓的自建支付宝码支付
- 内容介绍
- 文章标签
- 相关推荐
开发原因:看到某6%码支付有感,打算手搓一个
原版CLI写的很快(Python写逻辑 让AI改PHP 丢给ai干了我几个小时。。。
什么时候我能学会写前端 只会写后端逻辑写不了啥好玩的
AliMPay - 支付宝码支付系统
一个基于支付宝转账码的自动化支付解决方案,支持经营码收款和转账码收款两种模式。
751192321ae102a907612a9ae6307903.png445×906 42.8 KB
特性
- 自动监控: 实时监控支付宝账单,自动检测支付状态
- 码支付: 支持经营码收款和转账码收款
- 智能超时: 5分钟支付时限,超时订单自动清理
- 安全可靠: MD5签名验证,防止数据篡改
- 协议兼容: 100%兼容CodePay协议
快速配置
1. 环境要求
- PHP 7.4+
- Composer
- 支付宝开放平台应用
2. 安装步骤
# 下载项目
# 安装依赖
composer install
# 复制配置文件
cp config/alipay.example.php config/alipay.php
3. 支付宝配置
获取支付宝应用参数
- 登录 支付宝开放平台
- 创建"网页/移动应用"
- 获取以下参数:
- 应用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 (商户密钥) ,这是商户接入时必需的参数。
4. 启动服务 下方两个模式二选一
码支付模式
经营码收款(推荐)
目前支付宝放水,进入经营码申请页面填写商户信息时,返回,就会提示是否免填写开启经营码
如果实在没有此处使用收款码替代,或者使用下方转账方式
特点: 无需转账备注,通过金额+时间匹配订单
-
上传经营码:将支付宝经营码二维码保存为
qrcode/business_qr.png -
启用配置:编辑
config/alipay.php
'payment' => [
'business_qr_mode' => [
'enabled' => true, // 启用经营码模式
]
]
工作原理:
- 相同金额的订单自动增加0.01元偏移(1.00→1.01→1.02…)
- 客户扫码支付对应金额
- 系统通过金额和时间匹配订单
转账收款(无需额外配置)
工作原理:
- 客户转账时填写订单号作为备注
- 系统监控账单,通过备注匹配订单
支付宝调用流程
创建支付订单
参考码支付/易支付协议
监控支付状态
系统会自动:
- 查询账单: 每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.log
目录结构
alimpay/
├── api.php # API接口
├── submit.php # 支付页面
├── mapi.php # 移动端API
├── health.php # 健康检查
├── qrcode.php # 二维码访问
├── config/ # 配置文件
│ └── alipay.php # 支付宝配置
├── src/Core/ # 核心类库
├── data/ # 数据存储
└── qrcode/ # 二维码文件
常见问题
Q: 支付检测延迟多久?
A: 通常在支付完成后30秒内检测到并发送通知。
Q: 订单超时时间是多久?
A: 订单创建后5分钟内必须完成支付,超时自动删除。
Q: 如何调试支付问题?
A: 查看 data/app.log 日志文件,使用健康检查接口排查。
Q: 如何部署到生产环境?
A: 将项目部署到Web服务器,配置好支付宝参数即可。
开源协议
MIT License
免责声明
本项目仅供学习交流使用,使用者需确保遵守相关法律法规和支付宝服务协议。
Github地址 GitHub - ours1505/AliMPay
点点Star谢谢喵
--【壹】--:
厉害啊11
--【贰】--:
码是裸码
转账是支付宝的landing跳转alipay://
看你做什么 容易被举报的就去用抗投易支付吧 别用来干坏事
我用支付宝那个不填资料的经营码 挂了小一个月了 5k流水 没事
--【叁】--:
佬友牛的,比我之前发的那个容易多了
国内虚拟物品自动发货流程
--【肆】--:
太强了,佬
--【伍】--:
太强了佬
--【陆】--:
肯定干正经的,就是怕恶意举报也封号,主要是我担心没备案也违规
--【柒】--:
感谢大佬!
--【捌】--:
PHP是最好的语言
--【玖】--:
太强了佬
--【拾】--:
太强了!
--【拾壹】--:
收款码用的二维码是他转换过的还是就是自己的?被举报了会不会封号啊,异地线上收款
--【拾贰】--:
太强了!
--【拾叁】--:
可以。
不需要 你只要有收款码就行
或者使用转账模式
--【拾肆】--:
这个需要营业执照吗,需要商户认证吗,收款码能收花呗的可以吗
--【拾伍】--:
佬太强啦!
--【拾陆】--:
厉害了佬
--【拾柒】--:
感觉很少看到用 PHP 写项目的佬
--【拾捌】--:
佬这个支持易支付接口么?我部署了返回报错,说是签名对不上
--【拾玖】--:
感谢佬,太厉害了
开发原因:看到某6%码支付有感,打算手搓一个
原版CLI写的很快(Python写逻辑 让AI改PHP 丢给ai干了我几个小时。。。
什么时候我能学会写前端 只会写后端逻辑写不了啥好玩的
AliMPay - 支付宝码支付系统
一个基于支付宝转账码的自动化支付解决方案,支持经营码收款和转账码收款两种模式。
751192321ae102a907612a9ae6307903.png445×906 42.8 KB
特性
- 自动监控: 实时监控支付宝账单,自动检测支付状态
- 码支付: 支持经营码收款和转账码收款
- 智能超时: 5分钟支付时限,超时订单自动清理
- 安全可靠: MD5签名验证,防止数据篡改
- 协议兼容: 100%兼容CodePay协议
快速配置
1. 环境要求
- PHP 7.4+
- Composer
- 支付宝开放平台应用
2. 安装步骤
# 下载项目
# 安装依赖
composer install
# 复制配置文件
cp config/alipay.example.php config/alipay.php
3. 支付宝配置
获取支付宝应用参数
- 登录 支付宝开放平台
- 创建"网页/移动应用"
- 获取以下参数:
- 应用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 (商户密钥) ,这是商户接入时必需的参数。
4. 启动服务 下方两个模式二选一
码支付模式
经营码收款(推荐)
目前支付宝放水,进入经营码申请页面填写商户信息时,返回,就会提示是否免填写开启经营码
如果实在没有此处使用收款码替代,或者使用下方转账方式
特点: 无需转账备注,通过金额+时间匹配订单
-
上传经营码:将支付宝经营码二维码保存为
qrcode/business_qr.png -
启用配置:编辑
config/alipay.php
'payment' => [
'business_qr_mode' => [
'enabled' => true, // 启用经营码模式
]
]
工作原理:
- 相同金额的订单自动增加0.01元偏移(1.00→1.01→1.02…)
- 客户扫码支付对应金额
- 系统通过金额和时间匹配订单
转账收款(无需额外配置)
工作原理:
- 客户转账时填写订单号作为备注
- 系统监控账单,通过备注匹配订单
支付宝调用流程
创建支付订单
参考码支付/易支付协议
监控支付状态
系统会自动:
- 查询账单: 每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.log
目录结构
alimpay/
├── api.php # API接口
├── submit.php # 支付页面
├── mapi.php # 移动端API
├── health.php # 健康检查
├── qrcode.php # 二维码访问
├── config/ # 配置文件
│ └── alipay.php # 支付宝配置
├── src/Core/ # 核心类库
├── data/ # 数据存储
└── qrcode/ # 二维码文件
常见问题
Q: 支付检测延迟多久?
A: 通常在支付完成后30秒内检测到并发送通知。
Q: 订单超时时间是多久?
A: 订单创建后5分钟内必须完成支付,超时自动删除。
Q: 如何调试支付问题?
A: 查看 data/app.log 日志文件,使用健康检查接口排查。
Q: 如何部署到生产环境?
A: 将项目部署到Web服务器,配置好支付宝参数即可。
开源协议
MIT License
免责声明
本项目仅供学习交流使用,使用者需确保遵守相关法律法规和支付宝服务协议。
Github地址 GitHub - ours1505/AliMPay
点点Star谢谢喵
--【壹】--:
厉害啊11
--【贰】--:
码是裸码
转账是支付宝的landing跳转alipay://
看你做什么 容易被举报的就去用抗投易支付吧 别用来干坏事
我用支付宝那个不填资料的经营码 挂了小一个月了 5k流水 没事
--【叁】--:
佬友牛的,比我之前发的那个容易多了
国内虚拟物品自动发货流程
--【肆】--:
太强了,佬
--【伍】--:
太强了佬
--【陆】--:
肯定干正经的,就是怕恶意举报也封号,主要是我担心没备案也违规
--【柒】--:
感谢大佬!
--【捌】--:
PHP是最好的语言
--【玖】--:
太强了佬
--【拾】--:
太强了!
--【拾壹】--:
收款码用的二维码是他转换过的还是就是自己的?被举报了会不会封号啊,异地线上收款
--【拾贰】--:
太强了!
--【拾叁】--:
可以。
不需要 你只要有收款码就行
或者使用转账模式
--【拾肆】--:
这个需要营业执照吗,需要商户认证吗,收款码能收花呗的可以吗
--【拾伍】--:
佬太强啦!
--【拾陆】--:
厉害了佬
--【拾柒】--:
感觉很少看到用 PHP 写项目的佬
--【拾捌】--:
佬这个支持易支付接口么?我部署了返回报错,说是签名对不上
--【拾玖】--:
感谢佬,太厉害了

