Skip to content

Commit

Permalink
添加小程序获取红包封面接口 (#760)
Browse files Browse the repository at this point in the history
* ADD 获取红包封面

* Update redpacketcover.go

* MOD 修改为统一错误方法

* Update go.yml
  • Loading branch information
ren-jimmy authored Jan 12, 2024
1 parent 5b29289 commit 7fcd7a3
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 1 deletion.
2 changes: 1 addition & 1 deletion .github/workflows/go.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ jobs:
golangci:
strategy:
matrix:
go-version: [ '1.16','1.17','1.18','1.19','1.20','1.21.4' ]
go-version: [ '1.16','1.17','1.18','1.19','1.20','1.21.4' ]
name: golangci-lint
runs-on: ubuntu-latest
steps:
Expand Down
6 changes: 6 additions & 0 deletions miniprogram/miniprogram.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -155,3 +156,8 @@ 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)
}
59 changes: 59 additions & 0 deletions miniprogram/redpacketcover/redpacketcover.go
Original file line number Diff line number Diff line change
@@ -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
}

0 comments on commit 7fcd7a3

Please sign in to comment.