TokenPay搭建教程-彩虹易支付/独角数卡对接USDT区块链支付解决方案
这个各个发卡站平台需要对接USDT支付的中间件插件,不可不搭,不然就需要第三方过桥。
目前可以支持这个插件的源码平台有:彩虹易支付,独角数卡,风铃发卡,V2board(用于管理V2ray),WHCMS
付费下载的是已经整理好的源码和安装视频和文字教程。
TokenPay – 区块链
支付解决方案
一款开源的,支持以动态收款地址或静态收款地址收取波场的
TRX
、USDT-TRC20
以及ETH系原生币
以及ETH系ERC20代币
的支付解决方案! 理论上支持所有ETH系的区块链
,常见的ETH系的区块链有:以太坊(ETH)
、币安智能链(BSC)
、Polygon
等等。
项目简介
TokenPay
是一个由C#语言
编写的私有化部署的区块链
支付解决方案。- 页面支持以
简体中文
、英语
、俄语
显示,依据访问者设备语言自适应,不支持的语言默认显示英语
- 本项目不依赖任何外部资源,无需另外部署
数据库
,采用轻量化的sqlite
,也无需redis
。 - 任意项目都可以对接,轻松实现
TRX
、USDT-TRC20
以及ETH系原生币
以及ETH系ERC20代币
,理论支持所有ETH系的区块链
收款!? ? ? TokenPay
遵守 GPLv3 开源协议!
项目特点
C#语言
跨平台实现,支持x86和arm芯片架构的win/linux/mac设备?- 支持每单一个收款地址,或每个用户一个收款地址,解决了单一地址收款,容易导致错误完成订单的痛点。
- 无需额外环境配置,仅运行一个编译后二进制文件即可使用
设计实现
TokenPay
的实现方式与其他项目原理类似,都是通过TronGrid
、EtherScan
等提供的api,
轮询订单未过期的钱包地址的TRX
、ETH
、USDT
、USDC
等入账事件,将入账金额,与数据库的订单金额进行对比,若一致,则视为订单完成
简单的原理:
0.服务器定时同步交易所最新汇率
1.客户支付,交易上链
2.服务器定时通过API轮询,获取监听地址下的最新入账交易数据,并与数据库订单对比
3.若金额一致,将订单标记为完成
4.订单完成后,异步通知任务将订单完成事件回调给平台
宝塔运行
务必保存好TokenPay.db
文件,此文件内保存了系统生成的收款地址和私钥,一旦丢失,你将损失所收取的款项
1. 下载release对应平台的包,解压到指定目录
2. 重命名appsettings.Example.json
为appsettings.json
,并修改配置文件
appsettings.json
说明参见:appsettings.json
#appsettings.json
说明
务必保存好TokenPay.db
文件,此文件内保存了系统生成的收款地址和私钥,一旦丢失,你将损失所收取的款项
为保证安全性,务必修改ApiToken
{
"Serilog": {
"MinimumLevel": {
"Default": "Information",
"Override": {
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
}
},
"AllowedHosts": "*",
"ConnectionStrings": {
"DB": "Data Source=|DataDirectory|TokenPay.db; Pooling=true;Min Pool Size=1"
},
"TRON-PRO-API-KEY": "xxxxxx-xxxx-xxxx-xxxxxxxxxxxx", // 避免接口请求频繁被限制,此处申请 https://www.trongrid.io/dashboard/keys
"BaseCurrency": "CNY", //默认货币,支持 CNY、USD、EUR、GBP、AUD、HKD、TWD、SGD
"Rate": { //汇率 设置0将使用自动汇率
"USDT": 0,
"TRX": 0,
"ETH": 0,
"USDC": 0
},
"ExpireTime": 1800, //单位秒
"UseDynamicAddress": false, //是否使用动态地址,设为false时,与EPUSDT表现类似;设为true时,为每个下单用户分配单独的收款地址
"Address": { // UseDynamicAddress设为false时在此配置TRON收款地址,EVM可以替代所有ETH系列的收款地址,支持单独配置某条链的收款地址
"TRON": [ "Txxxx1" ],
"EVM": [ "0x111" ]
},
"OnlyConfirmed": true, //默认仅查询已确认的数据,如果想要回调更快,可以设置为false
"NotifyTimeOut": 3, //异步通知超时时间
"ApiToken": "666666", //异步通知密钥,请务必修改此密钥为随机字符串,脸滚键盘即可
"WebSiteUrl": "http://token-pay.xxxxx.com", //配置服务器外网域名
"Telegram": {
"AdminUserId": 12345678, // 你的账号ID,如不知道ID,可给https://t.me/EShopFakaBot 发送 /me 获取用户ID
"BotToken": "1234567890:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" //从https://t.me/BotFather 创建机器人时,会给你BotToken
}
}
3. 重命名EVMChains.Example.json
为EVMChains.json
,并配置需要支持的区块链。
Enable
和ApiKey
,其他配置项请勿修改!!!
只需修改配置中的
配置文件中已添加
ETH
、BSC
、Polygon
三条区块链,如需其他ETH系的区块链可自由拓展。每条区块链配置都带有一个Enable
参数,表示是否启用此区块链,默认的三条区块链的此项配置都为false
,请将需要启用的区块链Enable
参数更改为true
EVMChains.json
说明参见:EVMChains.json
#EVMChains.json
说明
3.1. ETH系区块链配置参数说明
字段 | 类型 | 说明 |
---|---|---|
Enable | bool | 是否启用此区块链,支持的值: true 、false |
ChainName | string | 区块链名称 |
ChainNameEN | string | 区块链英文名称 |
BaseCoin | string | 基本币名称 |
Decimals | int | 基本币精度,如:18表示小数点后有18位,6表示小数点后有6位 |
ApiHost | string | api请求地址 |
ApiKey | string | api请求的授权key |
ERC20Name | string | ERC20代币名称,比如币安的就叫BEP-20 ,而不叫ERC20 ,所以特意加了这个 |
ERC20 | object[] | 要支持的代币 |
3.2. ETH系区块链配置代币说明
字段 | 类型 | 说明 |
---|---|---|
Name | string | 代币名称,不管是哪条链的USDT,都是写USDT。USDC同理,此参数会用于向OKX服务器查询币价,填写了错误的名称会导致无法自动获取币价 |
ContractAddress | string | 合约地址,错误的合约地址将导致收款无法回调 |
4. 为二进制文件TokenPay
增加可执行权限
5. 宝塔应用管理器
或Supervisor管理器
添加应用
应用名称:TokenPay
运行身份:root 应用环境:无 (Supervisor管理器
无此项)
执行目录:/xxx (你解压文件的目录)
启动文件:/xxx/TokenPay
如有其他选项保持默认
如需修改项目启动端口 可以增加启动参数 –urls=http://+:5001 如: ./xxx/xxx/TokenPay –urls=http://+:5001
5001可以改为任意未被占用的端口,建议大于5000
6. 添加一个纯静态网站,配置反向代理 http://127.0.0.1:5000
如启动失败,可尝试将整个TokenPay目录
循环设置777
权限,再重新尝试启动