mirror of
https://github.com/silenceper/wechat.git
synced 2026-02-04 12:52:27 +08:00
Merge branch 'v2' of github.com:silenceper/wechat into feature/remove-redis
This commit is contained in:
@@ -138,10 +138,8 @@ func (auth *Auth) GetPhoneNumberContext(ctx context2.Context, code string) (*Get
|
||||
}
|
||||
|
||||
var result GetPhoneNumberResponse
|
||||
if err = util.DecodeWithError(response, &result, "phonenumber.getPhoneNumber"); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &result, nil
|
||||
err = util.DecodeWithError(response, &result, "phonenumber.getPhoneNumber")
|
||||
return &result, err
|
||||
}
|
||||
|
||||
// GetPhoneNumber 小程序通过code获取用户手机号
|
||||
|
||||
@@ -45,10 +45,5 @@ func (business *Business) GetPhoneNumber(in *GetPhoneNumberRequest) (info PhoneI
|
||||
PhoneInfo PhoneInfo `json:"phone_info"`
|
||||
}
|
||||
err = util.DecodeWithError(response, &resp, "business.GetPhoneNumber")
|
||||
if nil != err {
|
||||
return
|
||||
}
|
||||
|
||||
info = resp.PhoneInfo
|
||||
return
|
||||
return resp.PhoneInfo, err
|
||||
}
|
||||
|
||||
@@ -398,7 +398,7 @@ type PushDataSecVodUpload struct {
|
||||
|
||||
// SecVodUploadEvent 短剧媒资上传完成事件
|
||||
type SecVodUploadEvent struct {
|
||||
MediaID string `json:"media_id" xml:"media_id"` // 媒资 id
|
||||
MediaID int64 `json:"media_id" xml:"media_id"` // 媒资 id
|
||||
SourceContext string `json:"source_context" xml:"source_context"` // 透传上传接口中开发者设置的值。
|
||||
ErrCode int `json:"errcode" xml:"errcode"` // 错误码,上传失败时该值非
|
||||
ErrMsg string `json:"errmsg" xml:"errmsg"` // 错误提示
|
||||
@@ -412,7 +412,7 @@ type PushDataSecVodAudit struct {
|
||||
|
||||
// SecVodAuditEvent 短剧媒资审核状态事件
|
||||
type SecVodAuditEvent struct {
|
||||
DramaID string `json:"drama_id" xml:"drama_id"` // 剧目 id
|
||||
DramaID int64 `json:"drama_id" xml:"drama_id"` // 剧目 id
|
||||
SourceContext string `json:"source_context" xml:"source_context"` // 透传上传接口中开发者设置的值
|
||||
AuditDetail DramaAuditDetail `json:"audit_detail" xml:"audit_detail"` // 剧目审核结果,单独每一集的审核结果可以根据 drama_id 查询剧集详情得到
|
||||
}
|
||||
|
||||
102
miniprogram/message/updatable_msg.go
Normal file
102
miniprogram/message/updatable_msg.go
Normal file
@@ -0,0 +1,102 @@
|
||||
package message
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/silenceper/wechat/v2/miniprogram/context"
|
||||
"github.com/silenceper/wechat/v2/util"
|
||||
)
|
||||
|
||||
const (
|
||||
// createActivityURL 创建activity_id
|
||||
createActivityURL = "https://api.weixin.qq.com/cgi-bin/message/wxopen/activityid/create?access_token=%s"
|
||||
// SendUpdatableMsgURL 修改动态消息
|
||||
setUpdatableMsgURL = "https://api.weixin.qq.com/cgi-bin/message/wxopen/updatablemsg/send?access_token=%s"
|
||||
)
|
||||
|
||||
// UpdatableTargetState 动态消息状态
|
||||
type UpdatableTargetState int
|
||||
|
||||
const (
|
||||
// TargetStateNotStarted 未开始
|
||||
TargetStateNotStarted UpdatableTargetState = 0
|
||||
// TargetStateStarted 已开始
|
||||
TargetStateStarted UpdatableTargetState = 1
|
||||
// TargetStateFinished 已结束
|
||||
TargetStateFinished UpdatableTargetState = 2
|
||||
)
|
||||
|
||||
// UpdatableMessage 动态消息
|
||||
type UpdatableMessage struct {
|
||||
*context.Context
|
||||
}
|
||||
|
||||
// NewUpdatableMessage 实例化
|
||||
func NewUpdatableMessage(ctx *context.Context) *UpdatableMessage {
|
||||
return &UpdatableMessage{
|
||||
Context: ctx,
|
||||
}
|
||||
}
|
||||
|
||||
// CreateActivityID 创建activity_id
|
||||
func (updatableMessage *UpdatableMessage) CreateActivityID() (res CreateActivityIDResponse, err error) {
|
||||
accessToken, err := updatableMessage.GetAccessToken()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
uri := fmt.Sprintf(createActivityURL, accessToken)
|
||||
response, err := util.HTTPGet(uri)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
err = util.DecodeWithError(response, &res, "CreateActivityID")
|
||||
return
|
||||
}
|
||||
|
||||
// SetUpdatableMsg 修改动态消息
|
||||
func (updatableMessage *UpdatableMessage) SetUpdatableMsg(activityID string, targetState UpdatableTargetState, template UpdatableMsgTemplate) (err error) {
|
||||
accessToken, err := updatableMessage.GetAccessToken()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
uri := fmt.Sprintf(setUpdatableMsgURL, accessToken)
|
||||
data := SendUpdatableMsgReq{
|
||||
ActivityID: activityID,
|
||||
TargetState: targetState,
|
||||
TemplateInfo: template,
|
||||
}
|
||||
|
||||
response, err := util.PostJSON(uri, data)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return util.DecodeWithCommonError(response, "SendUpdatableMsg")
|
||||
}
|
||||
|
||||
// CreateActivityIDResponse 创建activity_id 返回
|
||||
type CreateActivityIDResponse struct {
|
||||
util.CommonError
|
||||
|
||||
ActivityID string `json:"activity_id"`
|
||||
ExpirationTime int64 `json:"expiration_time"`
|
||||
}
|
||||
|
||||
// UpdatableMsgTemplate 动态消息模板
|
||||
type UpdatableMsgTemplate struct {
|
||||
ParameterList []UpdatableMsgParameter `json:"parameter_list"`
|
||||
}
|
||||
|
||||
// UpdatableMsgParameter 动态消息参数
|
||||
type UpdatableMsgParameter struct {
|
||||
Name string `json:"name"`
|
||||
Value string `json:"value"`
|
||||
}
|
||||
|
||||
// SendUpdatableMsgReq 修改动态消息参数
|
||||
type SendUpdatableMsgReq struct {
|
||||
ActivityID string `json:"activity_id"`
|
||||
TemplateInfo UpdatableMsgTemplate `json:"template_info"`
|
||||
TargetState UpdatableTargetState `json:"target_state"`
|
||||
}
|
||||
@@ -15,6 +15,7 @@ import (
|
||||
"github.com/silenceper/wechat/v2/miniprogram/order"
|
||||
"github.com/silenceper/wechat/v2/miniprogram/privacy"
|
||||
"github.com/silenceper/wechat/v2/miniprogram/qrcode"
|
||||
"github.com/silenceper/wechat/v2/miniprogram/redpacketcover"
|
||||
"github.com/silenceper/wechat/v2/miniprogram/riskcontrol"
|
||||
"github.com/silenceper/wechat/v2/miniprogram/security"
|
||||
"github.com/silenceper/wechat/v2/miniprogram/shortlink"
|
||||
@@ -155,3 +156,13 @@ func (miniProgram *MiniProgram) GetShipping() *order.Shipping {
|
||||
func (miniProgram *MiniProgram) GetMiniDrama() *minidrama.MiniDrama {
|
||||
return minidrama.NewMiniDrama(miniProgram.ctx)
|
||||
}
|
||||
|
||||
// GetRedPacketCover 小程序微信红包封面 API
|
||||
func (miniProgram *MiniProgram) GetRedPacketCover() *redpacketcover.RedPacketCover {
|
||||
return redpacketcover.NewRedPacketCover(miniProgram.ctx)
|
||||
}
|
||||
|
||||
// GetUpdatableMessage 小程序动态消息
|
||||
func (miniProgram *MiniProgram) GetUpdatableMessage() *message.UpdatableMessage {
|
||||
return message.NewUpdatableMessage(miniProgram.ctx)
|
||||
}
|
||||
|
||||
@@ -103,11 +103,8 @@ func (s *Privacy) GetPrivacySetting(privacyVer int) (GetPrivacySettingResponse,
|
||||
}
|
||||
// 返回错误信息
|
||||
var result GetPrivacySettingResponse
|
||||
if err = util.DecodeWithError(response, &result, "getprivacysetting"); err != nil {
|
||||
return GetPrivacySettingResponse{}, err
|
||||
}
|
||||
|
||||
return result, nil
|
||||
err = util.DecodeWithError(response, &result, "getprivacysetting")
|
||||
return result, err
|
||||
}
|
||||
|
||||
// SetPrivacySetting 更新小程序权限配置
|
||||
@@ -130,11 +127,7 @@ func (s *Privacy) SetPrivacySetting(privacyVer int, ownerSetting OwnerSetting, s
|
||||
}
|
||||
|
||||
// 返回错误信息
|
||||
if err = util.DecodeWithCommonError(response, "setprivacysetting"); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return err
|
||||
return util.DecodeWithCommonError(response, "setprivacysetting")
|
||||
}
|
||||
|
||||
// UploadPrivacyExtFileResponse 上传权限定义模板响应参数
|
||||
@@ -159,9 +152,6 @@ func (s *Privacy) UploadPrivacyExtFile(fileData []byte) (UploadPrivacyExtFileRes
|
||||
|
||||
// 返回错误信息
|
||||
var result UploadPrivacyExtFileResponse
|
||||
if err = util.DecodeWithError(response, &result, "setprivacysetting"); err != nil {
|
||||
return UploadPrivacyExtFileResponse{}, err
|
||||
}
|
||||
|
||||
err = util.DecodeWithError(response, &result, "setprivacysetting")
|
||||
return result, err
|
||||
}
|
||||
|
||||
59
miniprogram/redpacketcover/redpacketcover.go
Normal file
59
miniprogram/redpacketcover/redpacketcover.go
Normal file
@@ -0,0 +1,59 @@
|
||||
package redpacketcover
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/silenceper/wechat/v2/miniprogram/context"
|
||||
"github.com/silenceper/wechat/v2/util"
|
||||
)
|
||||
|
||||
const (
|
||||
getRedPacketCoverURL = "https://api.weixin.qq.com/redpacketcover/wxapp/cover_url/get_by_token?access_token=%s"
|
||||
)
|
||||
|
||||
// RedPacketCover struct
|
||||
type RedPacketCover struct {
|
||||
*context.Context
|
||||
}
|
||||
|
||||
// NewRedPacketCover 实例
|
||||
func NewRedPacketCover(context *context.Context) *RedPacketCover {
|
||||
redPacketCover := new(RedPacketCover)
|
||||
redPacketCover.Context = context
|
||||
return redPacketCover
|
||||
}
|
||||
|
||||
// GetRedPacketCoverRequest 获取微信红包封面参数
|
||||
type GetRedPacketCoverRequest struct {
|
||||
// openid 可领取用户的openid
|
||||
OpenID string `json:"openid"`
|
||||
// ctoken 在红包封面平台获取发放ctoken(需要指定可以发放的appid)
|
||||
CToken string `json:"ctoken"`
|
||||
}
|
||||
|
||||
// GetRedPacketCoverResp 获取微信红包封面
|
||||
type GetRedPacketCoverResp struct {
|
||||
util.CommonError
|
||||
Data struct {
|
||||
URL string `json:"url"`
|
||||
} `json:"data"` // 唯一请求标识
|
||||
}
|
||||
|
||||
// GetRedPacketCoverURL 获得指定用户可以领取的红包封面链接。获取参数ctoken参考微信红包封面开放平台
|
||||
// 文档地址: https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/red-packet-cover/getRedPacketCoverUrl.html
|
||||
func (cover *RedPacketCover) GetRedPacketCoverURL(coderParams GetRedPacketCoverRequest) (res GetRedPacketCoverResp, err error) {
|
||||
accessToken, err := cover.GetAccessToken()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
uri := fmt.Sprintf(getRedPacketCoverURL, accessToken)
|
||||
response, err := util.PostJSON(uri, coderParams)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
// 使用通用方法返回错误
|
||||
err = util.DecodeWithError(response, &res, "GetRedPacketCoverURL")
|
||||
return
|
||||
}
|
||||
@@ -51,12 +51,7 @@ func (security *Security) MediaCheckAsyncV1(in *MediaCheckAsyncV1Request) (trace
|
||||
TraceID string `json:"trace_id"`
|
||||
}
|
||||
err = util.DecodeWithError(response, &res, "MediaCheckAsyncV1")
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
traceID = res.TraceID
|
||||
return
|
||||
return res.TraceID, err
|
||||
}
|
||||
|
||||
// MediaCheckAsyncRequest 图片/音频异步校验请求参数
|
||||
@@ -93,12 +88,7 @@ func (security *Security) MediaCheckAsync(in *MediaCheckAsyncRequest) (traceID s
|
||||
TraceID string `json:"trace_id"`
|
||||
}
|
||||
err = util.DecodeWithError(response, &res, "MediaCheckAsync")
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
traceID = res.TraceID
|
||||
return
|
||||
return res.TraceID, err
|
||||
}
|
||||
|
||||
// ImageCheckV1 校验一张图片是否含有违法违规内容(同步)
|
||||
|
||||
@@ -60,11 +60,7 @@ func (shortLink *ShortLink) generate(shortLinkParams ShortLinker) (string, error
|
||||
// 使用通用方法返回错误
|
||||
var res resShortLinker
|
||||
err = util.DecodeWithError(response, &res, "GenerateShortLink")
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
return res.Link, nil
|
||||
return res.Link, err
|
||||
}
|
||||
|
||||
// GenerateShortLinkPermanent 生成永久 shortLink
|
||||
|
||||
@@ -168,11 +168,7 @@ func (s *Subscribe) Add(ShortID string, kidList []int, sceneDesc string) (templa
|
||||
}
|
||||
var result resSubscribeAdd
|
||||
err = util.DecodeWithError(response, &result, "AddSubscribe")
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
templateID = result.TemplateID
|
||||
return
|
||||
return result.TemplateID, err
|
||||
}
|
||||
|
||||
// Delete 删除私有模板
|
||||
|
||||
@@ -65,8 +65,5 @@ func (u *URLLink) Generate(params *ULParams) (string, error) {
|
||||
}
|
||||
var resp ULResult
|
||||
err = util.DecodeWithError(response, &resp, "URLLink.Generate")
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
return resp.URLLink, nil
|
||||
return resp.URLLink, err
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ type SchemeInfo struct {
|
||||
// https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/url-scheme/urlscheme.query.html#参数
|
||||
type resQueryScheme struct {
|
||||
// 通用错误
|
||||
*util.CommonError
|
||||
util.CommonError
|
||||
// scheme 配置
|
||||
SchemeInfo SchemeInfo `json:"scheme_info"`
|
||||
// 访问该链接的openid,没有用户访问过则为空字符串
|
||||
@@ -62,9 +62,5 @@ func (u *URLScheme) QueryScheme(querySchemeParams QueryScheme) (schemeInfo Schem
|
||||
// 使用通用方法返回错误
|
||||
var res resQueryScheme
|
||||
err = util.DecodeWithError(response, &res, "QueryScheme")
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
return res.SchemeInfo, res.VisitOpenid, nil
|
||||
return res.SchemeInfo, res.VisitOpenid, err
|
||||
}
|
||||
|
||||
@@ -78,8 +78,5 @@ func (u *URLScheme) Generate(params *USParams) (string, error) {
|
||||
}
|
||||
var resp USResult
|
||||
err = util.DecodeWithError(response, &resp, "URLScheme.Generate")
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
return resp.OpenLink, nil
|
||||
return resp.OpenLink, err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user