update router for support epay GET and POST

This commit is contained in:
line-6000
2026-04-14 18:43:20 +08:00
parent 5168beda00
commit 786c5e8175
+31 -17
View File
@@ -75,25 +75,20 @@ func RegisterRoute(e *echo.Echo) {
// epay v1 routes
epayV1 := paymentRoute.Group("/epay/v1")
epayV1.GET("/order/create-transaction/submit.php", func(ctx echo.Context) error {
money := ctx.QueryParam("money")
name := ctx.QueryParam("name")
notifyURL := ctx.QueryParam("notify_url")
outTradeNo := ctx.QueryParam("out_trade_no")
returnURL := ctx.QueryParam("return_url")
signstr := ctx.QueryParam("sign")
// signType := ctx.QueryParam("sign_type")
m := map[string]interface{}{
"money": money,
"name": name,
"notify_url": notifyURL,
"out_trade_no": outTradeNo,
"pid": config.GetEpayPid(), // 注意:验签时需要包含 pid 参数
"return_url": returnURL,
epayV1.Match([]string{http.MethodPost, http.MethodGet}, "/order/create-transaction/submit.php", func(ctx echo.Context) error {
params := make(map[string]interface{})
for k, v := range ctx.QueryParams() {
params[k] = v[0]
}
checkSignature, err := sign.Get(m, config.GetApiAuthToken())
signstr := params["sign"].(string)
delete(params, "sign")
delete(params, "sign_type")
// we need to add pid to params for signature verification
params["pid"] = config.GetEpayPid()
checkSignature, err := sign.Get(params, config.GetApiAuthToken())
if err != nil {
return constant.SignatureErr
}
@@ -101,6 +96,25 @@ func RegisterRoute(e *echo.Echo) {
return constant.SignatureErr
}
// safely get string value from map
getString := func(m map[string]interface{}, key string) string {
v, ok := m[key]
if !ok {
return ""
}
s, ok := v.(string)
if !ok {
return ""
}
return s
}
money := getString(params, "money")
name := getString(params, "name")
notifyURL := getString(params, "notify_url")
outTradeNo := getString(params, "out_trade_no")
returnURL := getString(params, "return_url")
amountFloat, err := strconv.ParseFloat(money, 64)
if err != nil {
return comm.Ctrl.FailJson(ctx, fmt.Errorf("invalid money value: %s", money))