ArtisanCloud / PowerWeChat

PowerWechat是一款基于WeChat SDK for Golang,支持小程序、微信支付、企业微信、公众号等全微信生态
https://powerwechat.artisan-cloud.com
MIT License
1.36k stars 177 forks source link

常见问题解答: #111

Open WalleV opened 2 years ago

WalleV commented 2 years ago

V3支持“超时请求取消机制”

V3增加了context,可以通过context来控制timeout超时请求后,强制取消该词业务请求


// ------ 比如 强制取消获取部门列表接口 ------
ctx,cancel := context.WithTimeout(context.Background(), 1*time.Second)
dept,err := wechatWork.Department.List(ctx, id)

// ------ PowerLib中的单元测试 ------
func TestDataflow_WithContext(t *testing.T) {
    df := InitBaseDataflow()

    ctx, cancel := context.WithCancel(context.Background())

    done := make(chan struct{}, 1)

    go func() {
        time.Sleep(time.Second * 1)
        _, err := df.WithContext(ctx).Request()
        if !errors.Is(err, context.Canceled) {
            t.Error("cancel failed")
        }
        done <- struct{}{}
    }()

    cancel()
    select {
    case <-done:
    }
}

初始化报错 illegal base64 data at input byte 0

这个是由于Token和AESKey没有配置导致的,这个在公众号、企业微信配置里面都有这个参数,用来消息回调解密用。如果暂时不用消息解密,随便设置一个字符串进去即可。

例如:

officialAccount.NewOfficialAccount(&officialAccount.UserConfig{
    AppID:  conf.OffiAccount.AppID,     // 小程序、公众号或者企业微信的appid
    Secret: conf.OffiAccount.AppSecret, // 商户号 appID

    Token:  "xxx",
    AESKey: "xxx",

    ResponseType: os.Getenv("response_type"),
    Log: officialAccount.Log{
        Level: "debug",
        File:  "./wechat.log",
    },
    Cache:     cache,
    HttpDebug: true,
    Debug:     false,
    //"sandbox": true,
})
kakaisaname commented 1 year ago

不能随便设置AESKey和Token,随便设置会报错