package httpcall import ( "context" "encoding/json" "errors" "finclip-app-manager/infrastructure/config" "fmt" "net/http" ) //创建小程序、应用申请权限 const ( PAY_ADD_TYPE_APP = 1 PAY_ADD_TYPE_BINDING = 2 PAY_ID_STATUS_NO_USE = 1 PAY_ID_STATUS_USING = 2 PAY_ID_STATUS_EXPIRE = 3 ) type PayAddLimitReq struct { Type int `json:"type"` AccountId string `json:"accountId"` BusinessId string `json:"businessId"` BusinessName string `json:"businessName"` } type PayAddLimitRsp struct { Errcode string `json:"errcode"` Error string `json:"error"` Data struct { RightId string `json:"rightId"` EndTime int64 `json:"endTime"` } `json:"data"` } func (c *Client) PayAddLimit(ctx context.Context, req *PayAddLimitReq) (*PayAddLimitRsp, int, error) { url := config.GetConfig().PayAddLimitHost + config.GetConfig().PayAddLimitURL log.Infof("PayAddLimit url:%s,req:%+v", url, req) rsp, err := c.Request(ctx).SetHeaders(c.getNewDefaultReqHeader()).SetBody(req).Post(url) if err != nil { log.Errorf("PayAddLimit err:%+v,status code:%+v", err, rsp) return nil, http.StatusInternalServerError, err } if rsp.StatusCode() != http.StatusOK { log.Errorf("PayAddLimit status code no 200 :%+v,boyd:%+v", rsp.StatusCode(), rsp.String()) return nil, rsp.StatusCode(), nil } rspInfo := PayAddLimitRsp{} if err := json.Unmarshal(rsp.Body(), &rspInfo); err != nil { log.Errorf("PayAddLimit json unmarshal err:%+v,rsp body:%+v", err, rsp.String()) return nil, rsp.StatusCode(), err } log.Infof("PayAddLimit rsp:%+v", rsp.String()) return &rspInfo, rsp.StatusCode(), nil } func (c *Client) PayUpdateLimit(ctx context.Context, req *PayAddLimitReq) (*PayAddLimitRsp, int, error) { url := config.GetConfig().PayAddLimitHost + config.GetConfig().PayUpdateLimitURL log.Infof("PayAddLimit url:%s,req:%+v", url, req) rsp, err := c.Request(ctx).SetHeaders(c.getNewDefaultReqHeader()).SetBody(req).Post(url) if err != nil { log.Errorf("PayAddLimit err:%+v,status code:%+v", err, rsp) return nil, http.StatusInternalServerError, err } if rsp.StatusCode() != http.StatusOK { log.Errorf("PayAddLimit status code no 200 :%+v,boyd:%+v", rsp.StatusCode(), rsp.String()) return nil, rsp.StatusCode(), nil } rspInfo := PayAddLimitRsp{} if err := json.Unmarshal(rsp.Body(), &rspInfo); err != nil { log.Errorf("PayAddLimit json unmarshal err:%+v,rsp body:%+v", err, rsp.String()) return nil, rsp.StatusCode(), err } log.Infof("PayAddLimit rsp:%+v", rsp.String()) return &rspInfo, rsp.StatusCode(), nil } type PayCheckIdStatusRsp struct { Errcode string `json:"errcode"` Error string `json:"error"` Data struct { Status int `json:"status"` } `json:"data"` } func (c *Client) PayCheckIdStatus(ctx context.Context, id string) (int, int, error) { url := fmt.Sprintf(config.GetConfig().PayAddLimitHost+config.GetConfig().PayCheckIdStatusURL+"?businessId=%s", id) log.Infof("PayCheckIdStatus url:%s", url) rsp, err := c.Request(ctx).SetHeaders(c.getNewDefaultReqHeader()).Get(url) if err != nil { log.Errorf("PayCheckIdStatus err:%+v,status code:%+v", err, rsp) return 0, http.StatusInternalServerError, err } if rsp.StatusCode() != http.StatusOK { log.Errorf("PayCheckIdStatus status code no 200 :%+v,boyd:%+v", rsp.StatusCode(), rsp.String()) return 0, rsp.StatusCode(), errors.New("PayCheckIdStatus status code no ok") } rspInfo := PayCheckIdStatusRsp{} if err := json.Unmarshal(rsp.Body(), &rspInfo); err != nil { log.Errorf("PayCheckIdStatus json unmarshal err:%+v,rsp body:%+v", err, rsp.String()) return 0, rsp.StatusCode(), err } log.Infof("PayCheckIdStatus rsp:%+v", rsp.String()) return rspInfo.Data.Status, rsp.StatusCode(), nil } type PayFixOldDataReq struct { OrganId string `json:"organId"` Type int `json:"type"` BusinessId string `json:"businessId"` BusinessName string `json:"businessName"` CreateTime int64 `json:"createTime"` } func (c *Client) PayFixOldData(ctx context.Context, req *PayFixOldDataReq) (int, error) { url := fmt.Sprintf(config.GetConfig().PayAddLimitHost + config.GetConfig().PayFixOldDataURL) rsp, err := c.Request(ctx).SetHeaders(c.getNewDefaultReqHeader()).SetBody(req).Post(url) if err != nil { log.Errorf("PayFixOldData err:%+v,status code:%+v", err, rsp) return http.StatusInternalServerError, err } if rsp.StatusCode() != http.StatusOK { log.Errorf("PayFixOldData status code no 200 :%+v,boyd:%+v", rsp.StatusCode(), rsp.String()) return rsp.StatusCode(), errors.New("PayCheckIdStatus status code no ok") } rspInfo := PayCheckIdStatusRsp{} if err := json.Unmarshal(rsp.Body(), &rspInfo); err != nil { log.Errorf("PayFixOldData json unmarshal err:%+v,rsp body:%+v", err, rsp.String()) return rsp.StatusCode(), err } //log.Infof("PayFixOldData rsp:%+v", rsp.String()) return rsp.StatusCode(), nil }