新增微信公众平台对接
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
package Scheme
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"hospital-open-api/extend/weChat"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// GetSchemeJumpWxaRequest 跳转到的目标小程序信息
|
||||
type GetSchemeJumpWxaRequest struct {
|
||||
Path string `json:"path"`
|
||||
Query string `json:"query"`
|
||||
// envVersion 要打开的小程序版本。正式版为 "release",体验版为 "trial",开发版为 "develop"
|
||||
EnvVersion string `json:"env_version"`
|
||||
}
|
||||
|
||||
// GetSchemeRequest 请求参数
|
||||
// https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/url-scheme/urlscheme.generate.html#请求参数
|
||||
type GetSchemeRequest struct {
|
||||
JumpWxa *GetSchemeJumpWxaRequest `json:"jump_wxa"`
|
||||
ExpireType int `json:"expire_type"`
|
||||
ExpireTime int64 `json:"expire_time"`
|
||||
ExpireInterval int `json:"expire_interval"`
|
||||
}
|
||||
|
||||
// GetSchemeResponse 获取加密scheme码返回数据
|
||||
type GetSchemeResponse struct {
|
||||
OpenLink string `json:"openlink"`
|
||||
|
||||
weChat.CommonError
|
||||
}
|
||||
|
||||
// GetScheme 获取加密scheme码
|
||||
func (r *GetSchemeRequest) GetScheme(userType int) (string, error) {
|
||||
// 初始化配置
|
||||
weChatConfig := weChat.GetConfig(userType)
|
||||
|
||||
// 获取token
|
||||
accessToken, err := weChatConfig.GetAccessToken()
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
url := fmt.Sprintf("%s?access_token=%s", "https://api.weixin.qq.com/wxa/generatescheme", accessToken)
|
||||
|
||||
// 将请求数据转换为 JSON
|
||||
requestBody, err := json.Marshal(r)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
// 去除json的转义
|
||||
requestBody = []byte(strings.Replace(string(requestBody), "\\u0026", "&", -1))
|
||||
|
||||
body, err := weChat.PostRequest(url, requestBody)
|
||||
if err != nil {
|
||||
return "", errors.New(err.Error())
|
||||
}
|
||||
|
||||
var GetSchemeResponse GetSchemeResponse
|
||||
err = json.Unmarshal(body, &GetSchemeResponse)
|
||||
if err != nil {
|
||||
// json解析失败
|
||||
return "", err
|
||||
}
|
||||
|
||||
if GetSchemeResponse.ErrCode != 0 || GetSchemeResponse.ErrMsg != "ok" {
|
||||
return "", errors.New(GetSchemeResponse.ErrMsg)
|
||||
}
|
||||
|
||||
if GetSchemeResponse.OpenLink == "" {
|
||||
return "", errors.New("失败")
|
||||
}
|
||||
|
||||
return GetSchemeResponse.OpenLink, nil
|
||||
}
|
||||
Reference in New Issue
Block a user