marketing-plugin/alipay/client.go

75 lines
2.0 KiB
Go

package alipay
import (
"fmt"
"gitea.cdlsxd.cn/zhouyonggao/marketing-plugin/alipay/vo"
"github.com/go-playground/validator/v10"
)
const BaseUri = "https://openapi.alipay.com/gateway.do"
const (
Version = "1.0"
Format = "json"
SignType = "RSA2"
Charset = "UTF-8"
)
type Client struct {
AppId string // 应用ID
Prk string // 私钥
PukPath string // 验签公钥
MchCertPath string // 商户证书路径
RootCertPath string // 根证书路径
NotifyUrl string // 回调地址
}
type Req interface {
Validate() error
}
var _ Req = (*Param)(nil)
type Param struct {
AlipayRootCertSn string `json:"alipay_root_cert_sn"`
AppCertSn string `json:"app_cert_sn"`
AppId string `json:"app_id" validate:"required"`
Method string `json:"method" validate:"required"`
Format string `json:"format" validate:"required"`
Charset string `json:"charset" validate:"required"`
SignType string `json:"sign_type" validate:"required"`
Timestamp string `json:"timestamp" validate:"required"`
Version string `json:"version" validate:"required"`
BizContent string `json:"biz_content"`
Sign string `json:"sign"`
}
type ErrorResponse struct {
Code vo.Code `json:"code"`
Msg string `json:"msg"`
SubCode string `json:"sub_code"`
SubMsg string `json:"sub_msg"`
}
type Notify struct {
Charset string `json:"charset"`
UtcTimestamp string `json:"utc_timestamp"`
AppId string `json:"app_id"`
Version string `json:"version"`
SignType string `json:"sign_type"`
NotifyId string `json:"notify_id"`
MsgMethod string `json:"msg_method"`
Sign string `json:"sign"`
BizContent string `json:"biz_content"`
}
func (req *Param) Validate() error {
err := validator.New().Struct(req)
if err != nil {
for _, err = range err.(validator.ValidationErrors) {
return fmt.Errorf("参数有误:" + err.Error())
}
}
return nil
}