| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- package server
- import (
- "encoding/json"
- "github.com/shopspring/decimal"
- "github.com/spf13/viper"
- "go_zh/pkg/http"
- "sync"
- )
- type WeChatServer struct {
- MchId string
- PrivateKey string
- CertFile string
- KeyFile string
- AppId string
- AppSecret string
- AppletId string
- AppletKey string
- }
- type AppletsOpenData struct {
- Errormsg string `json:"errmsg"`
- Errorcode int `json:"errcode"`
- Unionid string `json:"unionid"`
- SessionKey string `json:"session_key"`
- Openid string `json:"openid"`
- }
- var (
- weChatServerInstance *WeChatServer
- weChatServerOnce sync.Once
- )
- // GetWeChatServerInstance 获取单例实例
- func GetWeChatServerInstance() *WeChatServer {
- weChatServerOnce.Do(func() {
- weChatServerInstance = &WeChatServer{
- MchId: viper.GetString("weChat.mchId"),
- PrivateKey: viper.GetString("weChat.privateKey"),
- CertFile: viper.GetString("weChat.certFile"),
- KeyFile: viper.GetString("weChat.keyFile"),
- AppId: viper.GetString("weChat.appId"),
- AppSecret: viper.GetString("weChat.appSecret"),
- AppletId: viper.GetString("weChat.appletId"),
- AppletKey: viper.GetString("weChat.appletKey"),
- }
- })
- return weChatServerInstance
- }
- // GetAppletsOpenId 微信小程序获取登录openId
- func (wx *WeChatServer) GetAppletsOpenId(code string) (AppletsOpenData, error) {
- url := "https://api.weixin.qq.com/sns/jscode2session"
- //发起http get请求
- var appletsOpenRes AppletsOpenData
- requestData := http.RequestData{}
- err := requestData.ConstructRequest(url)
- if err != nil {
- return appletsOpenRes, err
- }
- requestData.SetData("grant_type", "authorization_code")
- requestData.SetData("appid", wx.AppletId)
- requestData.SetData("secret", wx.AppletKey)
- requestData.SetData("js_code", code)
- ret, err := requestData.GetRequest()
- _ = json.Unmarshal(ret, &appletsOpenRes)
- return appletsOpenRes, nil
- }
- func (wx *WeChatServer) WeChatJsPay(orderSn string, payMoney decimal.Decimal, notifyUrl string, boby string, wxOpenid string) {
- }
|