这个脚本可以帮助您自动监控 TRC20、ERC20 和 BEP20 网络上的 USDT 交易,并将匹配的交易与您的支付记录关联起来,实现自动确认支付功能。
1. 准备工作
申请 API 密钥
脚本使用各种区块链 API 来监控 USDT 交易。您需要申请以下 API 密钥:
-
TronGrid API(用于 TRC20 网络)
- 访问 TronGrid 官网
- 注册账号并创建 API 密钥
-
Etherscan API(用于 ERC20 网络)
- 访问 Etherscan 官网
- 注册账号并创建 API 密钥
-
BSCScan API(用于 BEP20 网络)
- 访问 BSCScan 官网
- 注册账号并创建 API 密钥
服务器要求
- PHP 7.2 或更高版本
- PDO 扩展(用于数据库连接)
- cURL 扩展(用于 API 请求)
- 访问 cron 作业的权限(用于定时运行脚本)
2. 脚本配置
- 将
usdt_monitor_multi.php
文件上传到您的服务器 - 编辑文件,配置以下信息:
$config = [
'db_host' => 'localhost', // 数据库主机
'db_user' => 'db_username', // 数据库用户名
'db_password' => 'db_password', // 数据库密码
'db_name' => 'db_name', // 数据库名
'db_prefix' => 'emlog_', // 数据库表前缀,与emlog保持一致
// API密钥配置
'tron_api_key' => 'YOUR_TRONGRID_API_KEY', // TronGrid API密钥
'etherscan_api_key' => 'YOUR_ETHERSCAN_API_KEY', // Etherscan API密钥
'bscscan_api_key' => 'YOUR_BSCSCAN_API_KEY', // BSCScan API密钥
// USDT合约地址
'usdt_contracts' => [
'ERC20' => '0xdac17f958d2ee523a2206206994597c13d831ec7', // 以太坊USDT合约
'BEP20' => '0x55d398326f99059ff775485246999027b3197955', // 币安智能链USDT合约
],
'wallet_address' => '', // 留空,脚本会自动从插件设置中获取
'network' => '', // 留空,脚本会自动从插件设置中获取
'log_file' => __DIR__ . '/usdt_monitor.log', // 日志文件路径
'notify_email' => 'your@email.com', // 接收通知的邮箱
'check_period' => 24, // 检查多少小时内的待付款订单
'confirmation_required' => 1, // 留空,脚本会自动从插件设置中获取
];
3. 设置定时任务
为了定期检查交易,您需要设置一个 cron 任务来运行脚本。建议每 5-10 分钟运行一次。
Linux/Unix 服务器
- 通过 SSH 登录到您的服务器
- 运行
crontab -e
命令打开 cron 配置 - 添加以下行(假设脚本位于
/var/www/html/usdt_monitor_multi.php
):
*/10 * * * * php /var/www/html/usdt_monitor_multi.php >> /var/www/html/usdt_cron.log 2>&1
共享主机
如果您使用的是共享主机,您可以通过主机提供的控制面板(如 cPanel)来设置 cron 任务。
- 登录到您的控制面板
- 找到"Cron Jobs"或类似的选项
- 创建一个新的 cron 任务,运行以下命令:
php /path/to/your/usdt_monitor_multi.php
- 设置运行频率为每 10 分钟一次
4. 测试
设置完成后,您可以手动运行脚本来测试其是否正常工作:
php /path/to/your/usdt_monitor_multi.php
查看生成的日志文件以确认脚本运行正常。
5. 脚本工作流程
-
连接数据库并获取 USDT 支付插件的设置(包括钱包地址和网络类型)
-
获取最近 24 小时内(可配置)状态为"pending"的所有支付记录
-
根据配置的网络类型,调用对应的区块链 API:
- TRC20 网络: 调用 TronGrid API
- ERC20 网络: 调用 Etherscan API
- BEP20 网络: 调用 BSCScan API
-
匹配交易和支付记录(根据金额和网络类型匹配)
-
更新匹配的支付状态:
- 如果插件设置中启用了"需要手动确认",则只更新交易哈希但保持"pending"状态
- 如果禁用了"需要手动确认",则自动将状态更新为"completed"
-
发送电子邮件通知
6. 不同网络的特点
TRC20 (TRON)
- 交易费用最低,适合小额支付
- 确认速度快,通常只需几秒到几分钟
- 是目前 USDT 交易最常用的网络
ERC20 (以太坊)
- 交易费用高,尤其是在网络拥堵时
- 确认时间较长,可能需要几分钟到几小时
- 安全性高,被广泛接受
BEP20 (币安智能链)
- 交易费用低,速度快
- 与 ERC20 兼容,但 Gas 费用更低
- 适合中小金额的交易
7. 注意事项
-
API 请求限制:
- TronGrid: 免费账户通常每秒 5 个请求,每天最多 2000 个请求
- Etherscan: 免费账户每秒 1 个请求,每天最多 100,000 个请求
- BSCScan: 免费账户每秒 5 个请求,每天最多 100,000 个请求
-
金额匹配:脚本允许 0.01 USDT 的误差,以应对不同网络的小数位数差异。
-
网络精确匹配:脚本会优先匹配与支付记录中指定的网络相同的交易,确保不会错误地处理不同网络的交易。
-
多网络监控:如果插件设置中没有指定网络类型,脚本会检查所有三个网络的交易,但这会增加 API 调用次数。
8. 安全建议
-
将脚本放在网站根目录之外,防止被直接访问
-
为脚本设置合适的文件权限(通常是 644)
-
定期检查日志文件,确保脚本正常运行
-
考虑为 API 密钥设置 IP 限制
-
使用 HTTPS 加密来保护 API 请求
-
定期更新脚本,以便获取最新的安全修复和功能改进
疑难解答
如果脚本无法正常工作,请检查以下几点:
- 日志文件:查看日志文件中的错误信息
- 数据库连接:确保数据库连接信息正确
- API 密钥:确保各个区块链的 API 密钥有效且未超过使用限制
- 网络选择:确认 USDT 支付插件中设置的网络类型是否与用户实际支付的网络一致
- 合约地址:确认脚本中的 USDT 合约地址是否正确
- 解析问题:如果 API 响应解析失败,可能是 API 返回格式发生了变化,需要更新脚本
支持与更新
区块链技术和 API 可能会随时间变化。如果您遇到任何问题,建议:
- 检查 API 提供商的文档,看是否有格式变更
- 查看日志文件了解详细错误信息
- 考虑更新脚本以适应最新的 API 变化
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于