package market import ( "encoding/json" "qteam/app/utils/encrypt" "qteam/config" "time" ) func NewMarketClient(cfg config.MarketConfig) *MarketClient { cfg.Sign = "-----BEGIN RSA PRIVATE KEY-----\n" + cfg.Sign + "\n-----END RSA PRIVATE KEY-----" return &MarketClient{ cfg: cfg, } } /* MarketSend 券码生成接口 - 请求地址:/openApi/v1/market/key/send - 说明:发券接口应支持使用同一流水号进行重复请求,即:当调用该接口失败时,可 以使用同一流水号进行再次请求,接口需要根据请求的流水号进行判断,若无该流水 号的券码信息则新生成后返回,若有该流水号的券码信息则直接返回该券码的信息 orderNo: 订单号 VoucherId: 制码批次号 MobileNo: 11 手机号,可传空字符串 SendMsg: 是否发送短信:2- 发送 1-不发送 */ func (this *MarketClient) MarketSend(orderNo, VoucherId, MobileNo, SendMsg string) (res MarketResponse, err error) { url := "/openApi/v1/market/key/send" request := MarketSendRequest{ AppId: this.cfg.AppId, ReqCode: this.cfg.ReqCode, MemId: this.cfg.MemId, PosId: this.cfg.PosId, TimeTamp: time.Now().Format("20060102150405"), VoucherId: VoucherId, ReqSerialNo: orderNo, VoucherNum: 1, MobileNo: MobileNo, SendMsg: SendMsg, } request.Sign, err = MakeRsaSign(this.cfg.Sign, request.toMap()) if err != nil { return res, err } bytes, err := json.Marshal(request) if err != nil { return res, err } data, err := this.doPost(url, bytes) if err != nil { return res, err } err = json.Unmarshal(data, &res) // 加密 if len(res.Data.ShortUrl) > 0 { res.Data.ShortUrl = encrypt.AesEncryptCBC([]byte(res.Data.ShortUrl), []byte(this.cfg.SecretKey)) } return res, err }