63 lines
2.1 KiB
Go
63 lines
2.1 KiB
Go
package httpcall
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"errors"
|
|
"finclip-app-manager/domain/entity/proto/apiproto"
|
|
"fmt"
|
|
"net/http"
|
|
)
|
|
|
|
func (c *Client) GetWechatQrcode(ctx context.Context, req apiproto.UpdateWechatInfoReq, token string) ([]byte, error) {
|
|
url := fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=%s", token)
|
|
body := map[string]interface{}{
|
|
"path": req.WechatPath,
|
|
"width": 430,
|
|
}
|
|
rsp, err := c.Request(ctx).SetBody(body).Post(url)
|
|
if err != nil {
|
|
log.Errorf("getWechatQrcode err:%+v,status code:%+v", err, rsp)
|
|
return nil, err
|
|
}
|
|
if rsp.StatusCode() != http.StatusOK {
|
|
log.Errorf("getWechatQrcode status code no 200 :%+v,boyd:%+v", rsp.StatusCode(), rsp.String())
|
|
return nil, errors.New("getWechatQrcode status code no ok")
|
|
}
|
|
if rsp.Header().Get("Content-Type") != "image/jpeg" {
|
|
log.Errorf("getWechatQrcode Content-Type not jpeg :%+v, body: %s", rsp.Header().Get("Content-Type"), string(rsp.Body()))
|
|
return nil, errors.New("getWechatQrcode Content-Type no ok")
|
|
}
|
|
log.Infof("getWechatQrcode rsp:%+v", rsp.Header())
|
|
return rsp.Body(), nil
|
|
}
|
|
|
|
type WechatAccessToeknRsp struct {
|
|
AccessToken string `json:"access_token"`
|
|
ExpiresIn int `json:"expires_in"`
|
|
}
|
|
|
|
func (c *Client) GetAccessToken(ctx context.Context, req apiproto.UpdateWechatInfoReq) (string, error) {
|
|
url := fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s", req.WechatAppId, req.WechatAppSecret)
|
|
rsp, err := c.Request(ctx).Get(url)
|
|
if err != nil {
|
|
log.Errorf("getAccessToken client req err:%s", err.Error())
|
|
return "", err
|
|
}
|
|
if rsp.StatusCode() != 200 {
|
|
log.Errorf("getAccessToken rsp code err:%s", rsp.String())
|
|
return "", errors.New("getAccessToken rsp code no 200")
|
|
}
|
|
resp := WechatAccessToeknRsp{}
|
|
err = json.Unmarshal(rsp.Body(), &resp)
|
|
if err != nil {
|
|
log.Errorf("Failed to unmarshal WechatAccessToeknRsp: %v\n", err)
|
|
return "", err
|
|
}
|
|
log.Infof("getAccessToken resp:%+v", resp)
|
|
if resp.AccessToken == "" {
|
|
return "", fmt.Errorf("getAccessToken fail check appId")
|
|
}
|
|
return resp.AccessToken, nil
|
|
}
|