97 lines
3.0 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* @desc:微信小程序接口
* @company:云南奇讯科技有限公司
* @Author: yixiaohu<yxh669@qq.com>
* @Date: 2023/3/22 9:08
*/
package wechat
import (
"context"
"github.com/ArtisanCloud/PowerWeChat/v3/src/kernel"
"github.com/ArtisanCloud/PowerWeChat/v3/src/miniProgram"
"github.com/ArtisanCloud/PowerWeChat/v3/src/miniProgram/auth/response"
phoneNumberResp "github.com/ArtisanCloud/PowerWeChat/v3/src/miniProgram/phoneNumber/response"
"github.com/ArtisanCloud/PowerWeChat/v3/src/miniProgram/urlLink/request"
wxlinkResp "github.com/ArtisanCloud/PowerWeChat/v3/src/miniProgram/urlLink/response"
"github.com/gogf/gf/v2/errors/gerror"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gctx"
"github.com/tiger1103/gfast/v3/internal/app/wechat/service"
)
func init() {
service.RegisterWechat(New())
}
func New() service.IWechat {
var (
ctx = gctx.New()
cfg = g.Cfg("wechat")
)
miniProgramApp, err := miniProgram.NewMiniProgram(&miniProgram.UserConfig{
AppID: cfg.MustGet(ctx, "wechat.AppID").String(), // 小程序appid
Secret: cfg.MustGet(ctx, "wechat.Secret").String(), // 小程序app secret
HttpDebug: cfg.MustGet(ctx, "wechat.HttpDebug").Bool(),
AESKey: cfg.MustGet(ctx, "wechat.AesKey").String(),
Log: miniProgram.Log{
Level: cfg.MustGet(ctx, "wechat.Log.Leave").String(),
File: cfg.MustGet(ctx, "wechat.Log.File").String(),
Error: cfg.MustGet(ctx, "wechat.Log.Error").String(),
},
// 可选,不传默认走程序内存
Cache: kernel.NewRedisClient(&kernel.RedisOptions{
Addr: cfg.MustGet(ctx, "wechat.Cache.Addr").String(),
Password: cfg.MustGet(ctx, "wechat.Cache.Password").String(),
DB: cfg.MustGet(ctx, "wechat.Cache.DB").Int(),
}),
})
if err != nil {
panic(err)
}
return &sWechat{
miniProgramApp: miniProgramApp,
}
}
type sWechat struct {
miniProgramApp *miniProgram.MiniProgram
}
func (s *sWechat) Session(ctx context.Context, code string) (data *response.ResponseCode2Session, err error) {
data, err = s.miniProgramApp.Auth.Session(ctx, code)
return
}
func (s *sWechat) GetUserPhoneNumber(ctx context.Context, code string) (data *phoneNumberResp.ResponseGetUserPhoneNumber, err error) {
data, err = s.miniProgramApp.PhoneNumber.GetUserPhoneNumber(ctx, code)
return
}
// IsDebug 是否开发调试模式
func (s *sWechat) IsDebug(ctx context.Context) bool {
debug := g.Cfg("wechat").MustGet(ctx, "wechat.isDebug").Bool()
debug2 := g.Cfg("wechat").MustGet(ctx, "wechat.isDebug2").Bool()
return debug || debug2
}
func (s *sWechat) GetWxUrl(ctx context.Context) (url string, err error) {
var res *wxlinkResp.ResponseURLLinkGenerate
res, err = s.miniProgramApp.URLLink.Generate(ctx, &request.URLLinkGenerate{
EnvVersion: "release",
ExpireInterval: 1606737600,
Path: "pages/index/index",
Query: "",
})
if err != nil {
return
}
if res.ErrMsg != "ok" {
err = gerror.New("获取小程序url失败err:" + res.ErrMsg + ",errCode:" + res.Code)
return
}
url = res.URLLink
return
}