Jerry 6 年之前
父節點
當前提交
3878a329ee
共有 2 個文件被更改,包括 31 次插入10 次删除
  1. 14 5
      alipay_client_test.go
  2. 17 5
      alipay_server_api.go

+ 14 - 5
alipay_client_test.go

@@ -3,6 +3,7 @@ package gopay
 import (
 	"encoding/json"
 	"fmt"
+	"log"
 	"testing"
 )
 
@@ -23,7 +24,7 @@ func TestAliPayClient_AliPayTradeWapPay(t *testing.T) {
 	//请求参数
 	body := make(BodyMap)
 	body.Set("subject", "手机网站测试支付")
-	body.Set("out_trade_no", "GYWX201901301040355706100438")
+	body.Set("out_trade_no", "GYWX201901301040355706100439")
 	body.Set("quit_url", "https://www.igoogle.ink")
 	body.Set("total_amount", "100.00")
 	body.Set("product_code", "QUICK_WAP_WAY")
@@ -116,10 +117,18 @@ func TestFormatPrivateKey(t *testing.T) {
 }
 
 func TestFormatAliPayPublicKey(t *testing.T) {
-	aliPayPublicKey := "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAp8gueNlkbiDidz6FBQEBpqoRgH8h7JtsPtYW0nzAqy1MME4mFnDSMfSKlreUomS3a55gmBopL1eF4/Km/dEnaL5tCY9+24SKn1D4iyls+lvz/ZjvUjVwxoUYBh8kkcxMZSDeDz8//o+9qZTrICVP2a4sBB8T0XmU4gxfw8FsmtoomBH1nLk3AO7wgRN2a3+SRSAmxrhIGDmF1lljSlhY32eJpJ2TZQKaWNW+7yDBU/0Wt3kQVY84vr14yYagnSCiIfqyVFqePayRtmVJDr5qvSXr51tdqs2zKZCu+26X7JAF4BSsaq4gmY5DmDTm4TohCnBduI1+bPGD+igVmtl05wIDAQAB"
-
-	pKey := FormatAliPayPublicKey(aliPayPublicKey)
-	fmt.Println(pKey)
+	//aliPayPublicKey := "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAp8gueNlkbiDidz6FBQEBpqoRgH8h7JtsPtYW0nzAqy1MME4mFnDSMfSKlreUomS3a55gmBopL1eF4/Km/dEnaL5tCY9+24SKn1D4iyls+lvz/ZjvUjVwxoUYBh8kkcxMZSDeDz8//o+9qZTrICVP2a4sBB8T0XmU4gxfw8FsmtoomBH1nLk3AO7wgRN2a3+SRSAmxrhIGDmF1lljSlhY32eJpJ2TZQKaWNW+7yDBU/0Wt3kQVY84vr14yYagnSCiIfqyVFqePayRtmVJDr5qvSXr51tdqs2zKZCu+26X7JAF4BSsaq4gmY5DmDTm4TohCnBduI1+bPGD+igVmtl05wIDAQAB"
+	//
+	//pKey := FormatAliPayPublicKey(aliPayPublicKey)
+	//fmt.Println(pKey)
+
+	maps := make(BodyMap, 0)
+	maps.Set("name", "jerry")
+	maps.Set("name2", "tom")
+	for key, value := range maps {
+		log.Println("key:", key)
+		log.Println("value:", value)
+	}
 }
 
 type List struct {

+ 17 - 5
alipay_server_api.go

@@ -19,6 +19,7 @@ import (
 	"log"
 	"net/http"
 	"net/url"
+	"sort"
 )
 
 //解析支付宝支付完成后的Notify信息
@@ -129,11 +130,8 @@ func VerifyAliPayResultSign(aliPayPublicKey string, notifyRsp *AliPayNotifyReque
 	}
 
 	pKey := FormatAliPayPublicKey(aliPayPublicKey)
-	signStr := sortAliPaySignParams(newBody)
-	v := url.Values{}
-	v.Set("signStr", signStr)
-	encode := v.Encode()
-	signData := encode[7:]
+	signData := encodeBody(newBody)
+
 	log.Println("签名字符串:", signData)
 	err = verifyAliPaySign(signData, notifyRsp.Sign, notifyRsp.SignType, pKey)
 	if err != nil {
@@ -142,6 +140,20 @@ func VerifyAliPayResultSign(aliPayPublicKey string, notifyRsp *AliPayNotifyReque
 	return true, nil
 }
 
+func encodeBody(body BodyMap) (signData string) {
+	keyList := make([]string, 0)
+	for k := range body {
+		keyList = append(keyList, k)
+	}
+	sort.Strings(keyList)
+
+	urlV := url.Values{}
+	for _, k := range keyList {
+		urlV.Add(k, body.Get(k))
+	}
+	return urlV.Encode()
+}
+
 func jsonToString(v interface{}) (str string) {
 	if v == nil {
 		return ""