From ceb006bf5862ed1b295f6ee2d86c76dfb43c4c64 Mon Sep 17 00:00:00 2001 From: braumye <35051868+braumye@users.noreply.github.com> Date: Mon, 29 Jan 2024 14:36:32 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BC=80=E6=94=BE=E5=B9=B3=E5=8F=B0=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E5=B0=8F=E7=A8=8B=E5=BA=8F=E5=9F=BA=E7=A1=80=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=20(#642)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 开放平台修改小程序基础信息 * 统一错误处理 --- openplatform/miniprogram/basic/basic.go | 184 ++++++++++++++++++++++++ 1 file changed, 184 insertions(+) diff --git a/openplatform/miniprogram/basic/basic.go b/openplatform/miniprogram/basic/basic.go index 58890ab..ea9a90c 100644 --- a/openplatform/miniprogram/basic/basic.go +++ b/openplatform/miniprogram/basic/basic.go @@ -9,6 +9,12 @@ import ( 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 基础信息设置 @@ -51,3 +57,181 @@ func (basic *Basic) GetAccountBasicInfo() (*AccountBasicInfo, error) { // 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") +}