| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- package js
- import (
- "fmt"
- "github.com/silenceper/wechat/v2/credential"
- "github.com/silenceper/wechat/v2/officialaccount/context"
- officialJs "github.com/silenceper/wechat/v2/officialaccount/js"
- "github.com/silenceper/wechat/v2/util"
- )
- // Js wx jssdk
- type Js struct {
- *context.Context
- credential.JsTicketHandle
- }
- // NewJs init
- func NewJs(context *context.Context, appID string) *Js {
- js := new(Js)
- js.Context = context
- jsTicketHandle := credential.NewDefaultJsTicket(appID, credential.CacheKeyOfficialAccountPrefix, context.Cache)
- js.SetJsTicketHandle(jsTicketHandle)
- return js
- }
- // SetJsTicketHandle 自定义 js ticket 取值方式
- func (js *Js) SetJsTicketHandle(ticketHandle credential.JsTicketHandle) {
- js.JsTicketHandle = ticketHandle
- }
- // GetConfig 第三方平台 - 获取 jssdk 需要的配置参数
- // uri 为当前网页地址
- func (js *Js) GetConfig(uri, appid string) (config *officialJs.Config, err error) {
- config = new(officialJs.Config)
- var accessToken string
- accessToken, err = js.GetAccessToken()
- if err != nil {
- return
- }
- var ticketStr string
- ticketStr, err = js.GetTicket(accessToken)
- if err != nil {
- return
- }
- nonceStr := util.RandomStr(16)
- timestamp := util.GetCurrTS()
- str := fmt.Sprintf("jsapi_ticket=%s&noncestr=%s×tamp=%d&url=%s", ticketStr, nonceStr, timestamp, uri)
- sigStr := util.Signature(str)
- config.AppID = appid
- config.NonceStr = nonceStr
- config.Timestamp = timestamp
- config.Signature = sigStr
- return
- }
|