package alipay

import (
	"git.rosy.net.cn/baseapi/platformapi/alipayapi"
	"git.rosy.net.cn/jx-callback/business/auth2"
	"git.rosy.net.cn/jx-callback/business/auth2/authprovider"
	"git.rosy.net.cn/jx-callback/globals/api"
)

const (
	AuthType = "alipaycode"

	AuthKey = "GHp3ojlVYRRu2XID4FX2ew=="
)

type Auther struct {
	authprovider.DefAuther
}

var (
	AutherObj *Auther
)

func init() {
	AutherObj = new(Auther)
	auth2.RegisterAuther(AuthType, AutherObj)
}

func (a *Auther) VerifySecret(dummy, code string) (authBindEx *auth2.AuthBindEx, err error) {
	tokenInfo, err := api.AliPayAPI.SystemAuthToken(alipayapi.GrantTypeCode, code, "")
	if err == nil {
		//userInfo, err2 := api.AliPayAPI.UserInfoShare(tokenInfo.AccessToken)
		//if err = err2; err == nil {
		if authBindEx, err = a.UnionFindAuthBind(AuthType, api.AliPayAPI.GetAppID(), nil, tokenInfo.UserID, tokenInfo.AlipayUserID, tokenInfo); err == nil {
			authBindEx.AuthSecret = tokenInfo.AccessToken
			authBindEx.AuthSecret2 = tokenInfo.RefreshToken
		}
	}
	return authBindEx, err
}
