2025-03-07 16:57:28 +08:00

54 lines
1.3 KiB
Go

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
}