Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
Jerry committed Aug 15, 2019
1 parent 769f50b commit 205c6ea
Show file tree
Hide file tree
Showing 4 changed files with 81 additions and 78 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@

## 支付宝公共API

* gopay.AliPaySystemOauthToken() => 换取授权访问令牌(得到access_token,user_id等信息)
* gopay.FormatPrivateKey() => 格式化应用私钥
* gopay.FormatAliPayPublicKey() => 格式化支付宝公钥
* gopay.ParseAliPayNotifyResult() => 解析并返回支付宝支付异步通知的参数
Expand Down
1 change: 1 addition & 0 deletions README_EN.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ The Golang SDK for WeChat and AliPay

## Alipay Public API

* gopay.AliPaySystemOauthToken() => Obtain authorized access token(obtain access_token, user_id and so on)
* gopay.FormatPrivateKey() => Format private key
* gopay.FormatAliPayPublicKey() => Format alipay public key
* gopay.ParseAliPayNotifyResult() => Parse the parameters of Alipay Payment asynchronous notification to Struct
Expand Down
139 changes: 70 additions & 69 deletions alipay_service_api.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import (
"log"
"net/http"
"reflect"
"time"
)

//解析支付宝支付完成后的Notify信息
Expand Down Expand Up @@ -297,72 +298,72 @@ func verifyAliPaySign(signData, sign, signType, aliPayPublicKey string) (err err
// grantType:值为 authorization_code 时,代表用code换取;值为 refresh_token 时,代表用refresh_token换取,传空默认code换取
// codeOrToken:支付宝授权码或refresh_token
// 文档:https://docs.open.alipay.com/api_9/alipay.system.oauth.token
//func AliPaySystemOauthToken(appId, privateKey, grantType, codeOrToken string) (rsp *AliPaySystemOauthTokenResponse, err error) {
// var bs []byte
// body := make(BodyMap)
// if "authorization_code" == grantType {
// body.Set("grant_type", "authorization_code")
// body.Set("code", codeOrToken)
// } else if "refresh_token" == grantType {
// body.Set("grant_type", "refresh_token")
// body.Set("refresh_token", codeOrToken)
// } else {
// body.Set("grant_type", "authorization_code")
// body.Set("code", codeOrToken)
// }
// bs, err = doAliPay(appId, privateKey, body, "alipay.system.oauth.token")
// if err != nil {
// return nil, err
// }
// //fmt.Println("bs:", string(bs))
// rsp = new(AliPaySystemOauthTokenResponse)
// err = json.Unmarshal(bs, rsp)
// if err != nil {
// return nil, err
// }
// if rsp.AliPaySystemOauthTokenResponse.AccessToken != "" {
// return rsp, nil
// } else {
// return
// }
//}
//
////向支付宝发送请求
//func doAliPay(appId, privateKey string, body BodyMap, method string) (bytes []byte, err error) {
// //===============生成参数===================
// //pubBody := make(BodyMap)
// body.Set("app_id", appId)
// body.Set("method", method)
// body.Set("format", "JSON")
// body.Set("charset", "utf-8")
// body.Set("sign_type", "RSA2")
// body.Set("timestamp", time.Now().Format(TimeLayout))
// body.Set("version", "1.0")
// //pubBody.Set("biz_content", string(bodyStr))
// //===============获取签名===================
// pKey := FormatPrivateKey(privateKey)
// sign, err := getRsaSign(body, "RSA2", pKey)
// if err != nil {
// return nil, err
// }
// body.Set("sign", sign)
// //fmt.Println("rsaSign:", sign)
// //===============发起请求===================
// urlParam := FormatAliPayURLParam(body)
// //fmt.Println("urlParam:", urlParam)
//
// var url string
// agent := HttpAgent()
// //正式环境
// url = zfb_base_url_utf8
// //fmt.Println(url)
// agent.Post(url)
// _, bs, errs := agent.
// Type("form-data").
// SendString(urlParam).
// EndBytes()
// if len(errs) > 0 {
// return nil, errs[0]
// }
// return bs, nil
//}
func AliPaySystemOauthToken(appId, privateKey, grantType, codeOrToken string) (rsp *AliPaySystemOauthTokenResponse, err error) {
var bs []byte
body := make(BodyMap)
if "authorization_code" == grantType {
body.Set("grant_type", "authorization_code")
body.Set("code", codeOrToken)
} else if "refresh_token" == grantType {
body.Set("grant_type", "refresh_token")
body.Set("refresh_token", codeOrToken)
} else {
body.Set("grant_type", "authorization_code")
body.Set("code", codeOrToken)
}
bs, err = doAliPay(appId, privateKey, body, "alipay.system.oauth.token")
if err != nil {
return nil, err
}
//fmt.Println("bs:", string(bs))
rsp = new(AliPaySystemOauthTokenResponse)
err = json.Unmarshal(bs, rsp)
if err != nil {
return nil, err
}
if rsp.AliPaySystemOauthTokenResponse.AccessToken != "" {
return rsp, nil
} else {
return
}
}

//向支付宝发送请求
func doAliPay(appId, privateKey string, body BodyMap, method string) (bytes []byte, err error) {
//===============生成参数===================
//pubBody := make(BodyMap)
body.Set("app_id", appId)
body.Set("method", method)
body.Set("format", "JSON")
body.Set("charset", "utf-8")
body.Set("sign_type", "RSA2")
body.Set("timestamp", time.Now().Format(TimeLayout))
body.Set("version", "1.0")
//pubBody.Set("biz_content", string(bodyStr))
//===============获取签名===================
pKey := FormatPrivateKey(privateKey)
sign, err := getRsaSign(body, "RSA2", pKey)
if err != nil {
return nil, err
}
body.Set("sign", sign)
//fmt.Println("rsaSign:", sign)
//===============发起请求===================
urlParam := FormatAliPayURLParam(body)
//fmt.Println("urlParam:", urlParam)

var url string
agent := HttpAgent()
//正式环境
url = zfb_base_url_utf8
//fmt.Println(url)
agent.Post(url)
_, bs, errs := agent.
Type("form-data").
SendString(urlParam).
EndBytes()
if len(errs) > 0 {
return nil, errs[0]
}
return bs, nil
}
18 changes: 9 additions & 9 deletions examples/alipay/alipay_ServiceApi.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,15 @@ func FormatAliPayPublicKey() {
fmt.Println(pKey)
}

//func AliPaySystemOauthToken() {
// 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="
// rsp, err := gopay.AliPaySystemOauthToken("2016091200494382", privateKey, "", "06e8961891d647c0ac99bb1cebe7SE69")
// if err != nil {
// fmt.Println("gopay.AliPaySystemOauthToken:", err)
// return
// }
// fmt.Println("rsp:", *rsp)
//}
func AliPaySystemOauthToken2() {
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="
rsp, err := gopay.AliPaySystemOauthToken("2016091200494382", privateKey, "", "06e8961891d647c0ac99bb1cebe7SE69")
if err != nil {
fmt.Println("gopay.AliPaySystemOauthToken:", err)
return
}
fmt.Println("rsp:", *rsp)
}

func DecryptAliPayOpenDataToStruct() {
data := "MkvuiIZsGOC8S038cu/JIpoRKnF+ZFjoIRGf5d/K4+ctYjCtb/eEkwgrdB5TeH/93bxff1Ylb+SE+UGStlpvcg=="
Expand Down

0 comments on commit 205c6ea

Please sign in to comment.