mirror of
https://github.com/silenceper/wechat.git
synced 2026-02-04 12:52:27 +08:00
238 lines
8.5 KiB
Go
238 lines
8.5 KiB
Go
package basic
|
||
|
||
import (
|
||
"fmt"
|
||
|
||
openContext "github.com/silenceper/wechat/v2/openplatform/context"
|
||
"github.com/silenceper/wechat/v2/util"
|
||
)
|
||
|
||
const (
|
||
getAccountBasicInfoURL = "https://api.weixin.qq.com/cgi-bin/account/getaccountbasicinfo"
|
||
checkNickNameURL = "https://api.weixin.qq.com/cgi-bin/wxverify/checkwxverifynickname"
|
||
setNickNameURL = "https://api.weixin.qq.com/wxa/setnickname"
|
||
setSignatureURL = "https://api.weixin.qq.com/cgi-bin/account/modifysignature"
|
||
setHeadImageURL = "https://api.weixin.qq.com/cgi-bin/account/modifyheadimage"
|
||
getSearchStatusURL = "https://api.weixin.qq.com/wxa/getwxasearchstatus"
|
||
setSearchStatusURL = "https://api.weixin.qq.com/wxa/changewxasearchstatus"
|
||
)
|
||
|
||
// Basic 基础信息设置
|
||
type Basic struct {
|
||
*openContext.Context
|
||
appID string
|
||
}
|
||
|
||
// NewBasic new
|
||
func NewBasic(opContext *openContext.Context, appID string) *Basic {
|
||
return &Basic{Context: opContext, appID: appID}
|
||
}
|
||
|
||
// AccountBasicInfo 基础信息
|
||
type AccountBasicInfo struct {
|
||
util.CommonError
|
||
}
|
||
|
||
// GetAccountBasicInfo 获取小程序基础信息
|
||
//
|
||
//reference:https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/Mini_Programs/Mini_Program_Information_Settings.html
|
||
func (basic *Basic) GetAccountBasicInfo() (*AccountBasicInfo, error) {
|
||
ak, err := basic.GetAuthrAccessToken(basic.AppID)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
url := fmt.Sprintf("%s?access_token=%s", getAccountBasicInfoURL, ak)
|
||
data, err := util.HTTPGet(url)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
result := &AccountBasicInfo{}
|
||
if err := util.DecodeWithError(data, result, "account/getaccountbasicinfo"); err != nil {
|
||
return nil, err
|
||
}
|
||
return result, nil
|
||
}
|
||
|
||
// modify_domain设置服务器域名
|
||
// TODO
|
||
// func (encryptor *Basic) modifyDomain() {
|
||
// }
|
||
|
||
// CheckNickNameResp 小程序名称检测结果
|
||
type CheckNickNameResp struct {
|
||
util.CommonError
|
||
HitCondition bool `json:"hit_condition"` // 是否命中关键字策略。若命中,可以选填关键字材料
|
||
Wording string `json:"wording"` // 命中关键字的说明描述
|
||
}
|
||
|
||
// CheckNickName 检测微信认证的名称是否符合规则
|
||
// ref: https://developers.weixin.qq.com/doc/oplatform/openApi/OpenApiDoc/miniprogram-management/basic-info-management/checkNickName.html
|
||
func (basic *Basic) CheckNickName(nickname string) (*CheckNickNameResp, error) {
|
||
ak, err := basic.GetAuthrAccessToken(basic.AppID)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
url := fmt.Sprintf("%s?access_token=%s", checkNickNameURL, ak)
|
||
data, err := util.PostJSON(url, map[string]string{
|
||
"nick_name": nickname,
|
||
})
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
res := &CheckNickNameResp{}
|
||
err = util.DecodeWithError(data, res, "CheckNickName")
|
||
return res, err
|
||
}
|
||
|
||
// SetNickNameResp 设置小程序名称结果
|
||
type SetNickNameResp struct {
|
||
util.CommonError
|
||
AuditID int64 `json:"audit_id"` // 审核单Id,通过用于查询改名审核状态
|
||
Wording string `json:"wording"` // 材料说明
|
||
}
|
||
|
||
// SetNickNameParam 设置小程序名称参数
|
||
type SetNickNameParam struct {
|
||
NickName string `json:"nick_name"` // 昵称,不支持包含“小程序”关键字的昵称
|
||
IDCard string `json:"id_card,omitempty"` // 身份证照片 mediaid,个人号必填
|
||
License string `json:"license,omitempty"` // 组织机构代码证或营业执照 mediaid,组织号必填
|
||
NameingOtherStuff1 string `json:"naming_other_stuff_1,omitempty"` // 其他证明材料 mediaid,选填
|
||
NameingOtherStuff2 string `json:"naming_other_stuff_2,omitempty"` // 其他证明材料 mediaid,选填
|
||
NameingOtherStuff3 string `json:"naming_other_stuff_3,omitempty"` // 其他证明材料 mediaid,选填
|
||
NameingOtherStuff4 string `json:"naming_other_stuff_4,omitempty"` // 其他证明材料 mediaid,选填
|
||
NameingOtherStuff5 string `json:"naming_other_stuff_5,omitempty"` // 其他证明材料 mediaid,选填
|
||
}
|
||
|
||
// SetNickName 设置小程序名称
|
||
func (basic *Basic) SetNickName(nickname string) (*SetNickNameResp, error) {
|
||
return basic.SetNickNameFull(&SetNickNameParam{
|
||
NickName: nickname,
|
||
})
|
||
}
|
||
|
||
// SetNickNameFull 设置小程序名称
|
||
// ref: https://developers.weixin.qq.com/doc/oplatform/openApi/OpenApiDoc/miniprogram-management/basic-info-management/setNickName.html
|
||
func (basic *Basic) SetNickNameFull(param *SetNickNameParam) (*SetNickNameResp, error) {
|
||
ak, err := basic.GetAuthrAccessToken(basic.AppID)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
url := fmt.Sprintf("%s?access_token=%s", setNickNameURL, ak)
|
||
data, err := util.PostJSON(url, param)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
res := &SetNickNameResp{}
|
||
err = util.DecodeWithError(data, res, "SetNickName")
|
||
return res, err
|
||
}
|
||
|
||
// SetSignatureResp 小程序功能介绍修改结果
|
||
type SetSignatureResp struct {
|
||
util.CommonError
|
||
}
|
||
|
||
// SetSignature 小程序修改功能介绍
|
||
// ref: https://developers.weixin.qq.com/doc/oplatform/openApi/OpenApiDoc/miniprogram-management/basic-info-management/setSignature.html
|
||
func (basic *Basic) SetSignature(signature string) error {
|
||
ak, err := basic.GetAuthrAccessToken(basic.AppID)
|
||
if err != nil {
|
||
return err
|
||
}
|
||
url := fmt.Sprintf("%s?access_token=%s", setSignatureURL, ak)
|
||
data, err := util.PostJSON(url, map[string]string{
|
||
"signature": signature,
|
||
})
|
||
if err != nil {
|
||
return err
|
||
}
|
||
return util.DecodeWithError(data, &SetSignatureResp{}, "SetSignature")
|
||
}
|
||
|
||
// GetSearchStatusResp 查询小程序当前是否可被搜索
|
||
type GetSearchStatusResp struct {
|
||
util.CommonError
|
||
Status int `json:"status"` // 1 表示不可搜索,0 表示可搜索
|
||
}
|
||
|
||
// GetSearchStatus 查询小程序当前是否可被搜索
|
||
// ref: https://developers.weixin.qq.com/doc/oplatform/openApi/OpenApiDoc/miniprogram-management/basic-info-management/getSearchStatus.html
|
||
func (basic *Basic) GetSearchStatus(signature string) (*GetSearchStatusResp, error) {
|
||
ak, err := basic.GetAuthrAccessToken(basic.AppID)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
url := fmt.Sprintf("%s?access_token=%s", getSearchStatusURL, ak)
|
||
data, err := util.HTTPGet(url)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
res := &GetSearchStatusResp{}
|
||
err = util.DecodeWithError(data, res, "GetSearchStatus")
|
||
return res, err
|
||
}
|
||
|
||
// SetSearchStatusResp 小程序是否可被搜索修改结果
|
||
type SetSearchStatusResp struct {
|
||
util.CommonError
|
||
}
|
||
|
||
// SetSearchStatus 修改小程序是否可被搜索
|
||
// status: 1 表示不可搜索,0 表示可搜索
|
||
// ref: https://developers.weixin.qq.com/doc/oplatform/openApi/OpenApiDoc/miniprogram-management/basic-info-management/setSearchStatus.html
|
||
func (basic *Basic) SetSearchStatus(status int) error {
|
||
ak, err := basic.GetAuthrAccessToken(basic.AppID)
|
||
if err != nil {
|
||
return err
|
||
}
|
||
url := fmt.Sprintf("%s?access_token=%s", setSearchStatusURL, ak)
|
||
data, err := util.PostJSON(url, map[string]int{
|
||
"status": status,
|
||
})
|
||
if err != nil {
|
||
return err
|
||
}
|
||
return util.DecodeWithError(data, &SetSearchStatusResp{}, "SetSearchStatus")
|
||
}
|
||
|
||
// SetHeadImageResp 小程序头像修改结果
|
||
type SetHeadImageResp struct {
|
||
util.CommonError
|
||
}
|
||
|
||
// SetHeadImageParam 小程序头像修改参数
|
||
type SetHeadImageParam struct {
|
||
HeadImageMediaID string `json:"head_img_media_id"` // 头像素材 media_id
|
||
X1 string `json:"x1"` // 裁剪框左上角 x 坐标(取值范围:[0, 1])
|
||
Y1 string `json:"y1"` // 裁剪框左上角 y 坐标(取值范围:[0, 1])
|
||
X2 string `json:"x2"` // 裁剪框右下角 x 坐标(取值范围:[0, 1])
|
||
Y2 string `json:"y2"` // 裁剪框右下角 y 坐标(取值范围:[0, 1])
|
||
}
|
||
|
||
// SetHeadImage 修改小程序头像
|
||
func (basic *Basic) SetHeadImage(imgMediaID string) error {
|
||
return basic.SetHeadImageFull(&SetHeadImageParam{
|
||
HeadImageMediaID: imgMediaID,
|
||
X1: "0",
|
||
Y1: "0",
|
||
X2: "1",
|
||
Y2: "1",
|
||
})
|
||
}
|
||
|
||
// SetHeadImageFull 修改小程序头像
|
||
// 新增临时素材: https://developers.weixin.qq.com/doc/offiaccount/Asset_Management/New_temporary_materials.html
|
||
// ref: https://developers.weixin.qq.com/doc/oplatform/openApi/OpenApiDoc/miniprogram-management/basic-info-management/setHeadImage.html
|
||
func (basic *Basic) SetHeadImageFull(param *SetHeadImageParam) error {
|
||
ak, err := basic.GetAuthrAccessToken(basic.AppID)
|
||
if err != nil {
|
||
return err
|
||
}
|
||
url := fmt.Sprintf("%s?access_token=%s", setHeadImageURL, ak)
|
||
data, err := util.PostJSON(url, param)
|
||
if err != nil {
|
||
return err
|
||
}
|
||
return util.DecodeWithError(data, &SetHeadImageResp{}, "account/setheadimage")
|
||
}
|