Ver código fonte

add AlipayOpenAuthTokenApp

Jerry 6 anos atrás
pai
commit
f8eba08521
2 arquivos alterados com 66 adições e 6 exclusões
  1. 38 6
      alipay_client.go
  2. 28 0
      alipay_rsp.go

+ 38 - 6
alipay_client.go

@@ -97,7 +97,7 @@ func (this *aliPayClient) AliPayTradeCreate(body BodyMap) (aliRsp *AliPayTradeCr
 	if err != nil {
 	if err != nil {
 		return nil, err
 		return nil, err
 	}
 	}
-	//log.Println("AliPayTradeCreateResponse::::", string(convertBytes))
+	//log.Println("AliPayTradeCreateResponse::::", string(bytes))
 	aliRsp = new(AliPayTradeCreateResponse)
 	aliRsp = new(AliPayTradeCreateResponse)
 	err = json.Unmarshal(bytes, aliRsp)
 	err = json.Unmarshal(bytes, aliRsp)
 	if err != nil {
 	if err != nil {
@@ -226,7 +226,7 @@ func (this *aliPayClient) AliPayTradePrecreate(body BodyMap) (aliRsp *AlipayTrad
 	if err != nil {
 	if err != nil {
 		return nil, err
 		return nil, err
 	}
 	}
-	//log.Println("AlipayTradePrecreateResponse::::", string(convertBytes))
+	//log.Println("AlipayTradePrecreateResponse::::", string(bytes))
 	aliRsp = new(AlipayTradePrecreateResponse)
 	aliRsp = new(AlipayTradePrecreateResponse)
 	err = json.Unmarshal(bytes, aliRsp)
 	err = json.Unmarshal(bytes, aliRsp)
 	if err != nil {
 	if err != nil {
@@ -361,7 +361,7 @@ func (this *aliPayClient) AlipayFundTransToaccountTransfer(body BodyMap) (aliRsp
 	if err != nil {
 	if err != nil {
 		return nil, err
 		return nil, err
 	}
 	}
-	//log.Println("AlipayFundTransToaccountTransferResponse::::", string(convertBytes))
+	//log.Println("AlipayFundTransToaccountTransferResponse::::", string(bytes))
 	aliRsp = new(AlipayFundTransToaccountTransferResponse)
 	aliRsp = new(AlipayFundTransToaccountTransferResponse)
 	err = json.Unmarshal(bytes, aliRsp)
 	err = json.Unmarshal(bytes, aliRsp)
 	if err != nil {
 	if err != nil {
@@ -381,7 +381,7 @@ func (this *aliPayClient) AliPayTradeOrderinfoSync(body BodyMap) {
 }
 }
 
 
 //alipay.system.oauth.token(换取授权访问令牌)
 //alipay.system.oauth.token(换取授权访问令牌)
-//    文档地址:https://docs.open.alipay.com/api_9/alipay.system.oauth.token/
+//    文档地址:https://docs.open.alipay.com/api_9/alipay.system.oauth.token
 func (this *aliPayClient) AliPaySystemOauthToken(body BodyMap) (aliRsp *AliPaySystemOauthTokenResponse, err error) {
 func (this *aliPayClient) AliPaySystemOauthToken(body BodyMap) (aliRsp *AliPaySystemOauthTokenResponse, err error) {
 	var bytes []byte
 	var bytes []byte
 	grantType := body.Get("grant_type")
 	grantType := body.Get("grant_type")
@@ -398,7 +398,7 @@ func (this *aliPayClient) AliPaySystemOauthToken(body BodyMap) (aliRsp *AliPaySy
 	if err != nil {
 	if err != nil {
 		return nil, err
 		return nil, err
 	}
 	}
-	//log.Println("AliPaySystemOauthToken::::", string(convertBytes))
+	//log.Println("AliPaySystemOauthToken::::", string(bytes))
 	aliRsp = new(AliPaySystemOauthTokenResponse)
 	aliRsp = new(AliPaySystemOauthTokenResponse)
 	err = json.Unmarshal(bytes, aliRsp)
 	err = json.Unmarshal(bytes, aliRsp)
 	if err != nil {
 	if err != nil {
@@ -411,6 +411,38 @@ func (this *aliPayClient) AliPaySystemOauthToken(body BodyMap) (aliRsp *AliPaySy
 	return aliRsp, nil
 	return aliRsp, nil
 }
 }
 
 
+//alipay.open.auth.token.app(换取应用授权令牌)
+//    文档地址:https://docs.open.alipay.com/api_9/alipay.open.auth.token.app
+func (this *aliPayClient) AlipayOpenAuthTokenApp(body BodyMap) (aliRsp *AlipayOpenAuthTokenAppResponse, err error) {
+	var bs []byte
+	grantType := body.Get("grant_type")
+	if grantType == null {
+		return nil, errors.New("grant_type is not allowed to be null")
+	}
+	code := body.Get("code")
+	refreshToken := body.Get("refresh_token")
+	if code == null && refreshToken == null {
+		return nil, errors.New("code and refresh_token are not allowed to be null at the same time")
+	}
+
+	bs, err = this.doAliPay(body, "alipay.open.auth.token.app")
+	if err != nil {
+		return nil, err
+	}
+	//log.Println("AlipayOpenAuthTokenApp::::", string(bs))
+	aliRsp = new(AlipayOpenAuthTokenAppResponse)
+	err = json.Unmarshal(bs, aliRsp)
+	if err != nil {
+		return nil, err
+	}
+	if aliRsp.AlipayOpenAuthTokenAppResponse.Code != "10000" {
+		info := aliRsp.AlipayOpenAuthTokenAppResponse
+		return nil, fmt.Errorf(`{"code":"%v","msg":"%v","sub_code":"%v","sub_msg":"%v"}`, info.Code, info.Msg, info.SubCode, info.SubMsg)
+	}
+	return aliRsp, nil
+
+}
+
 //zhima.credit.score.get(芝麻分)
 //zhima.credit.score.get(芝麻分)
 //    文档地址:https://docs.open.alipay.com/api_8/zhima.credit.score.get
 //    文档地址:https://docs.open.alipay.com/api_8/zhima.credit.score.get
 func (this *aliPayClient) ZhimaCreditScoreGet(body BodyMap) (aliRsp *ZhimaCreditScoreGetResponse, err error) {
 func (this *aliPayClient) ZhimaCreditScoreGet(body BodyMap) (aliRsp *ZhimaCreditScoreGetResponse, err error) {
@@ -428,7 +460,7 @@ func (this *aliPayClient) ZhimaCreditScoreGet(body BodyMap) (aliRsp *ZhimaCredit
 	if err != nil {
 	if err != nil {
 		return nil, err
 		return nil, err
 	}
 	}
-	//log.Println("ZhimaCreditScoreGet::::", string(convertBytes))
+	//log.Println("ZhimaCreditScoreGet::::", string(bytes))
 	aliRsp = new(ZhimaCreditScoreGetResponse)
 	aliRsp = new(ZhimaCreditScoreGetResponse)
 	err = json.Unmarshal(bytes, aliRsp)
 	err = json.Unmarshal(bytes, aliRsp)
 	if err != nil {
 	if err != nil {

+ 28 - 0
alipay_rsp.go

@@ -308,3 +308,31 @@ type scoreGetResponse struct {
 	BizNo   string `json:"biz_no,omitempty"`
 	BizNo   string `json:"biz_no,omitempty"`
 	ZmScore string `json:"zm_score,omitempty"`
 	ZmScore string `json:"zm_score,omitempty"`
 }
 }
+
+type AlipayOpenAuthTokenAppResponse struct {
+	AlipayOpenAuthTokenAppResponse authTokenAppResponse `json:"alipay_open_auth_token_app_response"`
+	Sign                           string               `json:"sign"`
+}
+
+type authTokenAppResponse struct {
+	Code            string      `json:"code,omitempty"`
+	Msg             string      `json:"msg,omitempty"`
+	SubCode         string      `json:"sub_code,omitempty"`
+	SubMsg          string      `json:"sub_msg,omitempty"`
+	UserId          string      `json:"user_id,omitempty"`
+	AuthAppId       string      `json:"auth_app_id,omitempty"`
+	AppAuthToken    string      `json:"app_auth_token,omitempty"`
+	AppRefreshToken string      `json:"app_refresh_token,omitempty"`
+	ExpiresIn       int         `json:"expires_in,omitempty"`
+	ReExpiresIn     int         `json:"re_expires_in,omitempty"`
+	Tokens          []tokenInfo `json:"tokens,omitempty"`
+}
+
+type tokenInfo struct {
+	AppAuthToken    string `json:"app_auth_token,omitempty"`
+	AppRefreshToken string `json:"app_refresh_token,omitempty"`
+	AuthAppId       string `json:"auth_app_id,omitempty"`
+	ExpiresIn       int    `json:"expires_in,omitempty"`
+	ReExpiresIn     int    `json:"re_expires_in,omitempty"`
+	UserId          string `json:"user_id,omitempty"`
+}