Skip to content

muzimu/wechat-sdk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

微信服务端sdk

官方文档

针对微信小游戏,封装了自带access-token缓存的客户端,支持登录会话管理和订阅消息。

快速使用

import (
    "github.com/muzimu/wechat-sdk/cache"
    "github.com/muzimu/wechat-sdk/client"
    "github.com/muzimu/wechat-sdk/config"
)

func main() {
    // 创建配置
    cfg := &config.Config{
        AppID:     "your_app_id",
        AppSecret: "your_app_secret",
        Cache:     cache.NewMemory(), // 使用内置内存缓存
    }

    // 创建客户端
    cli := client.NewClient(cfg)

    // ========== 登录会话管理 ==========
    auth := cli.GetAuth()

    // 登录凭证校验(客户端 wx.login() 获取 code 后调用)
    res, err := auth.Code2Session("js_code")
    if err != nil {
        // 处理错误
    }
    // res.OpenID - 用户唯一标识
    // res.SessionKey - 会话密钥

    // 检验登录态
    err = auth.CheckSession("signature", "openid")

    // 重置登录态
    resetRes, err := auth.ResetUserSessionKey("signature", "openid")

    // ========== 订阅消息 ==========
    sub := cli.GetSubscribe()

    // 发送订阅消息
    msg := &subscribe.Message{
        ToUser:     "user_openid",
        TemplateID: "template_id",
        Page:       "pages/index/index",
        Data: map[string]*subscribe.DataItem{
            "thing1":  {Value: "订单内容"},
            "amount2": {Value: "100.00"},
        },
    }

    err = sub.Send(msg)
}

测试用例

测试位于 test/sdk_test.go,通过 .env 文件读取微信凭证与目标用户信息。

1. 准备 .env 文件

将仓库根目录下的 .env.example 复制为 .env

cp .env.example .env

2. 填入真实凭证

编辑 .env,替换以下字段:

字段 说明
WECHAT_APP_ID 小游戏 AppID
WECHAT_APP_SECRET 小游戏 AppSecret
WECHAT_TO_USER 接收订阅消息的用户 OpenID
WECHAT_TEMPLATE_ID 订阅消息模板 ID
WECHAT_JS_CODE 登录测试用,来自客户端 wx.login()
WECHAT_SIGNATURE 登录态测试用,签名
WECHAT_OPEN_ID 登录态测试用,用户 OpenID

.env 已被 .gitignore 排除,不会被提交到版本库。

3. 运行测试

# 运行全部测试
go test ./test/...

# 只运行登录凭证校验测试
go test -v -run TestCode2Session ./test/...

# 只运行检验登录态测试
go test -v -run TestCheckSession ./test/...

# 只运行重置登录态测试
go test -v -run TestResetUserSessionKey ./test/...

# 只运行订阅消息发送测试
go test -v -run TestSend ./test/...

# 只运行模板列表查询测试
go test -v -run TestGetTemplateList ./test/...

若未配置对应环境变量,测试会自动跳过而不是失败,便于在 CI 中按需启用。

About

微信小游戏 服务端sdk 支持推送订阅消息、查询消息模板列表

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages