mirror of
https://github.com/GMWalletApp/epusdt.git
synced 2026-07-07 10:16:15 +00:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 549b55da6b |
@@ -7,7 +7,7 @@
|
|||||||
<a href="https://golang.org"><img src="https://img.shields.io/badge/Golang-1.16-red" alt="Go version 1.16"></a>
|
<a href="https://golang.org"><img src="https://img.shields.io/badge/Golang-1.16-red" alt="Go version 1.16"></a>
|
||||||
<a href="https://echo.labstack.com"><img src="https://img.shields.io/badge/Echo Framework-v4-blue" alt="Echo Framework v4"></a>
|
<a href="https://echo.labstack.com"><img src="https://img.shields.io/badge/Echo Framework-v4-blue" alt="Echo Framework v4"></a>
|
||||||
<a href="https://github.com/tucnak/telebot"><img src="https://img.shields.io/badge/Telebot Framework-v3-lightgrey" alt="Telebot Framework-v3"></a>
|
<a href="https://github.com/tucnak/telebot"><img src="https://img.shields.io/badge/Telebot Framework-v3-lightgrey" alt="Telebot Framework-v3"></a>
|
||||||
<a href="https://github.com/assimon/epusdt/releases/tag/v0.0.1"><img src="https://img.shields.io/badge/version-v0.0.1-green" alt="version v0.0.1"></a>
|
<a href="https://github.com/assimon/epusdt/releases/tag/v0.0.2"><img src="https://img.shields.io/badge/version-v0.0.2-green" alt="version v0.0.2"></a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
@@ -39,16 +39,11 @@ Epusdt
|
|||||||
|
|
||||||
## 教程:
|
## 教程:
|
||||||
- 宝塔运行`epusdt`教程👉🏻[宝塔运行epusdt](wiki/BT_RUN.md)
|
- 宝塔运行`epusdt`教程👉🏻[宝塔运行epusdt](wiki/BT_RUN.md)
|
||||||
- 不好意思我有洁癖,手动运行`epusdt`教程👉🏻[手动运行epusdt](wiki/manual_RUN.md)
|
|
||||||
- 开发者接入`epusdt`文档👉🏻[开发者接入epusdt](wiki/API.md)
|
- 开发者接入`epusdt`文档👉🏻[开发者接入epusdt](wiki/API.md)
|
||||||
- HTML+PHP极速运行`epusdt`教程👉🏻[使用PHPAPI-for-epusdt极速接入epusdt](https://github.com/BlueSkyXN/PHPAPI-for-epusdt)
|
|
||||||
|
|
||||||
## 已适配系统插件
|
## 已适配系统插件
|
||||||
- 独角数卡[插件地址](plugins/dujiaoka)
|
- 独角数卡[插件地址](plugins/dujiaoka)
|
||||||
|
|
||||||
## 🔥推荐服务器
|
|
||||||
- (美国免备案vps,配置2核2G仅需`20.98$`≈`145RMB`一年/支持支付宝付款)[👉🏻点我直达](https://my.racknerd.com/aff.php?aff=2745&pid=681)
|
|
||||||
|
|
||||||
## 加入交流/意见反馈
|
## 加入交流/意见反馈
|
||||||
- `Epusdt`频道[https://t.me/epusdt](https://t.me/epusdt)
|
- `Epusdt`频道[https://t.me/epusdt](https://t.me/epusdt)
|
||||||
- `Epusdt`交流群组[https://t.me/epusdt_group](https://t.me/epusdt_group)
|
- `Epusdt`交流群组[https://t.me/epusdt_group](https://t.me/epusdt_group)
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
# This is an example .goreleaser.yml file with some sensible defaults.
|
# This is an example .goreleaser.yml file with some sensible defaults.
|
||||||
# Make sure to check the documentation at https://goreleaser.com
|
# Make sure to check the documentation at https://goreleaser.com
|
||||||
project_name: epusdt
|
|
||||||
before:
|
before:
|
||||||
hooks:
|
hooks:
|
||||||
# You may remove this if you don't use go modules.
|
# You may remove this if you don't use go modules.
|
||||||
@@ -26,7 +25,7 @@ archives:
|
|||||||
386: i386
|
386: i386
|
||||||
amd64: x86_64
|
amd64: x86_64
|
||||||
id: epusdt
|
id: epusdt
|
||||||
name_template: "{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}"
|
name_template: "{{ .ProjectName }}_v0.0.2_{{ .Os }}_{{ .Arch }}"
|
||||||
format: tar.gz
|
format: tar.gz
|
||||||
files:
|
files:
|
||||||
- .env.example
|
- .env.example
|
||||||
|
|||||||
+3
-7
@@ -6,8 +6,6 @@ require (
|
|||||||
github.com/go-redis/redis/v8 v8.11.5
|
github.com/go-redis/redis/v8 v8.11.5
|
||||||
github.com/go-resty/resty/v2 v2.7.0
|
github.com/go-resty/resty/v2 v2.7.0
|
||||||
github.com/golang-module/carbon/v2 v2.0.1
|
github.com/golang-module/carbon/v2 v2.0.1
|
||||||
github.com/google/btree v1.0.0 // indirect
|
|
||||||
github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 // indirect
|
|
||||||
github.com/google/uuid v1.3.0 // indirect
|
github.com/google/uuid v1.3.0 // indirect
|
||||||
github.com/gookit/color v1.5.0
|
github.com/gookit/color v1.5.0
|
||||||
github.com/gookit/goutil v0.4.6
|
github.com/gookit/goutil v0.4.6
|
||||||
@@ -15,18 +13,16 @@ require (
|
|||||||
github.com/hibiken/asynq v0.23.0
|
github.com/hibiken/asynq v0.23.0
|
||||||
github.com/json-iterator/go v1.1.12
|
github.com/json-iterator/go v1.1.12
|
||||||
github.com/labstack/echo/v4 v4.6.0
|
github.com/labstack/echo/v4 v4.6.0
|
||||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
|
|
||||||
github.com/natefinch/lumberjack v2.0.0+incompatible
|
github.com/natefinch/lumberjack v2.0.0+incompatible
|
||||||
github.com/robfig/cron/v3 v3.0.1
|
github.com/robfig/cron/v3 v3.0.1
|
||||||
github.com/satori/go.uuid v1.2.0
|
github.com/satori/go.uuid v1.2.0
|
||||||
github.com/shopspring/decimal v1.3.1
|
github.com/shopspring/decimal v1.3.1
|
||||||
github.com/spf13/cast v1.5.0 // indirect
|
|
||||||
github.com/spf13/cobra v1.2.1
|
github.com/spf13/cobra v1.2.1
|
||||||
github.com/spf13/viper v1.9.0
|
github.com/spf13/viper v1.9.0
|
||||||
go.uber.org/zap v1.17.0
|
go.uber.org/zap v1.17.0
|
||||||
golang.org/x/sys v0.0.0-20220928140112-f11e5e49a4ec // indirect
|
golang.org/x/sys v0.0.0-20220412211240-33da011f77ad // indirect
|
||||||
golang.org/x/time v0.0.0-20220922220347-f3bd1da661af // indirect
|
golang.org/x/time v0.0.0-20220411224347-583f2d630306 // indirect
|
||||||
google.golang.org/protobuf v1.28.1 // indirect
|
google.golang.org/protobuf v1.28.0 // indirect
|
||||||
gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect
|
gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect
|
||||||
gopkg.in/telebot.v3 v3.0.0
|
gopkg.in/telebot.v3 v3.0.0
|
||||||
gorm.io/driver/mysql v1.1.2
|
gorm.io/driver/mysql v1.1.2
|
||||||
|
|||||||
+6
-15
@@ -71,7 +71,6 @@ github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWH
|
|||||||
github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
|
github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
|
||||||
github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
|
github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
|
||||||
github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
|
github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
|
||||||
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
|
|
||||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
@@ -89,7 +88,6 @@ github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5Kwzbycv
|
|||||||
github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU=
|
github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU=
|
||||||
github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM=
|
github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM=
|
||||||
github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
|
github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
|
||||||
github.com/frankban/quicktest v1.14.3/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps=
|
|
||||||
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
||||||
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
|
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
|
||||||
github.com/fsnotify/fsnotify v1.5.1 h1:mZcQUHVQUQWoPXXtuf9yuEXKudkV2sx1E06UadKWpgI=
|
github.com/fsnotify/fsnotify v1.5.1 h1:mZcQUHVQUQWoPXXtuf9yuEXKudkV2sx1E06UadKWpgI=
|
||||||
@@ -164,8 +162,6 @@ github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
|
|||||||
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ=
|
github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ=
|
||||||
github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
github.com/google/go-cmp v0.5.7 h1:81/ik6ipDQS2aGcBfIN5dHDB36BwrStyeAQquSYCV4o=
|
|
||||||
github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE=
|
|
||||||
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||||
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
|
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
|
||||||
github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
|
github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
|
||||||
@@ -266,11 +262,9 @@ github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
|
|||||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
||||||
github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs=
|
github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs=
|
||||||
github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
|
github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
|
||||||
github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
|
|
||||||
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||||
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
|
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
|
||||||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
|
||||||
github.com/labstack/echo/v4 v4.6.0 h1:vsYEeeYy077cB5yMpgI+ubA7iVRZEtrzHhcvRhd27gA=
|
github.com/labstack/echo/v4 v4.6.0 h1:vsYEeeYy077cB5yMpgI+ubA7iVRZEtrzHhcvRhd27gA=
|
||||||
github.com/labstack/echo/v4 v4.6.0/go.mod h1:RnjgMWNDB9g/HucVWhQYNQP9PvbYf6adqftqryo7s9k=
|
github.com/labstack/echo/v4 v4.6.0/go.mod h1:RnjgMWNDB9g/HucVWhQYNQP9PvbYf6adqftqryo7s9k=
|
||||||
github.com/labstack/gommon v0.3.0 h1:JEeO0bvc78PKdyHxloTKiF8BD5iGrH8T6MSeGvSgob0=
|
github.com/labstack/gommon v0.3.0 h1:JEeO0bvc78PKdyHxloTKiF8BD5iGrH8T6MSeGvSgob0=
|
||||||
@@ -350,7 +344,6 @@ github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs=
|
|||||||
github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro=
|
github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro=
|
||||||
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
|
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
|
||||||
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
||||||
github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
|
|
||||||
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
||||||
github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
|
github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
|
||||||
github.com/sagikazarmark/crypt v0.1.0/go.mod h1:B/mN0msZuINBtQ1zZLEQcegFJJf9vnYIR88KRMEuODE=
|
github.com/sagikazarmark/crypt v0.1.0/go.mod h1:B/mN0msZuINBtQ1zZLEQcegFJJf9vnYIR88KRMEuODE=
|
||||||
@@ -368,8 +361,6 @@ github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z
|
|||||||
github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
|
github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
|
||||||
github.com/spf13/cast v1.4.1 h1:s0hze+J0196ZfEMTs80N7UlFt0BDuQ7Q+JDnHiMWKdA=
|
github.com/spf13/cast v1.4.1 h1:s0hze+J0196ZfEMTs80N7UlFt0BDuQ7Q+JDnHiMWKdA=
|
||||||
github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
|
github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
|
||||||
github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w=
|
|
||||||
github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU=
|
|
||||||
github.com/spf13/cobra v1.2.1 h1:+KmjbUw1hriSNMF55oPrkZcb27aECyrj8V2ytv7kWDw=
|
github.com/spf13/cobra v1.2.1 h1:+KmjbUw1hriSNMF55oPrkZcb27aECyrj8V2ytv7kWDw=
|
||||||
github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk=
|
github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk=
|
||||||
github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk=
|
github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk=
|
||||||
@@ -605,8 +596,8 @@ golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBc
|
|||||||
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.0.0-20220114195835-da31bd327af9 h1:XfKQ4OlFl8okEOr5UvAqFRVj8pY/4yfcXrddB8qAbU0=
|
golang.org/x/sys v0.0.0-20220114195835-da31bd327af9 h1:XfKQ4OlFl8okEOr5UvAqFRVj8pY/4yfcXrddB8qAbU0=
|
||||||
golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.0.0-20220928140112-f11e5e49a4ec h1:BkDtF2Ih9xZ7le9ndzTA7KJow28VbQW3odyk/8drmuI=
|
golang.org/x/sys v0.0.0-20220412211240-33da011f77ad h1:ntjMns5wyP/fN65tdBD4g8J5w8n015+iIIs9rtjXkY0=
|
||||||
golang.org/x/sys v0.0.0-20220928140112-f11e5e49a4ec/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
|
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
|
||||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||||
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
@@ -624,8 +615,8 @@ golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxb
|
|||||||
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
golang.org/x/time v0.0.0-20201208040808-7e3f01d25324 h1:Hir2P/De0WpUhtrKGGjvSb2YxUgyZ7EFOSLIcSSpiwE=
|
golang.org/x/time v0.0.0-20201208040808-7e3f01d25324 h1:Hir2P/De0WpUhtrKGGjvSb2YxUgyZ7EFOSLIcSSpiwE=
|
||||||
golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
golang.org/x/time v0.0.0-20220922220347-f3bd1da661af h1:Yx9k8YCG3dvF87UAn2tu2HQLf2dt/eR1bXxpLMWeH+Y=
|
golang.org/x/time v0.0.0-20220411224347-583f2d630306 h1:+gHMid33q6pen7kv9xvT+JRinntgeXO2AeZVd0AWD3w=
|
||||||
golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
golang.org/x/time v0.0.0-20220411224347-583f2d630306/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
|
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
|
||||||
@@ -815,8 +806,8 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0
|
|||||||
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
|
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
|
||||||
google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ=
|
google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ=
|
||||||
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
|
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
|
||||||
google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w=
|
google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw=
|
||||||
google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
|
google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
|
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
|
||||||
|
|||||||
@@ -21,10 +21,10 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
CnyMinimumPaymentAmount = 0.01 // cny最低支付金额
|
CnyMinimumPaymentAmount = 0.01 // cny最低支付金额
|
||||||
UsdtMinimumPaymentAmount = 0.01 // usdt最低支付金额
|
UsdtMinimumPaymentAmount = 0.001 // usdt最低支付金额
|
||||||
UsdtAmountPerIncrement = 0.01 // usdt每次递增金额
|
UsdtAmountPerIncrement = 0.001 // usdt每次递增金额
|
||||||
IncrementalMaximumNumber = 100 // 最大递增次数
|
IncrementalMaximumNumber = 100 // 最大递增次数
|
||||||
)
|
)
|
||||||
|
|
||||||
var gCreateTransactionLock sync.Mutex
|
var gCreateTransactionLock sync.Mutex
|
||||||
@@ -62,7 +62,7 @@ func CreateTransaction(req *request.CreateTransactionRequest) (*response.CreateT
|
|||||||
if len(walletAddress) <= 0 {
|
if len(walletAddress) <= 0 {
|
||||||
return nil, constant.NotAvailableWalletAddress
|
return nil, constant.NotAvailableWalletAddress
|
||||||
}
|
}
|
||||||
amount := math.MustParsePrecFloat64(decimalUsdt.InexactFloat64(), 2)
|
amount := math.MustParsePrecFloat64(decimalUsdt.InexactFloat64(), 3)
|
||||||
availableToken, availableAmount, err := CalculateAvailableWalletAndAmount(amount, walletAddress)
|
availableToken, availableAmount, err := CalculateAvailableWalletAndAmount(amount, walletAddress)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|||||||
@@ -18,12 +18,12 @@ import (
|
|||||||
"sync"
|
"sync"
|
||||||
)
|
)
|
||||||
|
|
||||||
const UsdtTrc20ApiUri = "https://apilist.tronscanapi.com/api/transfer/trc20"
|
const UsdtTrc20ApiUri = "https://apilist.tronscan.org/api/token_trc20/transfers"
|
||||||
|
|
||||||
type UsdtTrc20Resp struct {
|
type UsdtTrc20Resp struct {
|
||||||
PageSize int `json:"page_size"`
|
Total int `json:"total"`
|
||||||
Code int `json:"code"`
|
RangeTotal int `json:"rangeTotal"`
|
||||||
Data []Data `json:"data"`
|
TokenTransfers []TokenTransfers `json:"token_transfers"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type TokenInfo struct {
|
type TokenInfo struct {
|
||||||
@@ -35,29 +35,26 @@ type TokenInfo struct {
|
|||||||
TokenType string `json:"tokenType"`
|
TokenType string `json:"tokenType"`
|
||||||
TokenLogo string `json:"tokenLogo"`
|
TokenLogo string `json:"tokenLogo"`
|
||||||
TokenLevel string `json:"tokenLevel"`
|
TokenLevel string `json:"tokenLevel"`
|
||||||
IssuerAddr string `json:"issuerAddr"`
|
|
||||||
Vip bool `json:"vip"`
|
Vip bool `json:"vip"`
|
||||||
}
|
}
|
||||||
|
type TokenTransfers struct {
|
||||||
type Data struct {
|
TransactionID string `json:"transaction_id"`
|
||||||
Amount string `json:"amount"`
|
BlockTs int64 `json:"block_ts"`
|
||||||
ApprovalAmount string `json:"approval_amount"`
|
FromAddress string `json:"from_address"`
|
||||||
BlockTimestamp int64 `json:"block_timestamp"`
|
ToAddress string `json:"to_address"`
|
||||||
Block int `json:"block"`
|
Block int `json:"block"`
|
||||||
From string `json:"from"`
|
ContractAddress string `json:"contract_address"`
|
||||||
To string `json:"to"`
|
Quant string `json:"quant"`
|
||||||
Hash string `json:"hash"`
|
ApprovalAmount string `json:"approval_amount"`
|
||||||
Confirmed int `json:"confirmed"`
|
EventType string `json:"event_type"`
|
||||||
ContractType string `json:"contract_type"`
|
ContractType string `json:"contract_type"`
|
||||||
ContracTType int `json:"contractType"`
|
Confirmed bool `json:"confirmed"`
|
||||||
Revert int `json:"revert"`
|
ContractRet string `json:"contractRet"`
|
||||||
ContractRet string `json:"contract_ret"`
|
FinalResult string `json:"finalResult"`
|
||||||
EventType string `json:"event_type"`
|
TokenInfo TokenInfo `json:"tokenInfo"`
|
||||||
IssueAddress string `json:"issue_address"`
|
FromAddressIsContract bool `json:"fromAddressIsContract"`
|
||||||
Decimals int `json:"decimals"`
|
ToAddressIsContract bool `json:"toAddressIsContract"`
|
||||||
TokenName string `json:"token_name"`
|
Revert bool `json:"revert"`
|
||||||
ID string `json:"id"`
|
|
||||||
Direction int `json:"direction"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Trc20CallBack trc20回调
|
// Trc20CallBack trc20回调
|
||||||
@@ -72,13 +69,11 @@ func Trc20CallBack(token string, wg *sync.WaitGroup) {
|
|||||||
startTime := carbon.Now().AddHours(-24).TimestampWithMillisecond()
|
startTime := carbon.Now().AddHours(-24).TimestampWithMillisecond()
|
||||||
endTime := carbon.Now().TimestampWithMillisecond()
|
endTime := carbon.Now().TimestampWithMillisecond()
|
||||||
resp, err := client.R().SetQueryParams(map[string]string{
|
resp, err := client.R().SetQueryParams(map[string]string{
|
||||||
"sort": "-timestamp",
|
"limit": "200",
|
||||||
"limit": "50",
|
|
||||||
"start": "0",
|
"start": "0",
|
||||||
"direction": "2",
|
"direction": "in",
|
||||||
"db_version": "1",
|
"tokens": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",
|
||||||
"trc20Id": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",
|
"relatedAddress": token,
|
||||||
"address": token,
|
|
||||||
"start_timestamp": stdutil.ToString(startTime),
|
"start_timestamp": stdutil.ToString(startTime),
|
||||||
"end_timestamp": stdutil.ToString(endTime),
|
"end_timestamp": stdutil.ToString(endTime),
|
||||||
}).Get(UsdtTrc20ApiUri)
|
}).Get(UsdtTrc20ApiUri)
|
||||||
@@ -93,14 +88,14 @@ func Trc20CallBack(token string, wg *sync.WaitGroup) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
if trc20Resp.PageSize <= 0 {
|
if trc20Resp.Total <= 0 {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
for _, transfer := range trc20Resp.Data {
|
for _, transfer := range trc20Resp.TokenTransfers {
|
||||||
if transfer.To != token || transfer.ContractRet != "SUCCESS" {
|
if transfer.ToAddress != token || transfer.FinalResult != "SUCCESS" {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
decimalQuant, err := decimal.NewFromString(transfer.Amount)
|
decimalQuant, err := decimal.NewFromString(transfer.Quant)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
@@ -119,7 +114,7 @@ func Trc20CallBack(token string, wg *sync.WaitGroup) {
|
|||||||
}
|
}
|
||||||
// 区块的确认时间必须在订单创建时间之后
|
// 区块的确认时间必须在订单创建时间之后
|
||||||
createTime := order.CreatedAt.TimestampWithMillisecond()
|
createTime := order.CreatedAt.TimestampWithMillisecond()
|
||||||
if transfer.BlockTimestamp < createTime {
|
if transfer.BlockTs < createTime {
|
||||||
panic("Orders cannot actually be matched")
|
panic("Orders cannot actually be matched")
|
||||||
}
|
}
|
||||||
// 到这一步就完全算是支付成功了
|
// 到这一步就完全算是支付成功了
|
||||||
@@ -127,7 +122,7 @@ func Trc20CallBack(token string, wg *sync.WaitGroup) {
|
|||||||
Token: token,
|
Token: token,
|
||||||
TradeId: tradeId,
|
TradeId: tradeId,
|
||||||
Amount: amount,
|
Amount: amount,
|
||||||
BlockTransactionId: transfer.Hash,
|
BlockTransactionId: transfer.TransactionID,
|
||||||
}
|
}
|
||||||
err = OrderProcessing(req)
|
err = OrderProcessing(req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -181,7 +181,6 @@
|
|||||||
let second = Math.round(ms / 1000);
|
let second = Math.round(ms / 1000);
|
||||||
let minute = Math.floor(second / 60);
|
let minute = Math.floor(second / 60);
|
||||||
let hour = Math.floor(minute / 60);
|
let hour = Math.floor(minute / 60);
|
||||||
if(minute > 60) minute %= 60
|
|
||||||
if (ms <= 0) {
|
if (ms <= 0) {
|
||||||
layer.alert("支付超时,请重新发起支付!", {icon: 5});
|
layer.alert("支付超时,请重新发起支付!", {icon: 5});
|
||||||
return;
|
return;
|
||||||
@@ -241,4 +240,4 @@
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
window.onload = checkOrderStatus();
|
window.onload = checkOrderStatus();
|
||||||
</script>
|
</script>
|
||||||
+1
-1
@@ -7,6 +7,6 @@ func Start() {
|
|||||||
// 汇率监听
|
// 汇率监听
|
||||||
c.AddJob("@every 60s", UsdtRateJob{})
|
c.AddJob("@every 60s", UsdtRateJob{})
|
||||||
// trc20钱包监听
|
// trc20钱包监听
|
||||||
c.AddJob("@every 5s", ListenTrc20Job{})
|
c.AddJob("@every 10s", ListenTrc20Job{})
|
||||||
c.Start()
|
c.Start()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,210 +0,0 @@
|
|||||||
## 写在前面
|
|
||||||
|
|
||||||
- 此教程专为有洁癖的宝宝们准备。不使用任何一键安装脚本。面板党可以退散了!!
|
|
||||||
- 本人测试环境是 Debian 11 其他的没测试。
|
|
||||||
## 1.下载源代码
|
|
||||||
```bash
|
|
||||||
cd /var/www/
|
|
||||||
mkdir epusdt
|
|
||||||
chmod 777 -R /var/www/epusdt
|
|
||||||
cd epusdt
|
|
||||||
wget https://github.com/assimon/epusdt/releases/download/v0.0.2/epusdt_v0.0.2_Linux_x86_64.tar.gz
|
|
||||||
tar -xzf epusdt_v0.0.2_Linux_x86_64.tar.gz
|
|
||||||
rm epusdt_v0.0.2_Linux_x86_64.tar.gz
|
|
||||||
```
|
|
||||||
## 2.导入Sql
|
|
||||||
- 创建sql文件
|
|
||||||
```bash
|
|
||||||
nano epusdt.sql
|
|
||||||
```
|
|
||||||
然后复制下面的
|
|
||||||
```sql
|
|
||||||
-- auto-generated definition
|
|
||||||
use epusdt;
|
|
||||||
create table orders
|
|
||||||
(
|
|
||||||
id int auto_increment
|
|
||||||
primary key,
|
|
||||||
trade_id varchar(32) not null comment 'epusdt订单号',
|
|
||||||
order_id varchar(32) not null comment '客户交易id',
|
|
||||||
block_transaction_id varchar(128) null comment '区块唯一编号',
|
|
||||||
actual_amount decimal(19, 4) not null comment '订单实际需要支付的金额,保留4位小数',
|
|
||||||
amount decimal(19, 4) not null comment '订单金额,保留4位小数',
|
|
||||||
token varchar(50) not null comment '所属钱包地址',
|
|
||||||
status int default 1 not null comment '1:等待支付,2:支付成功,3:已过期',
|
|
||||||
notify_url varchar(128) not null comment '异步回调地址',
|
|
||||||
redirect_url varchar(128) null comment '同步回调地址',
|
|
||||||
callback_num int default 0 null comment '回调次数',
|
|
||||||
callback_confirm int default 2 null comment '回调是否已确认? 1是 2否',
|
|
||||||
created_at timestamp null,
|
|
||||||
updated_at timestamp null,
|
|
||||||
deleted_at timestamp null,
|
|
||||||
constraint orders_order_id_uindex
|
|
||||||
unique (order_id),
|
|
||||||
constraint orders_trade_id_uindex
|
|
||||||
unique (trade_id)
|
|
||||||
);
|
|
||||||
|
|
||||||
create index orders_block_transaction_id_index
|
|
||||||
on orders (block_transaction_id);
|
|
||||||
|
|
||||||
-- auto-generated definition
|
|
||||||
create table wallet_address
|
|
||||||
(
|
|
||||||
id int auto_increment
|
|
||||||
primary key,
|
|
||||||
token varchar(50) not null comment '钱包token',
|
|
||||||
status int default 1 not null comment '1:启用 2:禁用',
|
|
||||||
created_at timestamp null,
|
|
||||||
updated_at timestamp null,
|
|
||||||
deleted_at timestamp null
|
|
||||||
)
|
|
||||||
comment '钱包表';
|
|
||||||
|
|
||||||
create index wallet_address_token_index
|
|
||||||
on wallet_address (token);
|
|
||||||
```
|
|
||||||
`ctrl+x` 退出,按 `Y`保存 再按回车就好了
|
|
||||||
- 创建数据库
|
|
||||||
```bash
|
|
||||||
mysql
|
|
||||||
```
|
|
||||||
接下来输入命令
|
|
||||||
```sql
|
|
||||||
CREATE DATABASE [这里替换为数据库名] ;
|
|
||||||
GRANT ALL ON [这里替换为数据库名].* TO '[这里替换为用户名]'@'localhost' IDENTIFIED BY '[这里替换为密码]' WITH GRANT OPTION;
|
|
||||||
FLUSH PRIVILEGES;
|
|
||||||
EXIT
|
|
||||||
```
|
|
||||||
- 导入sql文件
|
|
||||||
```bash
|
|
||||||
mysql -u[用户名] -p[密码] < epusdt.sql
|
|
||||||
```
|
|
||||||
## 3.配置反向代理
|
|
||||||
```bash
|
|
||||||
nano /etc/nginx/sites-enabled/epusdt
|
|
||||||
```
|
|
||||||
你可以参考以下我的配置文件,注意更改域名。
|
|
||||||
```bash
|
|
||||||
server {
|
|
||||||
listen 80;
|
|
||||||
server_name domain.com;
|
|
||||||
return 301 https://domain.com$request_uri;
|
|
||||||
}
|
|
||||||
|
|
||||||
server {
|
|
||||||
listen 443 ssl http2;
|
|
||||||
server_name domain.com;
|
|
||||||
ssl_certificate /etc/nginx/sslcert/cert.crt;
|
|
||||||
ssl_certificate_key /etc/nginx/sslcert/key.key;
|
|
||||||
ssl_prefer_server_ciphers on;
|
|
||||||
|
|
||||||
location / {
|
|
||||||
proxy_pass http://127.0.0.1:8000;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
```
|
|
||||||
## 4.赋予Epusdt执行权限
|
|
||||||
`linux`服务器需要赋予`Epust`执行权限方可启动。
|
|
||||||
执行命令```chmod +x epusdt```赋予权限
|
|
||||||
## 5、配置Epusdt
|
|
||||||
执行命令
|
|
||||||
```bash
|
|
||||||
mv .env.example .env
|
|
||||||
nano .env
|
|
||||||
```
|
|
||||||
|
|
||||||
```dotenv
|
|
||||||
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=
|
|
||||||
```
|
|
||||||
⚠️注意:配置文件里面不认识的不要修改,留空即可,不会改又要瞎改,除非你对项目源代码很熟悉很有信心😁
|
|
||||||
## 6、配置supervisor
|
|
||||||
为了保证`Epusdt`常驻后台运行,我们需要配置`supervisor`来实现进程监听
|
|
||||||
```bash
|
|
||||||
nano /etc/supervisor/conf.d/epusdt.conf
|
|
||||||
```
|
|
||||||
你可以参考以下我的配置文件,注意更改路径。
|
|
||||||
```conf
|
|
||||||
[program:epusdt]
|
|
||||||
process_name=epusdt
|
|
||||||
directory=/var/www/epusdt
|
|
||||||
command=/var/www/epusdt/epusdt http start
|
|
||||||
autostart=true
|
|
||||||
autorestart=true
|
|
||||||
user=www-data
|
|
||||||
numprocs=1
|
|
||||||
redirect_stderr=true
|
|
||||||
stdout_logfile=/var/log/supervisor/epusdt.log
|
|
||||||
```
|
|
||||||
接下来输入命令
|
|
||||||
```bash
|
|
||||||
supervisorctl reread
|
|
||||||
supervisorctl update
|
|
||||||
supervisorctl start epusdt
|
|
||||||
supervisorctl tail epusdt
|
|
||||||
```
|
|
||||||
出现下图,即为配置成功
|
|
||||||
```bash
|
|
||||||
_____ _ _
|
|
||||||
| ____|_ __ _ _ ___ __| | |_
|
|
||||||
| _| | '_ \| | | / __|/ _` | __|
|
|
||||||
| |___| |_) | |_| \__ \ (_| | |_
|
|
||||||
|_____| .__/ \__,_|___/\__,_|\__|
|
|
||||||
|_|
|
|
||||||
Epusdt version(0.0.2) Powered by assimon https://github.com/assimon/epusdt
|
|
||||||
⇨ http server started on [::]:8000
|
|
||||||
```
|
|
||||||
## 其他注意事项
|
|
||||||
- 1.所有`.env`配置文件有了修改后都需要重启supervisor进程 `supervisorctl restart epusdt`
|
|
||||||
- 2.教程所示的目录均为参考,请勿1:1照抄,根据自己实际情况来
|
|
||||||
Reference in New Issue
Block a user