🐛 修复IP问题

This commit is contained in:
sunxiaolong
2024-06-22 00:22:23 +08:00
parent c76eb7971b
commit 4cfd04ec34
11 changed files with 15 additions and 77 deletions

View File

@@ -16,7 +16,7 @@ type BaseGateway struct {
func (c *BaseGateway) PayPrepare() *response.PayBaseResp {
params := make(map[string]string)
// 获取客户端的ip
clientIP := c.Ctx.Input.IP()
clientIP := strings.TrimSpace(c.GetString("ip"))
params["exValue"] = strings.TrimSpace(c.GetString("exValue"))
params["orderNo"] = strings.TrimSpace(c.GetString("orderNo"))
params["orderPeriod"] = strings.TrimSpace(c.GetString("orderPeriod"))
@@ -26,14 +26,12 @@ func (c *BaseGateway) PayPrepare() *response.PayBaseResp {
params["payKey"] = strings.TrimSpace(c.GetString("payKey"))
params["timestamp"] = strings.TrimSpace(c.GetString("timestamp"))
params["sign"] = strings.TrimSpace(c.GetString("sign"))
params["ip"] = strings.TrimSpace(c.GetString("ip"))
p := service.GetMerchantInfo(params)
p.ClientIP = clientIP
p = service.JudgeParams(p)
if p.Code != -1 {
p.Code = 200
}
return p
}

View File

@@ -1,14 +0,0 @@
package gateway
import (
"github.com/beego/beego/v2/server/web"
)
type ErrorGatewayController struct {
web.Controller
}
func (c *ErrorGatewayController) ErrorParams() {
web.ReadFromRequest(&c.Controller)
c.TplName = "err/params.html"
}

View File

@@ -43,7 +43,6 @@ func (c *PayForGateway) PayFor() {
} else {
payForResponse = pay_for.AutoPayFor(params, config.SELF_API)
}
c.Data["json"] = payForResponse
_ = c.ServeJSON()
}

View File

@@ -58,7 +58,6 @@ func (c *ScanController) Scan() {
c.SolveFailJSON(p)
return
}
mt := merchant_deploy.GetMerchantDeployByUidAndRoadUid(p.MerchantInfo.MerchantUid, p.RoadInfo.RoadUid)
if mt.Id == 0 {
p.Msg = "当前用户没有开通该通道"
@@ -72,7 +71,6 @@ func (c *ScanController) Scan() {
c.SolveFailJSON(p)
return
}
pm, err := mt.GetShowMMValue(orderPrice)
if err != nil {
p.Code = -1
@@ -80,7 +78,6 @@ func (c *ScanController) Scan() {
c.SolveFailJSON(p)
return
}
p.Params["exValue"], err = service.CompleteExValue(p.Params["exValue"], strconv.FormatFloat(pm.ShowLabel, 'f', 0, 64))
if err != nil {
p.Code = -1
@@ -88,7 +85,6 @@ func (c *ScanController) Scan() {
c.SolveFailJSON(p)
return
}
// 生成订单记录
orderInfo, _, err := service.GenerateRecord(p)
if err != nil {
@@ -101,7 +97,6 @@ func (c *ScanController) Scan() {
c.SolveFailJSON(p)
return
}
if mt.AutoSettle == config.NO {
params := make(map[string]string)
params["statusCode"] = "00"

3
go.mod
View File

@@ -9,10 +9,7 @@ require (
github.com/bytedance/sonic v1.11.7
github.com/go-sql-driver/mysql v1.8.1
github.com/go-stomp/stomp/v3 v3.1.0
github.com/klauspost/cpuid/v2 v2.2.7 // indirect
github.com/rs/xid v1.5.0
github.com/shopspring/decimal v1.4.0
github.com/widuu/gojson v0.0.0-20170212122013-7da9d2cd949b
golang.org/x/arch v0.8.0 // indirect
golang.org/x/net v0.25.0 // indirect
)

19
go.sum
View File

@@ -1750,9 +1750,8 @@ github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHU
github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
github.com/klauspost/cpuid/v2 v2.2.3/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY=
github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg=
github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM=
github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M=
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
@@ -2046,9 +2045,8 @@ go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9i
go.uber.org/multierr v1.7.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak=
go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo=
go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI=
golang.org/x/arch v0.0.0-20210923205945-b76863e36670 h1:18EFjUmQOcUvxNYSkA6jO9VAiXCnxFY6NyDX0bHDmkU=
golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
golang.org/x/arch v0.8.0 h1:3wRIsP3pM4yUptoR96otTUOXI367OS0+c9eeRi9doIc=
golang.org/x/arch v0.8.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys=
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
@@ -2077,9 +2075,8 @@ golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq
golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg=
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30=
golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M=
golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI=
golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
@@ -2223,9 +2220,8 @@ golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ=
golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U=
golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY=
golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4=
golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac=
golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -2404,9 +2400,8 @@ golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o=
golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y=
golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
@@ -2427,7 +2422,6 @@ golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0=
golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY=
golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk=
golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -2448,9 +2442,8 @@ golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk=
golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=

View File

@@ -9,7 +9,6 @@ import (
func init() {
// 网关处理函数
web.Router("/gateway/scan", &gateway.ScanController{}, "*:Scan")
web.Router("/err/params", &gateway.ErrorGatewayController{}, "*:ErrorParams")
web.Router("/gateway/getAllowedMM", &gateway.ScanController{}, "*:GetAllowedMM")
@@ -22,9 +21,6 @@ func init() {
web.Router("/gateway/supplier/payfor/query", &gateway.PayForGateway{}, "*:QuerySupplierPayForResult")
web.Router("/solve/payfor/result", &gateway.PayForGateway{}, "*:SolvePayForResult")
// 接收回调
// web.Router("/daili/notify", &third_party.DaiLiImpl{}, "*:PayNotify")
// web.Router("/mfcard/notify", &third_party.MFCardImpl{}, "*:PayNotify")
// web.Router("/mfcard/test", &third_party.MFCardImpl{}, "*:Test")
web.Router("/gateway/supplier/order/query", &gateway.OrderController{}, "*:OrderQuery")
web.Router("/gateway/update/order", &gateway.OrderController{}, "*:OrderUpdate")

View File

@@ -137,6 +137,7 @@ func GenerateOrderInfo(c *response.PayBaseResp) order.OrderInfo {
Freeze: config.NO,
Refund: config.NO,
Unfreeze: config.NO,
Ip: c.ClientIP,
PayProductCode: c.RoadInfo.ProductUid,
Status: config.WAIT,
NotifyUrl: c.Params["notifyUrl"],

View File

@@ -35,32 +35,25 @@ func (c *MFCardV2Impl) SendCard(jsonStr string, cardInfo supplier.CardInfo, atta
appKey := gojson.Json(jsonStr).Get("appKey").Tostring()
appSecret := gojson.Json(jsonStr).Get("appSecret").Tostring()
goodsSku := gojson.Json(jsonStr).Get("goodsSku").Tostring()
if appKey == "" || appSecret == "" {
return false, ""
}
cfg := config.Config{}
params := make(map[string]string)
params["app_key"] = appKey
params["goods_sku"] = goodsSku // 卡片类型
params["face_val"] = cardInfo.FaceType // 提交面值
params["callback_url"] = cfg.GetMfNotifyUrl() // 回调地址
params["attach"] = attach // 附带参数
if cardInfo.RecoveryType == "8" {
params["card_no"] = cardInfo.CardNo // 卡号
}
var err error
params["card_pwd"], err = c.kMEncrypt(cardInfo.Data, appSecret) // 卡密
if err != nil {
return false, "加密失败"
}
params["timestamp"] = strconv.FormatInt(time.Now().Unix(), 10)
sign := utils.GetMD5SignMF(params, appSecret)
params["sign"] = sign
@@ -70,7 +63,6 @@ func (c *MFCardV2Impl) SendCard(jsonStr string, cardInfo supplier.CardInfo, atta
if err != nil {
return false, ""
}
req := httplib.Post(url)
marshal, err := json.Marshal(params)
if err != nil {

View File

@@ -7,40 +7,22 @@ import (
"gateway/utils"
)
func TestMFCardV2Impl_Scan(t *testing.T) {
params := map[string]string{}
params["order_id"] = "23111611000344"
params["third_order_id"] = "" // 时间戳
params["card_no"] = "2326992090248120052" // 卡号
params["card_pwd"] = "123456" // 时间戳
params["face_val"] = "100" // 时间戳
params["amount"] = "0" // 时间戳
params["discount"] = "970" // 时间戳
params["remark"] = "卡密错误卡密处理失败" // 备注
params["attach"] = "6666clased65n2ns73c84ho0" // 附加备注
params["timestamp"] = "1700122001" // 时间戳
params["status"] = "8" // 状态
paySecret := "8dc29e5993e66937"
tmpSign := utils.GetMD5SignMF(params, paySecret)
fmt.Println(tmpSign)
} // 对参数进行验签
//"attach":"6666clcqg5u5n2ns7394hm3g","callback_url":"http://121.37.253.228:12309/mfcard/notifyV2","card_no":"123456","card_pwd":"7Bnu42gE1aUi/eDzruO7Rw==","face_val":"100","goods_sku":"SK000116","sign":"c94152fc05772c4510b3f097f9d70519","timestamp":"1700374551"}
func TestMFCardV3Impl_Scan(t *testing.T) {
params := map[string]string{}
params["goods_sku"] = "SK000116"
params["card_no"] = "123456" // 卡号
params["card_pwd"] = "7Bnu42gE1aUi/eDzruO7Rw==" // 时间戳
params["card_no"] = "2326992090143908695" // 卡号
params["card_pwd"] = "Shyk7ZQNLPB39DH3FvX34w==" // 时间戳
params["face_val"] = "100" // 时间戳
params["attach"] = "6666clcqg5u5n2ns7394hm3g" // 附加备注
params["timestamp"] = "1700374551" // 时间戳
params["timestamp"] = "1718982454" // 时间戳
params["app_key"] = "972381004" // 状态
params["callback_url"] = "http://121.37.253.228:12309/mfcard/notifyV2" // 状态
paySecret := "8dc29e5993e66937"
tmpSign := utils.GetMD5SignMF(params, paySecret)
fmt.Println(tmpSign)
m := MFCardV2Impl{}
s, _ := m.kMEncrypt("958499", "8dc29e5993e66937")
fmt.Println(tmpSign, "--------------", s)
}

View File

@@ -59,7 +59,6 @@ func Md5MFVerify(params map[string]string, paySecret string) bool {
}
delete(params, "sign")
tmpSign := GetMD5SignMF(params, paySecret)
if tmpSign != sign {
return false
} else {