开源免费的跨平台usdt收付款中间件 Easy Payment USDT——epsdt
Epusdt(全称:Easy Payment Usdt)是一个由Go语言编写的私有化部署Usdt支付中间件(Trc20网络)
站长或开发者可通过Epusdt提供的http api集成至您的任何系统,无需过多的配置,仅仅依赖mysql和redis
可实现USDT的在线支付和消息回调,这一切在优雅和顷刻间完成!🎉
私有化搭建使得无需额外的手续费和签约费用,Usdt代币直接进入您的钱包💰。
相关链接:https://github.com/assimon/epusdt
项目特点
支持私有化部署,无需担心钱包被篡改和吞单😁
Go语言跨平台实现,支持x86和arm芯片架构的win/linux设备
多钱包地址轮询,提高订单并发率
异步队列响应,优雅及高性能
无需额外环境配置,仅运行一个编译后二进制文件即可使用
支持http api,其他系统亦可接入
Telegram机器人接入,便捷使用和支付消息快速通知
项目结构
Epusdt
├── plugins ---> (已集成的插件库,例如dujiaoka)
├── src ---> (项目核心目录)
├── sdk ---> (接入SDK)
├── sql ---> (安装sql文件或更新sql文件)
└── wiki ---> (知识库)
已适配系统插件
独角数卡:插件地址https://github.com/assimon/epusdt/tree/master/plugins/dujiaoka
其他程序的插件作者还在开发当中,whmcs、wordpress、算算panel等。多关注GitHub地址吧。
工作原理
Epusdt的实现方式与其他项目原理类似,都是通过监听trc20网络的api或节点,
监听钱包地址usdt代币入账事件,通过金额差异和时效性来判定交易归属信息。
可参考下方流程图
简单的原理:
1.客户需要支付20.05usdt
2.服务器有一个hash表存储钱包地址对应的待支付金额 例如:address_1 : 20.05
3.发起支付的时候,我们可以判定钱包address_1的20.05金额是否被占用,如果没有被占用那么可以直接返回这个钱包地址和金额给客户,告知客户需按规定金额20.05准确支付,少一分都不行。且将钱包地址和金额 address_1:20.05锁起来,有效期10分钟。
4.如果订单并发下,又有一个20.05元需要支付,但是在第3步的时候上一个客户已经锁定了该金额,还在等待支付中...,那么我们将待支付金额加上0.0001,再次尝试判断address_1:20.0501金额是否被占用?如果没有则重复第三步,如果还是被占用就继续累加尝试,直到加了100次后都失败
5.新开一个线程去监听所有钱包的USDT入账事件,网上有公开的api或rpc节点。如果发现有入账金额与待支付的金额相等。则判断该笔订单支付成功!
使用教程
宝塔运行epusdt教程
一、新增网站
在宝塔面板网站里新增一个网站,无需php和ftp纯静态即可,但是需要数据库!
将提前解析好的收银台域名绑定。
二、导入Sql
登录管理刚刚新增数据库,导入Epusdt所需的sql文件。
三、配置Epusdt
1.将编译好的Epusdt项目压缩包上传至刚刚新增的网站目录,随后解压。
2.将.env.example重命名为.env文件,这个是配置文件
3.编辑.env文件,填入你的配置
app_name=epusdt
#下面配置你的域名,收银台会需要
app_uri=https://upay.dujiaoka.com
#是否开启debug,默认false
app_debug=false
#http服务监听端口
http_listen=:8000
#静态资源文件目录
static_path=/static
#缓存路径
runtime_root_path=/runtime
#日志配置
log_save_path=/logs
log_max_size=32
log_max_age=7
max_backups=3
# mysql配置
mysql_host=127.0.0.1
mysql_port=3306
mysql_user=mysql账号
mysql_passwd=mysql密码
mysql_database=数据库
mysql_table_prefix=
mysql_max_idle_conns=10
mysql_max_open_conns=100
mysql_max_life_time=6
# redis配置
redis_host=127.0.0.1
redis_port=6379
redis_passwd=
redis_db=5
redis_pool_size=5
redis_max_retries=3
redis_idle_timeout=1000
# 消息队列配置
queue_concurrency=10
queue_level_critical=6
queue_level_default=3
queue_level_low=1
#机器人Apitoken
tg_bot_token=
#telegram代理url(大陆地区服务器可使用一台国外服务器做反代tg的url),如果运行的本来就是境外服务器,则无需填写
tg_proxy=
#管理员userid
tg_manage=
#api接口认证token(用于发起交易的签名认证,请勿外泄)
api_auth_token=
#订单过期时间(单位分钟)
order_expiration_time=10
#强制汇率(设置此参数后每笔交易将按照此汇率计算,例如:6.4)
forced_usdt_rate=
4.⚠️注意:配置文件里面不认识的不要修改,留空即可,不会改又要瞎改,除非你对项目源代码很熟悉很有信心😁
四、配置反向代理
由于Epusdt会自动开启http服务并监听配置端口,所以可以直接用ip访问,例如: http://127.0.0.1:8000。
这会显得非常不美观,还没有https。
所以我们需要借助nginx的反向代理来为Epusdt绑定一个域名
点击宝塔->网站->点击刚刚新增网站的设置->反向代理设置
五、赋予Epusdt执行权限
linux服务器需要赋予Epust执行权限方可启动。
1.通过ssh进入服务器终端
2.进入epusdt可执行文件所在目录(目录位置可以参考宝塔面板的网站根目录)
3.执行命令chmod +x epusdt赋予权限(根据你的实际目录来,不用一比一抄我的,每个人的目录都不一样)
六、配置supervisor
为了保证Epusdt常驻后台运行,我们需要配置supervisor来实现进程监听
打开宝塔supervisor,添加守护进程
启动命令为:epusdt所在目录+epusdt执行文件+空格+http+空格+start(例如:/www/wwwroot/upay/epusdt-dev/epusdt http start)
出现如下图则代表成功:
七、测试
以上步骤完成无误后,进入telegram机器人🤖,如果机器人有反馈则代表运行正常!
其他注意事项
1.所有.env配置文件有了修改后都需要重启supervisor进程
2.教程所示的目录均为参考,请勿1:1照抄,根据自己实际情况来
3.windows与linux不同,windows请直接运行epusdt.exe即可,无需赋予执行权限