WHMCS 加密货币支付模块

简介

WHMCS 加密货币支付模块

一款WHMCS的加密货币支付解决方案,实现多种加密货币收款至自己的加密货币钱包内,
不依赖网关服务商, 也无需像任何三方支付网关手续费

没有中间商赚差价
没有中间商赚差价
没有中间商赚差价
没有中间商赚差价
没有中间商赚差价

结构

  1. 监控端 (三方)
  2. 插件端 (原创)

支持的区块链

  • TRON 波场
  • ETH 以太坊
  • 以及任意基于ETH以太网络的变体,例如 币安智能链(BSC)、Polygon等

支持的原生币 (就是你转账交易需要扣矿工/能量费的币种)

  • TRX
  • ETH
  • BNB
  • MATIC

支持的代币

演示截图预览

截图预览

插件配置

WHMCS 加密货币支付模块

订单页面

WHMCS 加密货币支付模块

支付页面

WHMCS 加密货币支付模块

支付成功

这里成功的时候 流水号就是区块哈希
WHMCS 加密货币支付模块

监控端部署

准备工作

加密货币查询接口

申请API是为了提交交易查询的频率限制
需要用到的加密货币接口API,请先申请保存好

区块链申请地址
TRON 波场https://www.trongrid.io/dashboard/keys
ETH 以太https://etherscan.io/myapikey
BSC 币安智能链https://bscscan.com/myapikey
Polyonhttps://polygonscan.com/myapikey

Telegram 机器人通知

  • TG的账号ID,如不知道ID,可给 https://t.me/EShopFakaBot 发送 /me 获取用户ID 格式为纯数字 1111111
  • TG的机器人Token 从https://t.me/BotFather 创建机器人时,会给你 BotToken, 格式为 数字:字符串

安装监控端

本项目依赖于TOKENPAY, 先安装这个


# 加密货币监控端部署
APPDIR=/www/wwwroot/tokenpay
[[ ! -d "${APPDIR}" ]] && mkdir -p ${APPDIR}
cd ${APPDIR}
wget -c -4 "http://doc.whmcscn.com/server/index.php?s=/api/attachment/visitFile&sign=61fbc4dbde6f4e1afa042ce54c9434ce" -O release-linux-x64.zip
unzip -d ./ release-linux-x64.zip
chmod +x TokenPay
cp -Rp appsettings.Example.json appsettings.json
cp -Rp EVMChains.Example.json EVMChains.json

编辑 appsettings.json 配置文件

{
  "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将使用自动汇率
    "BNB": 0,
    "USDT": 0,
    "TRX": 0,
    "ETH": 0,
    "USDC": 0,
    "MATIC": 0,
  },
  "ExpireTime": 1800, //单位秒
  "UseDynamicAddress": false, //是否使用动态地址,设为false时,与EPUSDT表现类似;设为true时,为每个下单用户分配单独的收款地址
  "Address": { // UseDynamicAddress设为false时在此配置TRON收款地址,EVM可以替代所有ETH系列的收款地址,支持单独配置某条链的收款地址
    "TRON": [ "Txxxx1" ], // 这里写你的钱包地址, TRON网络的 就是你接收用户付款的地址
    "EVM": [ "0x111" ]  // 这里是ETH地址 一般0x开头
  },
  "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
  }
}

特别注意

  • UseDynamicAddress 不要改,如果开启会自动生成钱包地址对应的密匙会存储在SQLITE数据库里, 并不安全
    如果别人下载了你的SQLite数据库读取到密匙 就可以导入钱包发起转账了……
  • BaseCurrency基础货币 配置为你WHMCS的默认货币,如果是USD这里也设置为USD
  • “ApiToken”: “666666”, // 这个密匙 需要记住, WHMCS配置需要
  • “WebSiteUrl”: “http://localhost“, // 这里配置为内网即可,不建议对外公开
  • 资料来源 https://github.com/LightCountry/TokenPay/blob/master/Wiki/appsettings.md

编辑 EVMChains.json 配置文件

{
  "EVMChains": [
    {
      "Enable": false,
      "ChainName": "以太坊",
      "ChainNameEN": "ETH",
      "BaseCoin": "ETH",
      "Decimals": 18,
      "ScanHost": "https://etherscan.io",
      "ApiHost": "https://api.etherscan.io",
      "ApiKey": "", // 此处申请 https://etherscan.io/myapikey
      "ERC20Name": "ERC20",
      "ERC20": [
        {
          "Name": "USDT",
          "ContractAddress": "0xdAC17F958D2ee523a2206206994597C13D831ec7"
        },
        {
          "Name": "USDC",
          "ContractAddress": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"
        }
      ]
    },
    {
      "Enable": false,
      "ChainName": "币安智能链",
      "ChainNameEN": "BSC",
      "BaseCoin": "BNB",
      "Decimals": 18,
      "ScanHost": "https://www.bscscan.com",
      "ApiHost": "https://api.bscscan.com",
      "ApiKey": "", // 此处申请 https://bscscan.com/myapikey
      "ERC20Name": "BEP20",
      "ERC20": [
        {
          "Name": "USDT",
          "ContractAddress": "0x55d398326f99059ff775485246999027b3197955"
        },
        {
          "Name": "USDC",
          "ContractAddress": "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d"
        }
      ]
    },
    {
      "Enable": false,
      "ChainName": "Polygon",
      "ChainNameEN": "Polygon",
      "BaseCoin": "MATIC",
      "Decimals": 18,
      "ScanHost": "https://polygonscan.com",
      "ApiHost": "https://api.polygonscan.com",
      "ApiKey": "", // 此处申请 https://polygonscan.com/myapikey
      "ERC20Name": "ERC20",
      "ERC20": [
        {
          "Name": "USDT",
          "ContractAddress": "0xc2132D05D31c914a87C6611C10748AEb04B58e8F"
        },
        {
          "Name": "USDC",
          "ContractAddress": "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174"
        }
      ]
    }
  ]
}

特别注意

运行测试

配置文件改完成, 验证JSON格式有效
上传到服务器上
接着运行起来,没错误的话 , 先去配置WHMCS插件

配完了 在来看最下面的以守护进程运行


# 运行
APPDIR=/www/wwwroot/tokenpay
cd ${APPDIR}
./TokenPay

# 返回信息

root@localhost:/www/wwwroot/tokenpay# ./TokenPay
ϵͳ��Linux
ϵͳ����X64
ϵͳ���ƣ�Linux 5.19.2-x86_64-linode156 #1 SMP PREEMPT_DYNAMIC Thu Aug 18 15:51:13 EDT 2022
������X64
�Ƿ�64λ����ϵͳ��True
CPU CORE:1
HostName:localhost
Version:Unix 5.19.2.86
[03:57:47 INF] Starting web host
[03:57:49 INF] 机器人启动成功!我是TG客服通知机器人。
[03:57:49 INF] 机器人消息发送结果:True
[03:57:50 INF] Service 订单过期 is starting.
[03:57:50 INF] Service 更新汇率 is starting.
[03:57:50 INF] Service 订单通知 is starting.
[03:57:50 INF] Background Service 发送订单通知 is starting.
[03:57:50 INF] Service TRC20订单检测 is starting.
[03:57:50 INF] Service TRX订单检测 is starting.
[03:57:50 INF] Service ETH订单检测 is starting.
[03:57:50 INF] Service ERC20订单检测 is starting.
[03:57:50 INF] Now listening on: http://localhost:5000
[03:57:50 INF] Application started. Press Ctrl+C to shut down.
[03:57:50 INF] Hosting environment: Production
[03:57:50 INF] Content root path: /www/wwwroot/tokenpay/
[03:57:53 INF] ------------------开始更新汇率------------------
[03:57:54 INF] 更新汇率,TRX=>CNY = 0.4943
[03:57:55 INF] 更新汇率,USDT=>CNY = 6.93
[03:57:55 INF] 更新汇率,ETH=>CNY = 12688.38
[03:57:55 INF] 更新汇率,USDC=>CNY = 6.99
[03:57:55 INF] 更新汇率,BNB=>CNY = 2183.67
[03:57:55 INF] 更新汇率,MATIC=>CNY = 6.01
[03:57:55 INF] ------------------结束更新汇率------------------

这样就代表配置OK了

下一步我们可以配置WHMCS插件了

WHMCS插件安装

插件安装

  1. 把对应的插件ZIP文件解压 或者 git clone
  2. 上传到 WHMCS目录/modules/gateways/ 下

插件激活

  1. 登录WHMCS后台
  2. Payment Gateways 下面找到 TokenPay
  3. 点击 Active 激活它

插件配置

WHMCS 加密货币支付模块
  1. API URL 同服务器配置为 http://localhost:5000
  2. API KEY 就是 appsettings.json 结尾配置的 66666 改为你自己的
  3. 币种列表, 默认支持4种, 你可以添加更多(需先在监控端配好) TRX|TRX (波场) EVM_ETH_ETH|ETH (以太坊) USDT_TRC20|USDT-TRC20 (波场链) EVM_ETH_USDT_ERC20|USDT-ERC20 (以太链)
  4. 如果
    1. WHMCS默认货币为USD, 监控端货币配置为CNY 货币转换选择 USD
    2. WHMCS默认货币为CNY, 监控端货币配置为CNY 货币转换选择 None
    3. WHMCS默认货币为CNY, 监控端货币配置为CNY 货币转换选择 None
    4. WHMCS默认货币为CNY, 监控端货币配置为USD 货币转换选择 CNY

这样就配置完成了, 下一步生成订单测试下

监控端的守护进程运行

到这一步骤的时候,你应该已经对接和调试都完成了
现在以守护进程启动TokenPay来监控加密货币的订单和支付状态了

下面是通用的,可能系统版本不同有略微区别,我尽量把安装和路径都统一了

Redhat/CentOS/AlmaLinux 系统部署


# 安装软件包
sudo yum install epel-release -y
sudo yum install pip python3 -y
sudo yum install supervisor -y

# 替换后缀
sed -i 's|\*.ini|\*.conf|g'  /etc/supervisord.conf 

# 生成配置 (注意这里,如果你部署路径不是这个,改为你自己的)
cat >/etc/supervisord.d/tokenpay.conf <<EOF

[program:tokenpay]

directory=/www/wwwroot/tokenpay # 改为你的目录 command=/www/wwwroot/tokenpay/TokenPay user=root startsecs=10 autostart=true autorestart=true stderr_logfile=/var/log/supervisor/%(program_name)s.err.log stdout_logfile=/var/log/supervisor/%(program_name)s.out.log loglevel=info EOF # 更新下文件 sudo systemctl daemon-reload # 开机启动 sudo systemctl enable supervisord # 启动 sudo systemctl start supervisord # 验证状态 sudo supervisorctl status 返回 tokenpay RUNNING pid 284452, uptime 0:11:21 代表正常运行了

Debian/Ubuntu 系统

# 安装软件包
sudo apt update && sudo apt install supervisor
sudo systemctl status supervisor

cat >/etc/supervisor/conf.d/tokenpay.conf <<EOF

[program:tokenpay]

directory=/www/wwwroot/tokenpay # 改为你的目录 command=/www/wwwroot/tokenpay/TokenPay user=root autostart=true autorestart=true stderr_logfile=/var/log/supervisor/%(program_name)s.err.log stdout_logfile=/var/log/supervisor/%(program_name)s.out.log loglevel=info EOF sudo supervisorctl reread sudo supervisorctl update # 这时候你的TG应该收到消息了,代表启动成功 # 设置为开机启动 sudo systemctl enable supervisor # 验证状态 sudo supervisorctl status # 返回 tokenpay RUNNING pid 284452, uptime 0:11:21 # 代表正常运行了

通用命令


# 不需要运行,偶尔调试的时候需要,方便复制黏贴
sudo systemctl stop supervisord
sudo systemctl start supervisord
sudo supervisorctl status
sudo supervisorctl reload
sudo supervisorctl reread
sudo supervisorctl update


# 如果需要单项目管理

# 停止
sudo supervisorctl stop tokenpay
# 启动
sudo supervisorctl start tokenpay
# 重启
sudo supervisorctl restart tokenpay

常见问题

同时请求同金额的订单会出现 A支付入账至B订单吗?

不会,监控端会生成UUID订单号做识别了

为什么不是实时更新订单状态?

通常用户发起加密货币的支付到完成支付
有一个时间段,需要一些时间来处理交易

TRON网络 通常较快处理 1-5分钟
ETH网络 取决整体网络状况和矿工费高低 1-30分钟

用户发起支付=> 确认支付 => 区块链网络确认区块 => 确认完成
耗的时间大部分都在 区块链网络确认区块 这个过程中 , 通过交易HASH可以看到 会显示 “确认中” 的提示

一般交易完成都小于30分钟,所以监控端的超时间设置为30分钟最佳

守护进程一直重启

如果守护进程一直 STARTING RUNNING的循环, 这个是进程或管道文件问题
删除 supervisor.sock 或者 pid文件 重启下即可
这个问题应该是偶发的, 一般出现在喜欢pkill -f 干掉进程的方式,例如我
这样的话pid或sock文件还记录了异常, 然后子进程不能获得进程返回的代码
导致死循环……

扩展ETH链币种教程

基础知识

把ETH链理解为银行总行
把代币理解为银行提供的多币种账户,例如USD,HKD

当您注册ETH钱包的时候会分配一个地址,相当于银行总行账户
别人给你转不同代币例如USDT-ERC20, 相当于别人转USD给你

扩展币种

基于TokenPAY监控端扩展币种
首先 打开 https://etherscan.io/tokens
找到你要扩展的币种,我们以 扩展 True USD 为例
点击 True USD
https://etherscan.io/token/0x0000000000085d4780B73119b644AE5ecd22b376

首先找到合约地址 在右边的OTHER INFO里面
Other Info
TOKEN CONTRACT (WITH 18 DECIMALS) # 这个18 就是精度
0x0000000000085d4780B73119b644AE5ecd22b376 # 这个就是合约地址

更新合约地址

打开 EVMChains.json , 在ETH的配置段,添加
注意逗号问题 具体见JSON代码格式标准

,
        {
          "Name": "TUSD", // 代币名称
          "ContractAddress": "0x0000000000085d4780B73119b644AE5ecd22b376" //合约地址
        }

完成后的ETH段完整内容为

    {
      "Enable": true,
      "ChainName": "以太坊",
      "ChainNameEN": "ETH",
      "BaseCoin": "ETH",  //简单理解为 你交易代币扣矿工费的币种
      "Decimals": 18,
      "ScanHost": "https://etherscan.io",
      "ApiHost": "https://api.etherscan.io",
      "ApiKey": "你的KEY", // 此处申请 https://etherscan.io/myapikey
      "ERC20Name": "ERC20",
      "ERC20": [
        {
          "Name": "USDT",
          "ContractAddress": "0xdAC17F958D2ee523a2206206994597C13D831ec7"
        },
        {
          "Name": "USDC",
          "ContractAddress": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"
        },
        {
          "Name": "TUSD", // 代币名称
          "ContractAddress": "0x0000000000085d4780B73119b644AE5ecd22b376" //合约地址
        }
      ]
    },

更新币种支持

继续更新 appsettings.json 文件, 添加币种名称
WHMCS 加密货币支付模块

重启生效

这样就添加了TUSD支持
注意验证下JSON格式, 格式错误会导致无法启动

然后重新启动下守护进程

sudo supervisorctl reload

插件配置

接着WHMCS后台支付插件的配置, 币种列表下面 加入
EVM_ETH_TUSD_ERC20|TUSD-ERC20(TrueUSD)
如图
WHMCS 加密货币支付模块

效果演示

用户就可以在前台使用TUSD中支付了
会显示这个币种
WHMCS 加密货币支付模块
然后点击支付
会显示ETH链的TUSD了
WHMCS 加密货币支付模块

如果点击错了

WHMCS加密货币支付插件
1
加密货币监控端 TokenPay
2
    下载权限
    查看
    • 免费下载
      评论并刷新后下载
      登录后下载
    • {{attr.name}}:
    您当前的等级为
    登录后免费下载登录 小黑屋反思中,不准下载! 评论后刷新页面下载评论 支付以后下载 请先登录 您今天的下载次数(次)用完了,请明天再来 支付积分以后下载立即支付 支付以后下载立即支付 您当前的用户组不允许下载升级会员
    您已获得下载权限 您可以每天下载资源次,今日剩余

    无错源码所有资源来自会员发布以及互联网收集,不代表本站立场,如有侵犯你的权益请联系管理员,站内发信联系 我们会第一时间进行审核删除。站内资源为网友个人学习或测试研究使用,未经原版权作者许可,禁止用于任何商业途径!本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。请在下载24小时内删除!


    如果遇到付费才可观看的文章,建议升级传奇VIP。全站所有资源任意下免费看”。本站资源少部分采用7z压缩,为防止有人压缩软件不支持7z格式,7z解压,建议下载7-zip,zip、rar解压,建议下载WinRAR如遇解压需要密码,请尝试使用www.wucuoym.com来解压,如若仍有问题,请联系站长。

    给TA打赏
    共{{data.count}}人
    人已打赏
    Whmcs

    Lagom Website Builder By RSStudio v1.0.1 Nulled破解版开心版

    2023-12-5 0:04:49

    Whmcs

    Lagom Email Template v1.1.2

    2024-1-7 11:48:58

    9 条回复 A文章作者 M管理员
    1. frank

      找了好久 终于找到了

    2. 好孩子

      感谢分享

    3. 24dsa

      找了好久 终于找到了

    4. 24dsa

      找了好久 终于找到了

      ss

    5. akaha

      找了好久 终于找到了

    6. zhangwanli

      我瞅瞅

    7. zhangwanli

      瞅瞅

    8. jacket

      cool

    9. dadaioge

      太棒了 很需要 谢谢

    个人中心
    购物车
    优惠劵
    今日签到
    有新私信 私信列表
    搜索