mirror of
https://github.com/silenceper/wechat.git
synced 2026-02-23 13:42:25 +08:00
MOD 修改为统一错误方法
This commit is contained in:
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user