package order

import (
	"encoding/hex"
	"encoding/json"
	"github.com/beego/beego/v2/server/web"
	"merchant/utils"
)

type Params struct {
	PayKey        string  `json:"payKey"` // 支付明文秘钥
	OrderNo       string  `json:"orderNo"`
	GeneratedTime int64   `json:"generatedTime"` // 过期时间
	NotifyUrl     string  `json:"notifyUrl"`     // 回调地址
	Duration      int     `json:"duration"`      // 存续时间（小时）
	ShowMMValue   float64 `json:"showMMValue"`   // 实际面额
	ProductCode   string  `json:"productCode"`   // 产品编码
}

func (p *Params) Encrypt() string {
	prepareData := p.String()
	if prepareData == "" {
		return prepareData
	}

	//	加密密码数据
	key, err := web.AppConfig.String("secret::key")
	if err != nil {
		return ""
	}

	iv, err := web.AppConfig.String("secret::iv")
	if err != nil {
		return ""
	}

	result, _ := utils.AesCBCEncrypt([]byte(prepareData), []byte(key), []byte(iv))
	return hex.EncodeToString(result)
}

func (p *Params) String() string {
	r, err := json.Marshal(p)
	if err != nil {
		return ""
	}
	return string(r)
}
