package app import ( "encoding/json" "errors" "fmt" ) // PayOrderRequest 获取订单支付请求数据 type PayOrderRequest struct { OrderId string `json:"orderId" label:"订单编号" validate:"required"` // 订单id } // PayOrderDataResponse 获取订单支付返回数据-data type PayOrderDataResponse struct { AppId string `json:"appid"` // 公众号id Total int `json:"total"` // 订单总金额(精确到分) Description string `json:"description"` // 订单描述 OpenId string `json:"openid"` // 下单用户 OutTradeNo string `json:"out_trade_no"` // 商户订单 Attach string `json:"attach"` // 附加信息 NotifyUrl string `json:"notify_url"` // 异步接收微信支付结果通知的回调地址 GoodName string `json:"goodName"` // 商品名称 } // VerifySignature 验证签名 func VerifySignature(req PayOrderRequest, requestSign string) error { // 将 JSON 数据编码为字节数组 jsonData, err := json.Marshal(req) if err != nil { return err } maps := make(map[string]interface{}) err = json.Unmarshal(jsonData, &maps) if err != nil { return err } // 生成签名 sign, err := GenSignature(maps) if err != nil { return err } fmt.Println(sign) // 对比签名 if sign != requestSign { return errors.New("签名错误") } return nil }