1
0
mirror of https://github.com/silenceper/wechat.git synced 2026-02-23 13:42:25 +08:00

MOD 修改为统一错误方法

This commit is contained in:
ren-jimmy
2023-12-28 16:11:33 +08:00
parent bce303e3bd
commit 8985807e75

View File

@@ -1,9 +1,7 @@
package redpacketcover package redpacketcover
import ( import (
"encoding/json"
"fmt" "fmt"
"strings"
"github.com/silenceper/wechat/v2/miniprogram/context" "github.com/silenceper/wechat/v2/miniprogram/context"
"github.com/silenceper/wechat/v2/util" "github.com/silenceper/wechat/v2/util"
@@ -25,45 +23,37 @@ func NewRedPacketCover(context *context.Context) *RedPacketCover {
return redPacketCover return redPacketCover
} }
// CoverParma 小程序码参数 // GetRedPacketCoverRequest 获取微信红包封面参数
type CoverParma struct { type GetRedPacketCoverRequest struct {
// openid 可领取用户的openid // openid 可领取用户的openid
OpenID string `json:"openid"` OpenID string `json:"openid"`
// ctoken 在红包封面平台获取发放ctoken需要指定可以发放的appid // ctoken 在红包封面平台获取发放ctoken需要指定可以发放的appid
CToken string `json:"ctoken"` CToken string `json:"ctoken"`
} }
// fetchCode 请求并返回二维码二进制数据 // GetRedPacketCoverResp 获取微信红包封面
func (qrCode *RedPacketCover) fetchCode(urlStr string, body interface{}) (response []byte, err error) { type GetRedPacketCoverResp struct {
var accessToken string util.CommonError
accessToken, err = qrCode.GetAccessToken() Data struct {
if err != nil { URL string `json:"url"`
return } `json:"data"` // 唯一请求标识
}
urlStr = fmt.Sprintf(urlStr, accessToken)
var contentType string
response, contentType, err = util.PostJSONWithRespContentType(urlStr, body)
if err != nil {
return
}
if strings.HasPrefix(contentType, "application/json") {
// 返回错误信息
var result util.CommonError
err = json.Unmarshal(response, &result)
if err == nil && result.ErrCode != 0 {
err = fmt.Errorf("error : errcode=%v , errmsg=%v", result.ErrCode, result.ErrMsg)
return nil, err
}
return response, nil
}
err = fmt.Errorf("error : unknown response content type - %v", contentType)
return nil, err
} }
// GetRedPacketCoverURL 获得指定用户可以领取的红包封面链接。获取参数ctoken参考微信红包封面开放平台 // GetRedPacketCoverURL 获得指定用户可以领取的红包封面链接。获取参数ctoken参考微信红包封面开放平台
// 文档地址: https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/red-packet-cover/getRedPacketCoverUrl.html // 文档地址: https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/red-packet-cover/getRedPacketCoverUrl.html
func (qrCode *RedPacketCover) GetRedPacketCoverURL(coderParams CoverParma) (response []byte, err error) { func (cover *RedPacketCover) GetRedPacketCoverURL(coderParams GetRedPacketCoverRequest) (res GetRedPacketCoverResp, err error) {
return qrCode.fetchCode(getRedPacketCoverURL, coderParams) 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
} }