- 兼容一个新的微信小程序
This commit is contained in:
@@ -4,6 +4,7 @@ import (
|
|||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
"errors"
|
"errors"
|
||||||
|
|
||||||
|
"git.rosy.net.cn/baseapi/platformapi/weixinapi"
|
||||||
"git.rosy.net.cn/jx-callback/business/auth2"
|
"git.rosy.net.cn/jx-callback/business/auth2"
|
||||||
"git.rosy.net.cn/jx-callback/business/auth2/authprovider"
|
"git.rosy.net.cn/jx-callback/business/auth2/authprovider"
|
||||||
"git.rosy.net.cn/jx-callback/globals"
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
@@ -30,7 +31,7 @@ func init() {
|
|||||||
func (a *MiniAuther) VerifySecret(dummy, jsCode string) (authBindEx *auth2.AuthBindEx, err error) {
|
func (a *MiniAuther) VerifySecret(dummy, jsCode string) (authBindEx *auth2.AuthBindEx, err error) {
|
||||||
globals.SugarLogger.Debugf("weixin mini VerifySecret jsCode:%s", jsCode)
|
globals.SugarLogger.Debugf("weixin mini VerifySecret jsCode:%s", jsCode)
|
||||||
|
|
||||||
sessionInfo, err := api.WeixinMiniAPI.SNSCode2Session(jsCode)
|
sessionInfo, err := ProxySNSCode2Session(jsCode)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
sessionKey := sessionInfo.SessionKey
|
sessionKey := sessionInfo.SessionKey
|
||||||
sessionInfo.SessionKey = ""
|
sessionInfo.SessionKey = ""
|
||||||
@@ -48,9 +49,25 @@ func (a *MiniAuther) DecryptData(authInfo *auth2.AuthInfo, encryptedData, iv str
|
|||||||
return "", ErrAuthTypeShouldBeMini
|
return "", ErrAuthTypeShouldBeMini
|
||||||
}
|
}
|
||||||
sessionKey := authInfo.AuthBindInfo.UserData.(string)
|
sessionKey := authInfo.AuthBindInfo.UserData.(string)
|
||||||
decryptedData, err := api.WeixinMiniAPI.SNSDecodeMiniProgramData(encryptedData, sessionKey, iv)
|
decryptedData, err := ProxySNSDecodeMiniProgramData(encryptedData, sessionKey, iv)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
return base64.StdEncoding.EncodeToString(decryptedData), nil
|
return base64.StdEncoding.EncodeToString(decryptedData), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ProxySNSCode2Session(jsCode string) (sessionInfo *weixinapi.SessionInfo, err error) {
|
||||||
|
sessionInfo, err = api.WeixinMiniAPI.SNSCode2Session(jsCode)
|
||||||
|
if err != nil && api.WeixinMiniAPI2 != nil {
|
||||||
|
sessionInfo, err = api.WeixinMiniAPI2.SNSCode2Session(jsCode)
|
||||||
|
}
|
||||||
|
return sessionInfo, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func ProxySNSDecodeMiniProgramData(encryptedData, sessionKey, iv string) (decryptedData []byte, err error) {
|
||||||
|
decryptedData, err = api.WeixinMiniAPI.SNSDecodeMiniProgramData(encryptedData, sessionKey, iv)
|
||||||
|
if err != nil && api.WeixinMiniAPI2 != nil {
|
||||||
|
decryptedData, err = api.WeixinMiniAPI2.SNSDecodeMiniProgramData(encryptedData, sessionKey, iv)
|
||||||
|
}
|
||||||
|
return decryptedData, err
|
||||||
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import (
|
|||||||
|
|
||||||
"git.rosy.net.cn/baseapi/platformapi/weixinapi"
|
"git.rosy.net.cn/baseapi/platformapi/weixinapi"
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
|
weixin2 "git.rosy.net.cn/jx-callback/business/auth2/authprovider/weixin"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxcallback/auth"
|
"git.rosy.net.cn/jx-callback/business/jxcallback/auth"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxcallback/auth/mobile"
|
"git.rosy.net.cn/jx-callback/business/jxcallback/auth/mobile"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||||
@@ -185,7 +186,7 @@ func (a *AutherMiniProgram) BindWeiXin(ctx *jxcontext.Context, code, nickName st
|
|||||||
if loginInfo == nil || loginInfo.GetAuthType() != mobile.LoginType {
|
if loginInfo == nil || loginInfo.GetAuthType() != mobile.LoginType {
|
||||||
return fmt.Errorf("调用AutherMiniProgram BindWeiXin时,必须以手机验证方式登录")
|
return fmt.Errorf("调用AutherMiniProgram BindWeiXin时,必须以手机验证方式登录")
|
||||||
}
|
}
|
||||||
sessionInfo, err := api.WeixinMiniAPI.SNSCode2Session(code)
|
sessionInfo, err := weixin2.ProxySNSCode2Session(code)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -199,7 +200,7 @@ func (a *AutherMiniProgram) BindMiniProgram(ctx *jxcontext.Context, code string)
|
|||||||
if ctx.GetLoginType() != mobile.LoginType {
|
if ctx.GetLoginType() != mobile.LoginType {
|
||||||
return errors.New("登录方式应该为手机")
|
return errors.New("登录方式应该为手机")
|
||||||
}
|
}
|
||||||
sessionInfo, err := api.WeixinMiniAPI.SNSCode2Session(code)
|
sessionInfo, err := weixin2.ProxySNSCode2Session(code)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -217,7 +218,7 @@ func (a *AutherMiniProgram) BindMiniProgram(ctx *jxcontext.Context, code string)
|
|||||||
|
|
||||||
func (a *AutherMiniProgram) Login(mobileNum, code string) (userID, LoginType string, err error) {
|
func (a *AutherMiniProgram) Login(mobileNum, code string) (userID, LoginType string, err error) {
|
||||||
globals.SugarLogger.Debugf("AutherMiniProgram Login mobileNum:%s, code:%s", mobileNum, code)
|
globals.SugarLogger.Debugf("AutherMiniProgram Login mobileNum:%s, code:%s", mobileNum, code)
|
||||||
sessionInfo, err := api.WeixinMiniAPI.SNSCode2Session(code)
|
sessionInfo, err := weixin2.ProxySNSCode2Session(code)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", "", err
|
return "", "", err
|
||||||
}
|
}
|
||||||
@@ -246,7 +247,7 @@ func (a *AutherMiniProgram) DecryptData(ctx *jxcontext.Context, encryptedData, i
|
|||||||
if err = api.Cacher.GetAs(composeSessionKeyCacheKey(ctx.GetLoginInfo().GetAuthID()), &sessionKey); err != nil {
|
if err = api.Cacher.GetAs(composeSessionKeyCacheKey(ctx.GetLoginInfo().GetAuthID()), &sessionKey); err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
decryptedData, err := api.WeixinMiniAPI.SNSDecodeMiniProgramData(encryptedData, sessionKey, iv)
|
decryptedData, err := weixin2.ProxySNSDecodeMiniProgramData(encryptedData, sessionKey, iv)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -140,6 +140,8 @@ dadaSourceID = "6660"
|
|||||||
|
|
||||||
weixinAppID = "wx2bb99eb5d2c9b82c"
|
weixinAppID = "wx2bb99eb5d2c9b82c"
|
||||||
weixinSecret = "6bbbed1443cc062c20a015a64c07a531"
|
weixinSecret = "6bbbed1443cc062c20a015a64c07a531"
|
||||||
|
weixinMiniAppID2 = "wx08a5c2a8581414ff"
|
||||||
|
weixinMiniSecret2 = "e7ec67c86cbd4dfa531af7af7533cdc9"
|
||||||
|
|
||||||
dbConnectStr = "root:WebServer@1@tcp(db1.int.jxc4.com:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true"
|
dbConnectStr = "root:WebServer@1@tcp(db1.int.jxc4.com:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true"
|
||||||
|
|
||||||
@@ -302,6 +304,9 @@ dadaSourceID = "6660"
|
|||||||
|
|
||||||
weixinAppID = "wx2bb99eb5d2c9b82c"
|
weixinAppID = "wx2bb99eb5d2c9b82c"
|
||||||
weixinSecret = "6bbbed1443cc062c20a015a64c07a531"
|
weixinSecret = "6bbbed1443cc062c20a015a64c07a531"
|
||||||
|
weixinMiniAppID2 = "wx08a5c2a8581414ff"
|
||||||
|
weixinMiniSecret2 = "e7ec67c86cbd4dfa531af7af7533cdc9"
|
||||||
|
|
||||||
getWeixinTokenURL = "http://www.jxc4.com/v2/sys/GetWXToken"
|
getWeixinTokenURL = "http://www.jxc4.com/v2/sys/GetWXToken"
|
||||||
|
|
||||||
dbConnectStr = "root:WebServer@1@tcp(127.0.0.1:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true"
|
dbConnectStr = "root:WebServer@1@tcp(127.0.0.1:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true"
|
||||||
|
|||||||
@@ -27,15 +27,16 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
JdAPI *jdapi.API
|
JdAPI *jdapi.API
|
||||||
ElmAPI *elmapi.API
|
ElmAPI *elmapi.API
|
||||||
EbaiAPI *ebaiapi.API
|
EbaiAPI *ebaiapi.API
|
||||||
MtpsAPI *mtpsapi.API
|
MtpsAPI *mtpsapi.API
|
||||||
DadaAPI *dadaapi.API
|
DadaAPI *dadaapi.API
|
||||||
MtwmAPI *mtwmapi.API
|
MtwmAPI *mtwmapi.API
|
||||||
WeixinAPI *weixinapi.API // 微信公众号
|
WeixinAPI *weixinapi.API // 微信公众号
|
||||||
WeixinMiniAPI *weixinapi.API // 小程序
|
WeixinMiniAPI *weixinapi.API // 小程序
|
||||||
WeixinPageAPI *weixinapi.API // 用户微信扫码登录
|
WeixinMiniAPI2 *weixinapi.API // 小程序2
|
||||||
|
WeixinPageAPI *weixinapi.API // 用户微信扫码登录
|
||||||
|
|
||||||
AutonaviAPI *autonavi.API
|
AutonaviAPI *autonavi.API
|
||||||
QiniuAPI *qbox.Mac
|
QiniuAPI *qbox.Mac
|
||||||
@@ -124,6 +125,9 @@ func Init() {
|
|||||||
WeimobAPI = nil
|
WeimobAPI = nil
|
||||||
}
|
}
|
||||||
WeixinMiniAPI = weixinapi.New(beego.AppConfig.String("weixinMiniAppID"), beego.AppConfig.String("weixinMiniSecret"))
|
WeixinMiniAPI = weixinapi.New(beego.AppConfig.String("weixinMiniAppID"), beego.AppConfig.String("weixinMiniSecret"))
|
||||||
|
if weixinMiniAppID2 := beego.AppConfig.String("weixinMiniAppID2"); weixinMiniAppID2 != "" {
|
||||||
|
WeixinMiniAPI2 = weixinapi.New(weixinMiniAppID2, beego.AppConfig.String("weixinMiniSecret2"))
|
||||||
|
}
|
||||||
WeixinPageAPI = weixinapi.New(beego.AppConfig.String("weixinPageAppID"), beego.AppConfig.String("weixinPageSecret"))
|
WeixinPageAPI = weixinapi.New(beego.AppConfig.String("weixinPageAppID"), beego.AppConfig.String("weixinPageSecret"))
|
||||||
|
|
||||||
AutonaviAPI = autonavi.New(beego.AppConfig.String("autonaviKey"))
|
AutonaviAPI = autonavi.New(beego.AppConfig.String("autonaviKey"))
|
||||||
|
|||||||
Reference in New Issue
Block a user