pay: submit.php 直出收银台页(new-api 易支付对接)

- submit.php 验签建单后不再 302,直接渲染自包含收银台 HTML,
  支付宝二维码由服务端 skip2/go-qrcode 生成 PNG data URL 内嵌
- 新增公开轮询端点 /cashier-status(页面经 /api 前缀访问),
  与 PaySvc.CashierStatus 共用 cashierStatusReply
- Cashier.vue 收银台页同步改版:取景框二维码、倒计时进度条,
  去掉跳上游收银台的外链

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
2026-11-02 23:20:11 +08:00
co-authored by Devin
parent 5a884cab97
commit 2f3bd7fc7b
7 changed files with 286 additions and 31 deletions
+6 -8
View File
@@ -1,4 +1,4 @@
// pay_routes.go 易支付兼容协议端点:/submit.php(跳收银台)、/mapi.php(JSON下单)、/api.php(查单)。
// pay_routes.go 易支付兼容协议端点:/submit.php(验签建单+直出收银台页)、/mapi.php(JSON下单)、/api.php(查单)。
package service
import (
@@ -12,20 +12,18 @@ import (
"github.com/cyi-cc/cyi-box/backend/internal/store"
)
// paySubmitHandler GET/POST /submit.php:验签建单后 302 到收银台。
// paySubmitHandler GET/POST /submit.php:验签建单后直接渲染收银台页(无跳转)。
func PaySubmitHandler(st *store.Store, up *payx.Client) fun.RouteHandler {
return func(c *fun.RouteCtx) error {
order, err := epayCreateOrder(c, st, up)
if err != nil {
return epayFail(c, err)
}
// 当码支付:优先跳二维码支付链接(qr.alipay.com),退化到本地收银台
target := order.Qrcode
if target == "" {
target = "/cashier/" + order.TradeNo
o, err := st.Q().GetPayOrderByTradeNo(context.Background(), order.TradeNo)
if err != nil {
return epayFail(c, err)
}
c.RequestCtx.Redirect(target, 302)
return nil
return renderCashier(c, o)
}
}