package backend import ( "PaymentCenter/app/constants/common" "PaymentCenter/app/http/entities" "PaymentCenter/app/models/paychannelmodel" "PaymentCenter/app/utils" "encoding/json" "github.com/pkg/errors" ) type PayChannelResponse struct { Id int64 `json:"id"` PayName string `json:"pay_name"` MerchantId int64 `json:"merchant_id"` ChannelType int `json:"channel_type"` AppId string `json:"app_id"` ExpireTime string `json:"expire_time"` CreateTime string `json:"create_time"` AliPayChannel *AliPayChannel `json:"ali_pay_channel,omitempty"` WechatPayChannel *WechatPayChannel `json:"wechat_pay_channel,omitempty"` } func (p *PayChannelResponse) ResponseFromDb(db paychannelmodel.PayChannel) { p.Id = db.Id p.PayName = db.PayName p.MerchantId = db.MerchantId p.ChannelType = db.ChannelType p.AppId = db.AppId if db.ExpireTime.IsZero() { p.ExpireTime = "" } else { p.ExpireTime = db.ExpireTime.Format("2006-01-02 15:04:05") } if db.CreateTime.IsZero() { p.CreateTime = "" } else { p.CreateTime = db.CreateTime.Format("2006-01-02 15:04:05") } switch db.ChannelType { case common.PAY_CHANNEL_WECHAT_H5, common.PAY_CHANNEL_WECHAT_JSAPI, common.PAY_CHANNEL_WECHAT_NATIVE, common.PAY_CHANNEL_WECHAT_APP, common.PAY_CHANNEL_WECHAT_MINI: _ = json.Unmarshal([]byte(db.ExtJson), &p.WechatPayChannel) case common.PAY_CHANNEL_ALIPAY_JSAPI, common.PAY_CHANNEL_ALIPAY_WEB, common.PAY_CHANNEL_ALIPAY_MINI: _ = json.Unmarshal([]byte(db.ExtJson), &p.AliPayChannel) } } type PayChannelCreateRequest struct { PayName string `json:"pay_name" validate:"required" label:"支付渠道名称"` MerchantId int64 `json:"merchant_id" validate:"required" label:"商户ID"` ChannelType int `json:"channel_type" validate:"required" label:"支付渠道"` //支付渠道枚举,1微信JSAPI,2微信H5,3微信app,4微信Native,5微信小程序,6支付宝网页&移动应用,7支付宝小程序,8支付宝JSAPI AppId string `json:"app_id" validate:"required" label:"应用appId"` ExpireTime string `json:"expire_time"` AliPayChannel AliPayChannel `json:"ali_pay_channel,omitempty"` WechatPayChannel WechatPayChannel `json:"wechat_pay_channel,omitempty"` } type WechatPayChannel struct { MchId string `json:"mch_id"` // 商户ID 或者服务商模式的 sp_mchid SerialNo string `json:"serial_no"` // 商户证书的证书序列号 ApiV3Key string `json:"api_v_3_key"` // apiV3Key,商户平台获取 PrivateKey string `json:"private_key"` // 私钥 apiclient_key.pem 读取后的内容 } type AliPayChannel struct { PrivateKey string `json:"private_key"` // 应用私钥 AppPublicCert string `json:"app_public_cert"` // 应用公钥 AlipayRootCert string `json:"alipay_root_cert"` // 支付宝根证书 AlipayPublicCert string `json:"alipay_public_cert"` // 支付宝公钥 } func (p *PayChannelCreateRequest) RequestToDb() (db paychannelmodel.PayChannel, err error) { db.PayName = p.PayName db.MerchantId = p.MerchantId db.ChannelType = p.ChannelType db.AppId = p.AppId if p.ExpireTime != "" { db.ExpireTime, err = utils.StrToTimeShanghai(p.ExpireTime) if err != nil { err = errors.Wrap(err, "时间格式错误") } } switch p.ChannelType { case common.PAY_CHANNEL_WECHAT_H5, common.PAY_CHANNEL_WECHAT_JSAPI, common.PAY_CHANNEL_WECHAT_NATIVE, common.PAY_CHANNEL_WECHAT_APP, common.PAY_CHANNEL_WECHAT_MINI: b, _ := json.Marshal(p.WechatPayChannel) db.ExtJson = string(b) case common.PAY_CHANNEL_ALIPAY_JSAPI, common.PAY_CHANNEL_ALIPAY_WEB, common.PAY_CHANNEL_ALIPAY_MINI: b, _ := json.Marshal(p.AliPayChannel) db.ExtJson = string(b) default: err = errors.New("支付渠道类型错误") } return } type PayChannelListRequest struct { Id int64 `json:"id" form:"id" ` MerchantId int64 `json:"merchant_id" form:"merchant_id" validate:"required" label:"商户ID"` entities.PageRequest } type PayChannelUpdateRequest struct { Id int64 `json:"id" validate:"required"` PayName string `json:"pay_name" validate:"required" label:"支付渠道名称"` ChannelType int `json:"channel_type" validate:"required" label:"支付渠道"` //支付渠道枚举,1微信JSAPI,2微信H5,3微信app,4微信Native,5微信小程序,6支付宝网页&移动应用,7支付宝小程序,8支付宝JSAPI AppId string `json:"app_id" validate:"required" label:"应用appId"` ExpireTime string `json:"expire_time"` AliPayChannel AliPayChannel `json:"ali_pay_channel,omitempty"` WechatPayChannel WechatPayChannel `json:"wechat_pay_channel,omitempty"` } func (p PayChannelUpdateRequest) RequestToDb() (db paychannelmodel.PayChannel, err error) { db.Id = p.Id db.PayName = p.PayName db.ChannelType = p.ChannelType db.AppId = p.AppId if p.ExpireTime != "" { db.ExpireTime, err = utils.StrToTimeShanghai(p.ExpireTime) if err != nil { err = errors.Wrap(err, "时间格式错误") } } switch p.ChannelType { case common.PAY_CHANNEL_WECHAT_H5, common.PAY_CHANNEL_WECHAT_JSAPI, common.PAY_CHANNEL_WECHAT_NATIVE, common.PAY_CHANNEL_WECHAT_APP, common.PAY_CHANNEL_WECHAT_MINI: b, _ := json.Marshal(p.WechatPayChannel) db.ExtJson = string(b) case common.PAY_CHANNEL_ALIPAY_JSAPI, common.PAY_CHANNEL_ALIPAY_WEB, common.PAY_CHANNEL_ALIPAY_MINI: b, _ := json.Marshal(p.AliPayChannel) db.ExtJson = string(b) default: err = errors.New("支付渠道类型错误") } return }