|
|
- package wechat
-
- import (
- "bytes"
- "encoding/base64"
- "errors"
- "fmt"
- "log"
-
- "git.tetele.net/tgo/helper"
- )
-
- // 获取小程序码
- func GetMiniappQrcode(access_token string, qrcodeParamsMap map[string]interface{}) (string, error) {
-
- getCodeUrl := fmt.Sprintf(GET_MINIAPP_QRCODE, access_token)
-
- checkPath := true
- envVersion := "release"
- width := 430
- autoColor := false
- isHyaline := false
-
- if _, exist := qrcodeParamsMap["check_path"]; exist {
- checkPath = qrcodeParamsMap["check_path"].(bool)
- }
-
- if _, exist := qrcodeParamsMap["env_version"]; exist {
- envVersion = helper.ToStr(qrcodeParamsMap["env_version"])
- }
-
- if _, exist := qrcodeParamsMap["width"]; exist {
- width = helper.ToInt(qrcodeParamsMap["width"])
- }
-
- if _, exist := qrcodeParamsMap["auto_color"]; exist {
- autoColor = qrcodeParamsMap["auto_color"].(bool)
- }
-
- if _, exist := qrcodeParamsMap["is_hyaline"]; exist {
- isHyaline = qrcodeParamsMap["is_hyaline"].(bool)
- }
-
- requestData := map[string]interface{}{
- "scene": qrcodeParamsMap["scene"],
- "page": qrcodeParamsMap["page"],
- "check_path": checkPath,
- "env_version": envVersion,
- "width": width,
- "auto_color": autoColor,
- "is_hyaline": isHyaline,
- }
- // json.marshal 会转义&字符
- /*requestDataJson, err := json.Marshal(requestData)
-
- if err != nil {
- return "", err
- }*/
-
- bf := bytes.NewBuffer([]byte{})
- jsonEncoder := json.NewEncoder(bf)
- jsonEncoder.SetEscapeHTML(false)
- jsonEncoder.Encode(requestData)
-
- response, err := PostJson(getCodeUrl, bf.Bytes())
-
- log.Println("get mp qrcode response:", string(response), err)
-
- if err != nil {
- return "", err
- }
-
- responseData := map[string]interface{}{}
- err = json.Unmarshal(response, &responseData)
- if err != nil {
- // 有错,但能解析
- log.Println(err)
- }
-
- if _, exist := responseData["errcode"]; exist && helper.ToInt(responseData["errcode"]) != 0 {
- return "", errors.New(helper.ToStr(responseData["errmsg"]) + ",errcode:" + helper.ToStr(responseData["errcode"]))
- }
-
- return "data:image/png;base64," + base64.StdEncoding.EncodeToString(response), nil
- }
|