Jerry 7 years ago
parent
commit
9e4e426e85
3 changed files with 94 additions and 20 deletions
  1. 36 0
      README.md
  2. 29 19
      alipay_client.go
  3. 29 1
      alipay_client_test.go

+ 36 - 0
README.md

@@ -439,6 +439,42 @@ if err != nil {
 fmt.Println("payParam:", payParam)
 ```
 
+### 电脑网站支付
+
+* 电脑网站支付是通过服务端获取支付URL后,然后返回给客户端,请求URL地址即可打开支付页面
+
+> 文档说明[电脑网站支付](https://docs.open.alipay.com/270) 
+
+> 文档说明[统一收单下单并支付页面接口](https://docs.open.alipay.com/api_1/alipay.trade.page.pay) 
+
+```go
+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 := gopay.NewAliPayClient("2016091200494382", privateKey, false)
+//配置公共参数
+client.SetCharset("utf-8").
+	SetSignType("RSA2").
+	SetNotifyUrl("https://www.igoogle.ink")
+//请求参数
+body := make(gopay.BodyMap)
+body.Set("subject", "网站测试支付")
+body.Set("out_trade_no", "GYWX201901301040355706100418")
+body.Set("quit_url", "https://www.igoogle.ink")
+body.Set("total_amount", "88.88")
+body.Set("product_code", "FAST_INSTANT_TRADE_PAY")
+
+//电脑网站支付请求
+payUrl, err := client.AliPayTradePagePay(body)
+if err != nil {
+	fmt.Println("err:", err)
+	return
+}
+fmt.Println("payUrl:", payUrl)
+```
+
 ## License
 ```
 Copyright 2019 Jerry

+ 29 - 19
alipay_client.go

@@ -31,47 +31,47 @@ func NewAliPayClient(appId, privateKey string, isProd bool) (client *aliPayClien
 }
 
 //alipay.trade.fastpay.refund.query(统一收单交易退款查询)
-func (this *aliPayClient) AliPayTradeFastPayRefundQuery() {
+func (this *aliPayClient) AliPayTradeFastPayRefundQuery(body BodyMap) {
 
 }
 
 //alipay.trade.order.settle(统一收单交易结算接口)
-func (this *aliPayClient) AliPayTradeOrderSettle() {
+func (this *aliPayClient) AliPayTradeOrderSettle(body BodyMap) {
 
 }
 
 //alipay.trade.close(统一收单交易关闭接口)
-func (this *aliPayClient) AliPayTradeClose() {
+func (this *aliPayClient) AliPayTradeClose(body BodyMap) {
 
 }
 
 //alipay.trade.cancel(统一收单交易撤销接口)
-func (this *aliPayClient) AliPayTradeCancel() {
+func (this *aliPayClient) AliPayTradeCancel(body BodyMap) {
 
 }
 
 //alipay.trade.refund(统一收单交易退款接口)
-func (this *aliPayClient) AliPayTradeRefund() {
+func (this *aliPayClient) AliPayTradeRefund(body BodyMap) {
 
 }
 
 //alipay.trade.precreate(统一收单线下交易预创建)
-func (this *aliPayClient) AliPayTradePrecreate() {
+func (this *aliPayClient) AliPayTradePrecreate(body BodyMap) {
 
 }
 
 //alipay.trade.create(统一收单交易创建接口)
-func (this *aliPayClient) AliPayTradeCreate() {
+func (this *aliPayClient) AliPayTradeCreate(body BodyMap) {
 
 }
 
 //alipay.trade.pay(统一收单交易支付接口)
-func (this *aliPayClient) AliPayTradePay() {
+func (this *aliPayClient) AliPayTradePay(body BodyMap) {
 
 }
 
 //alipay.trade.query(统一收单线下交易查询)
-func (this *aliPayClient) AliPayTradeQuery() {
+func (this *aliPayClient) AliPayTradeQuery(body BodyMap) {
 
 }
 
@@ -102,23 +102,33 @@ func (this *aliPayClient) AliPayTradeWapPay(body BodyMap) (payUrl string, err er
 	return payUrl, nil
 }
 
-//alipay.trade.orderinfo.sync(支付宝订单信息同步接口)
-func (this *aliPayClient) AliPayTradeOrderinfoSync() {
-
+//alipay.trade.page.pay(统一收单下单并支付页面接口)
+func (this *aliPayClient) AliPayTradePagePay(body BodyMap) (payUrl string, err error) {
+	var bytes []byte
+	bytes, err = this.doAliPay(body, "alipay.trade.wap.pay")
+	if err != nil {
+		//log.Println("err::", err.Error())
+		return null, err
+	}
+	payUrl = string(bytes)
+	if payUrl == zfb_sanbox_base_url || payUrl == zfb_base_url {
+		return null, errors.New("请求失败,请查看文档并检查参数")
+	}
+	return payUrl, nil
 }
 
-//alipay.trade.page.pay(统一收单下单并支付页面接口)
-func (this *aliPayClient) AliPayTradePagePay() {
+//alipay.trade.orderinfo.sync(支付宝订单信息同步接口)
+func (this *aliPayClient) AliPayTradeOrderinfoSync(body BodyMap) {
 
 }
 
 //zhima.credit.score.brief.get(芝麻分普惠版)
-func (this *aliPayClient) ZhimaCreditScoreBriefGet() {
+func (this *aliPayClient) ZhimaCreditScoreBriefGet(body BodyMap) {
 
 }
 
 //zhima.credit.score.get(芝麻分)
-func (this *aliPayClient) ZhimaCreditScoreGet() {
+func (this *aliPayClient) ZhimaCreditScoreGet(body BodyMap) {
 
 }
 
@@ -182,7 +192,7 @@ func (this *aliPayClient) doAliPay(body BodyMap, method string) (bytes []byte, e
 		//fmt.Println(url)
 		agent.Post(url)
 	}
-	rsp, b, errs := agent.
+	rsp, bs, errs := agent.
 		Type("form-data").
 		SendString(urlParam).
 		EndBytes()
@@ -190,11 +200,11 @@ func (this *aliPayClient) doAliPay(body BodyMap, method string) (bytes []byte, e
 		return nil, errs[0]
 	}
 	if method == "alipay.trade.wap.pay" {
-		//fmt.Println("rsp:::", rsp.Request.URL)
+		//fmt.Println("rsp:::", rsp.Body)
 		if rsp.Request.URL.String() == zfb_base_url || rsp.Request.URL.String() == zfb_sanbox_base_url {
 			return nil, errors.New("请求手机网站支付出错,请检查各个参数或秘钥是否正确")
 		}
 		return []byte(rsp.Request.URL.String()), nil
 	}
-	return b, nil
+	return bs, nil
 }

+ 29 - 1
alipay_client_test.go

@@ -21,7 +21,7 @@ func TestAliPayClient_AliPayTradeWapPay(t *testing.T) {
 		SetNotifyUrl("https://api.iguiyu.com/gy_pay/alipay/notify")
 	//请求参数
 	body := make(BodyMap)
-	body.Set("subject", "测试支付")
+	body.Set("subject", "手机网站测试支付")
 	body.Set("out_trade_no", "GYWX201901301040355706100410")
 	body.Set("quit_url", "https://www.igoogle.ink")
 	body.Set("total_amount", "100.00")
@@ -62,6 +62,34 @@ func TestAliPayClient_AliPayTradeAppPay(t *testing.T) {
 	fmt.Println("payParam:", payParam)
 }
 
+func TestAliPayClient_AliPayTradePagePay(t *testing.T) {
+	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 := NewAliPayClient("2016091200494382", privateKey, false)
+	//配置公共参数
+	client.SetCharset("utf-8").
+		SetSignType("RSA2").
+		SetNotifyUrl("https://gytmp.iguiyu.com/park-api/pay/wechat/notify")
+	//请求参数
+	body := make(BodyMap)
+	body.Set("subject", "网站测试支付")
+	body.Set("out_trade_no", "GYWX201901301040355706100418")
+	body.Set("quit_url", "https://www.igoogle.ink")
+	body.Set("total_amount", "88.88")
+	body.Set("product_code", "FAST_INSTANT_TRADE_PAY")
+
+	//电脑网站支付请求
+	payUrl, err := client.AliPayTradePagePay(body)
+	if err != nil {
+		fmt.Println("err:", err)
+		return
+	}
+	fmt.Println("payUrl:", payUrl)
+}
+
 func TestAliPayParams(t *testing.T) {
 
 	bodyMap := make(BodyMap)