feat: 实现站内USDT收银台支付流程

- 后端: payment.go 支付处理(创建订单/回调通知/状态查询/签名算法)
- 后端: 新增公开支付通道API(PublicList,不暴露config)
- 前端: Checkout.vue 收银台页面(倒计时/二维码/支付轮询)
- 前端: Cart.vue 对接动态支付通道,选择bepusdt跳转收银台
- 前端: API添加paymentChannelApi和orderApi支付方法
- 路由: 注册checkout路由和支付相关API
This commit is contained in:
2026-05-26 16:43:31 +08:00
parent 675b365b8b
commit 09f1ee4601
9 changed files with 1002 additions and 19 deletions
@@ -16,6 +16,40 @@ func NewPaymentChannelHandler() *PaymentChannelHandler {
return &PaymentChannelHandler{}
}
func (h *PaymentChannelHandler) PublicList(c *gin.Context) {
var channels []models.PaymentChannel
utils.DB.Where("is_enabled = ?", true).Order("sort_order ASC, id ASC").Find(&channels)
type publicChannel struct {
ID uint `json:"id"`
Name string `json:"name"`
Code string `json:"code"`
Type string `json:"type"`
Icon string `json:"icon"`
FeeRate float64 `json:"fee_rate"`
MinAmount float64 `json:"min_amount"`
MaxAmount float64 `json:"max_amount"`
SortOrder int `json:"sort_order"`
}
var result []publicChannel
for _, ch := range channels {
result = append(result, publicChannel{
ID: ch.ID,
Name: ch.Name,
Code: ch.Code,
Type: ch.Type,
Icon: ch.Icon,
FeeRate: ch.FeeRate,
MinAmount: ch.MinAmount,
MaxAmount: ch.MaxAmount,
SortOrder: ch.SortOrder,
})
}
c.JSON(http.StatusOK, gin.H{"data": result})
}
func (h *PaymentChannelHandler) List(c *gin.Context) {
var channels []models.PaymentChannel
utils.DB.Order("sort_order ASC, id ASC").Find(&channels)