Jerry il y a 6 ans
Parent
commit
eaffe1ecc5
6 fichiers modifiés avec 100 ajouts et 4 suppressions
  1. 27 0
      alipay/client.go
  2. 18 3
      alipay/client_test.go
  3. 13 0
      alipay/model.go
  4. 1 1
      constant.go
  5. 35 0
      examples/alipay/alipay_UserInfoAuth.go
  6. 6 0
      release_note.txt

+ 27 - 0
alipay/client.go

@@ -583,6 +583,33 @@ func (a *Client) UserCertifyOpenQuery(bm gopay.BodyMap) (aliRsp *UserCertifyOpen
 	return aliRsp, nil
 }
 
+// alipay.user.info.auth(用户登陆授权)
+//    文档地址:https://docs.open.alipay.com/api_9/alipay.user.info.auth
+func (a *Client) UserInfoAuth(bm gopay.BodyMap) (aliRsp *UserInfoAuthResponse, err error) {
+	err = bm.CheckEmptyError("scopes", "state")
+	if err != nil {
+		return nil, err
+	}
+
+	var bs []byte
+	if bs, err = a.doAliPay(bm, "alipay.user.info.auth"); err != nil {
+		return nil, err
+	}
+	if strings.Contains(string(bs), "<html>") || strings.Contains(string(bs), "<HTML>") {
+		return nil, errors.New(string(bs))
+	}
+	aliRsp = new(UserInfoAuthResponse)
+	if err = json.Unmarshal(bs, aliRsp); err != nil {
+		return nil, err
+	}
+	if aliRsp.Response != nil && aliRsp.Response.Code != "10000" {
+		info := aliRsp.Response
+		return nil, fmt.Errorf(`{"code":"%s","msg":"%s","sub_code":"%s","sub_msg":"%s"}`, info.Code, info.Msg, info.SubCode, info.SubMsg)
+	}
+	aliRsp.SignData = getSignData(bs)
+	return aliRsp, nil
+}
+
 // 向支付宝发送请求
 func (a *Client) doAliPay(bm gopay.BodyMap, method string) (bs []byte, err error) {
 	var (

+ 18 - 3
alipay/client_test.go

@@ -24,9 +24,9 @@ func TestMain(m *testing.M) {
 	client = NewClient(appid, privateKey, false)
 	// 配置公共参数
 	client.SetCharset("utf-8").
-		SetSignType("RSA2").
-		// SetReturnUrl("https://www.gopay.ink").
-		SetNotifyUrl("https://www.gopay.ink")
+		SetSignType("RSA2")
+	// SetReturnUrl("https://www.gopay.ink").
+	//SetNotifyUrl("https://www.gopay.ink")
 
 	// err := client.SetCertSnByPath("cert/appCertPublicKey.crt", "cert/alipayRootCert.crt", "cert/alipayCertPublicKey_RSA2.crt")
 	// if err != nil {
@@ -368,7 +368,22 @@ func TestClient_UserCertifyOpenQuery(t *testing.T) {
 	}
 	fmt.Println("aliRsp:", *aliRsp)
 	fmt.Println("aliRsp.Response.Passed:", aliRsp.Response.Passed)
+}
 
+func TestClient_UserInfoAuth(t *testing.T) {
+	// 请求参数
+	bm := make(gopay.BodyMap)
+	// 接口权限值,目前只支持auth_user和auth_base两个值。具体说明看文档介绍
+	bm.Set("scopes", []string{"auth_user"})
+	bm.Set("state", "init")
+
+	// 发起请求
+	aliRsp, err := client.UserInfoAuth(bm)
+	if err != nil {
+		fmt.Println("err:", err)
+		return
+	}
+	fmt.Println("aliRsp:", *aliRsp)
 }
 
 func TestClient_UserInfoShare(t *testing.T) {

+ 13 - 0
alipay/model.go

@@ -615,3 +615,16 @@ type userCertifyOpenQueryResponse struct {
 	IdentityInfo string   `json:"identity_info,omitempty"`
 	MaterialInfo string   `json:"material_info,omitempty"`
 }
+
+// ====================================================
+type UserInfoAuthResponse struct {
+	Response *struct {
+		Code    string `json:"code,omitempty"`
+		Msg     string `json:"msg,omitempty"`
+		SubCode string `json:"sub_code,omitempty"`
+		SubMsg  string `json:"sub_msg,omitempty"`
+	} `json:"alipay_user_info_auth_response,omitempty"`
+	AlipayCertSn string `json:"alipay_cert_sn,omitempty"`
+	SignData     string `json:"-"`
+	Sign         string `json:"sign"`
+}

+ 1 - 1
constant.go

@@ -7,5 +7,5 @@ const (
 	SUCCESS    = "SUCCESS"
 	FAIL       = "FAIL"
 	OK         = "OK"
-	Version    = "1.5.3"
+	Version    = "1.5.4"
 )

+ 35 - 0
examples/alipay/alipay_UserInfoAuth.go

@@ -0,0 +1,35 @@
+package alipay
+
+import (
+	"fmt"
+
+	"github.com/iGoogle-ink/gopay"
+	"github.com/iGoogle-ink/gopay/alipay"
+)
+
+func UserInfoAuth() {
+	//aliPayPublicKey := "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1wn1sU/8Q0rYLlZ6sq3enrPZw2ptp6FecHR2bBFLjJ+sKzepROd0bKddgj+Mr1ffr3Ej78mLdWV8IzLfpXUi945DkrQcOUWLY0MHhYVG2jSs/qzFfpzmtut2Cl2TozYpE84zom9ei06u2AXLMBkU6VpznZl+R4qIgnUfByt3Ix5b3h4Cl6gzXMAB1hJrrrCkq+WvWb3Fy0vmk/DUbJEz8i8mQPff2gsHBE1nMPvHVAMw1GMk9ImB4PxucVek4ZbUzVqxZXphaAgUXFK2FSFU+Q+q1SPvHbUsjtIyL+cLA6H/6ybFF9Ffp27Y14AHPw29+243/SpMisbGcj2KD+evBwIDAQAB"
+	privateKey := "MIIEogIBAAKCAQEAy+CRzKw4krA2RzCDTqg5KJg92XkOY0RN3pW4sYInPqnGtHV7YDHu5nMuxY6un+dLfo91OFOEg+RI+WTOPoM4xJtsOaJwQ1lpjycoeLq1OyetGW5Q8wO+iLWJASaMQM/t/aXR/JHaguycJyqlHSlxANvKKs/tOHx9AhW3LqumaCwz71CDF/+70scYuZG/7wxSjmrbRBswxd1Sz9KHdcdjqT8pmieyPqnM24EKBexHDmQ0ySXvLJJy6eu1dJsPIz+ivX6HEfDXmSmJ71AZVqZyCI1MhK813R5E7XCv5NOtskTe3y8uiIhgGpZSdB77DOyPLcmVayzFVLAQ3AOBDmsY6wIDAQABAoIBAHjsNq31zAw9FcR9orQJlPVd7vlJEt6Pybvmg8hNESfanO+16rpwg2kOEkS8zxgqoJ1tSzJgXu23fgzl3Go5fHcoVDWPAhUAOFre9+M7onh2nPXDd6Hbq6v8OEmFapSaf2b9biHnBHq5Chk08v/r74l501w3PVVOiPqulJrK1oVb+0/YmCvVFpGatBcNaefKUEcA+vekWPL7Yl46k6XeUvRfTwomCD6jpYLUhsAKqZiQJhMGoaLglZvkokQMF/4G78K7FbbVLMM1+JDh8zJ/DDVdY2vHREUcCGhl4mCVQtkzIbpxG++vFg7/g/fDI+PquG22hFILTDdtt2g2fV/4wmkCgYEA6goRQYSiM03y8Tt/M4u1Mm7OWYCksqAsU7rzQllHekIN3WjD41Xrjv6uklsX3sTG1syo7Jr9PGE1xQgjDEIyO8h/3lDQyLyycYnyUPGNNMX8ZjmGwcM51DQ/QfIrY/CXjnnW+MVpmNclAva3L33KXCWjw20VsROV1EA8LCL94BUCgYEA3wH4ANpzo7NqXf+2WlPPMuyRrF0QPIRGlFBNtaKFy0mvoclkREPmK7+N4NIGtMf5JNODS5HkFRgmU4YNdupA2I8lIYpD+TsIobZxGUKUkYzRZYZ1m1ttL69YYvCVz9Xosw/VoQ+RrW0scS5yUKqFMIUOV2R/Imi//c5TdKx6VP8CgYAnJ1ADugC4vI2sNdvt7618pnT3HEJxb8J6r4gKzYzbszlGlURQQAuMfKcP7RVtO1ZYkRyhmLxM4aZxNA9I+boVrlFWDAchzg+8VuunBwIslgLHx0/4EoUWLzd1/OGtco6oU1HXhI9J9pRGjqfO1iiIifN/ujwqx7AFNknayG/YkQKBgD6yNgA/ak12rovYzXKdp14Axn+39k2dPp6J6R8MnyLlB3yruwW6NSbNhtzTD1GZ+wCQepQvYvlPPc8zm+t3tl1r+Rtx3ORf5XBZc3iPkGdPOLubTssrrAnA+U9vph61W+OjqwLJ9sHUNK9pSHhHSIS4k6ycM2YAHyIC9NGTgB0PAoGAJjwd1DgMaQldtWnuXjvohPOo8cQudxXYcs6zVRbx6vtjKe2v7e+eK1SSVrR5qFV9AqxDfGwq8THenRa0LC3vNNplqostuehLhkWCKE7Y75vXMR7N6KU1kdoVWgN4BhXSwuRxmHMQfSY7q3HG3rDGz7mzXo1FVMr/uE4iDGm0IXY="
+	//初始化支付宝客户端
+	//    appId:应用ID
+	//    privateKey:应用秘钥
+	//    isProd:是否是正式环境
+	client := alipay.NewClient("2016091200494382", privateKey, false)
+	//配置公共参数
+	client.SetCharset("utf-8").
+		SetSignType("RSA2")
+
+	// 请求参数
+	bm := make(gopay.BodyMap)
+	// 接口权限值,目前只支持auth_user和auth_base两个值。具体说明看文档介绍
+	bm.Set("scopes", []string{"auth_user"})
+	bm.Set("state", "init")
+
+	// 发起请求
+	aliRsp, err := client.UserInfoAuth(bm)
+	if err != nil {
+		fmt.Println("err:", err)
+		return
+	}
+	fmt.Println("aliRsp:", *aliRsp)
+}

+ 6 - 0
release_note.txt

@@ -1,3 +1,9 @@
+版本号:Release 1.5.4
+发布时间:2020/02/29 13:32
+修改记录:
+   (1) 支付宝:新增Client方法:client.UserInfoAuth(),用户登陆授权。(方法未测试通过,待有条件的同学测试一下吧)
+
+
 版本号:Release 1.5.3
 发布时间:2020/02/19 11:32
 修改记录: