update router for support epay GET and POST
This commit is contained in:
+31
-17
@@ -75,25 +75,20 @@ func RegisterRoute(e *echo.Echo) {
|
|||||||
|
|
||||||
// epay v1 routes
|
// epay v1 routes
|
||||||
epayV1 := paymentRoute.Group("/epay/v1")
|
epayV1 := paymentRoute.Group("/epay/v1")
|
||||||
epayV1.GET("/order/create-transaction/submit.php", func(ctx echo.Context) error {
|
epayV1.Match([]string{http.MethodPost, http.MethodGet}, "/order/create-transaction/submit.php", func(ctx echo.Context) error {
|
||||||
money := ctx.QueryParam("money")
|
params := make(map[string]interface{})
|
||||||
name := ctx.QueryParam("name")
|
for k, v := range ctx.QueryParams() {
|
||||||
notifyURL := ctx.QueryParam("notify_url")
|
params[k] = v[0]
|
||||||
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,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
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 {
|
if err != nil {
|
||||||
return constant.SignatureErr
|
return constant.SignatureErr
|
||||||
}
|
}
|
||||||
@@ -101,6 +96,25 @@ func RegisterRoute(e *echo.Echo) {
|
|||||||
return constant.SignatureErr
|
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)
|
amountFloat, err := strconv.ParseFloat(money, 64)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return comm.Ctrl.FailJson(ctx, fmt.Errorf("invalid money value: %s", money))
|
return comm.Ctrl.FailJson(ctx, fmt.Errorf("invalid money value: %s", money))
|
||||||
|
|||||||
Reference in New Issue
Block a user