Jerry 6 лет назад
Родитель
Сommit
44ee915bf8

+ 1 - 1
README.md

@@ -35,7 +35,7 @@
 * gopay.VerifyWeChatResultSign() => 验证微信支付异步通知的Sign值
 * gopay.Code2Session() => 登录凭证校验:获取微信用户OpenId、UnionId、SessionKey
 * gopay.GetAccessToken() => 获取小程序全局唯一后台接口调用凭据
-* gopay.GetPaidUnionId() => 用户支付完成后,获取该用户的 UnionId,无需用户授权
+* gopay.GetPaidUnionId() => 微信小程序用户支付完成后,获取该用户的 UnionId,无需用户授权
 * gopay.GetWeChatUserInfo() => 微信公众号:获取用户基本信息(UnionID机制)
 * gopay.DecryptOpenDataToStruct() => 加密数据,解密到指定结构体
 * gopay.GetOpenIdByAuthCode() => 授权码查询openid

+ 0 - 369
alipay_client_test.go

@@ -6,375 +6,6 @@ import (
 	"testing"
 )
 
-//func TestAliPayClient_AliPayTradePay(t *testing.T) {
-//	//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 := NewAliPayClient("2016091200494382", privateKey, false)
-//	//配置公共参数
-//	client.SetCharset("utf-8").
-//		SetSignType("RSA2").
-//		SetNotifyUrl("https://api.iguiyu.com/gy_pay/alipay/notify")
-//	//请求参数
-//	body := make(BodyMap)
-//	body.Set("subject", "条码支付")
-//	body.Set("scene", "bar_code")
-//	body.Set("auth_code", "284680185023768373")
-//	body.Set("out_trade_no", "GYWX201901301040355706100458")
-//	body.Set("total_amount", "100.00")
-//	body.Set("timeout_express", "2m")
-//	//条码支付
-//	aliRsp, err := client.AliPayTradePay(body)
-//	if err != nil {
-//		fmt.Println("err:", err)
-//		return
-//	}
-//	fmt.Println("aliRsp:", *aliRsp)
-//}
-//
-//func TestAliPayClient_AliPayTradeCreate(t *testing.T) {
-//	//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 := NewAliPayClient("2016091200494382", privateKey, false)
-//	//配置公共参数
-//	client.SetCharset("utf-8").
-//		SetSignType("RSA2").
-//		SetNotifyUrl("https://api.iguiyu.com/gy_pay/alipay/notify")
-//	//请求参数
-//	body := make(BodyMap)
-//	body.Set("subject", "创建订单")
-//	body.Set("buyer_id", "2088802095984694")
-//	body.Set("out_trade_no", "GZ201901301040355706100469")
-//	body.Set("total_amount", "0.01")
-//	//创建订单
-//	aliRsp, err := client.AliPayTradeCreate(body)
-//	if err != nil {
-//		fmt.Println("err:", err)
-//		return
-//	}
-//	fmt.Println("aliRsp:", *aliRsp)
-//	fmt.Println("aliRsp.TradeNo:", aliRsp.AliPayTradeCreateResponse.TradeNo)
-//}
-//
-//func TestAliPayClient_AliPayTradeClose(t *testing.T) {
-//	//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 := NewAliPayClient("2016091200494382", privateKey, false)
-//	//配置公共参数
-//	client.SetCharset("utf-8").
-//		SetSignType("RSA2").
-//		SetNotifyUrl("https://api.iguiyu.com/gy_pay/alipay/notify")
-//	//请求参数
-//	body := make(BodyMap)
-//	body.Set("out_trade_no", "GYWX201901301040355706100459")
-//	//条码支付
-//	aliRsp, err := client.AliPayTradeClose(body)
-//	if err != nil {
-//		fmt.Println("err:", err)
-//		return
-//	}
-//	fmt.Println("aliRsp:", *aliRsp)
-//}
-//
-//func TestAliPayClient_AliPayTradeCancel(t *testing.T) {
-//	//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 := NewAliPayClient("2016091200494382", privateKey, false)
-//	//配置公共参数
-//	client.SetCharset("utf-8").
-//		SetSignType("RSA2").
-//		SetNotifyUrl("https://api.iguiyu.com/gy_pay/alipay/notify")
-//	//请求参数
-//	body := make(BodyMap)
-//	body.Set("out_trade_no", "GYWX201901301040355706100457")
-//	//撤销支付订单
-//	aliRsp, err := client.AliPayTradeCancel(body)
-//	if err != nil {
-//		fmt.Println("err:", err)
-//		return
-//	}
-//	fmt.Println("aliRsp:", *aliRsp)
-//}
-//
-//func TestAliPayClient_AliPayTradeQuery(t *testing.T) {
-//	//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 := NewAliPayClient("2016091200494382", privateKey, false)
-//	//配置公共参数
-//	client.SetCharset("utf-8").
-//		SetSignType("RSA2")
-//	//请求参数
-//	body := make(BodyMap)
-//	body.Set("out_trade_no", "GYWX201901301040355706100457")
-//
-//	//查询订单
-//	aliRsp, err := client.AliPayTradeQuery(body)
-//	if err != nil {
-//		fmt.Println("err:", err)
-//		return
-//	}
-//	fmt.Println("aliRsp:", *aliRsp)
-//}
-//
-//func TestAliPayClient_AliPayTradeWapPay(t *testing.T) {
-//	//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 := NewAliPayClient("2016091200494382", privateKey, false)
-//	//配置公共参数
-//	client.SetCharset("utf-8").
-//		SetSignType("RSA2").
-//		//SetReturnUrl("https://www.gopay.ink").
-//		SetNotifyUrl("https://api.iguiyu.com/gy_pay/alipay/notify")
-//	//请求参数
-//	body := make(BodyMap)
-//	body.Set("subject", "手机网站测试支付")
-//	body.Set("out_trade_no", "GZ201901301040355706100477")
-//	body.Set("quit_url", "https://www.gopay.ink")
-//	body.Set("total_amount", "100.00")
-//	body.Set("product_code", "QUICK_WAP_WAY")
-//	//手机网站支付请求
-//	payUrl, err := client.AliPayTradeWapPay(body)
-//	if err != nil {
-//		fmt.Println("err:", err)
-//		return
-//	}
-//	fmt.Println("payUrl:", payUrl)
-//}
-//
-//func TestAliPayClient_AliPayTradeAppPay(t *testing.T) {
-//	//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 := NewAliPayClient("2016091200494382", privateKey, false)
-//	//配置公共参数
-//	client.SetCharset("utf-8").
-//		SetSignType("RSA2").
-//		SetNotifyUrl("https://api.iguiyu.com/gy_pay/alipay/notify")
-//	//请求参数
-//	body := make(BodyMap)
-//	body.Set("subject", "测试APP支付")
-//	body.Set("out_trade_no", "GZ201901301040355706100469")
-//	body.Set("total_amount", "1.00")
-//	//手机APP支付参数请求
-//	payParam, err := client.AliPayTradeAppPay(body)
-//	if err != nil {
-//		fmt.Println("err:", err)
-//		return
-//	}
-//	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://api.iguiyu.com/gy_pay/alipay/notify")
-//	//请求参数
-//	body := make(BodyMap)
-//	body.Set("subject", "网站测试支付")
-//	body.Set("out_trade_no", "GZ201901301040355706100469")
-//	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 TestAliPayClient_AliPayTradeRefund(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, true)
-//	//配置公共参数
-//	client.SetCharset("utf-8").
-//		SetSignType("RSA2")
-//	//请求参数
-//	body := make(BodyMap)
-//	body.Set("out_trade_no", "GZ201907301420334577")
-//	body.Set("refund_amount", "5")
-//	body.Set("refund_reason", "退款")
-//	//发起退款请求
-//	aliRsp, err := client.AliPayTradeRefund(body)
-//	if err != nil {
-//		fmt.Println("err:", err)
-//		return
-//	}
-//	fmt.Println("aliRsp:", *aliRsp)
-//}
-//
-//func TestAliPayClient_AliPayTradeFastPayRefundQuery(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, true)
-//	//配置公共参数
-//	client.SetCharset("utf-8").
-//		SetSignType("RSA2")
-//	//请求参数
-//	body := make(BodyMap)
-//	body.Set("out_trade_no", "GZ201907301420334577")
-//	body.Set("out_request_no", "GZ201907301420334577")
-//	//发起退款查询请求
-//	aliRsp, err := client.AliPayTradeFastPayRefundQuery(body)
-//	if err != nil {
-//		fmt.Println("err:", err)
-//		return
-//	}
-//	fmt.Println("aliRsp:", *aliRsp)
-//}
-//
-//func TestAliPayClient_AliPayTradeOrderSettle(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, true)
-//	//配置公共参数
-//	client.SetCharset("utf-8").
-//		SetSignType("RSA2")
-//	//请求参数
-//	body := make(BodyMap)
-//	body.Set("out_request_no", "201907301518083384")
-//	body.Set("trade_no", "2019072522001484690549776067")
-//
-//	type OpenApiRoyaltyDetailInfoPojo struct {
-//		RoyaltyType  string `json:"royalty_type"`
-//		TransOut     string `json:"trans_out"`
-//		TransOutType string `json:"trans_out_type"`
-//		TransInType  string `json:"trans_in_type"`
-//		TransIn      string `json:"trans_in"`
-//		Amount       string `json:"amount"`
-//		Desc         string `json:"desc"`
-//	}
-//	var listParams []OpenApiRoyaltyDetailInfoPojo
-//	listParams = append(listParams, OpenApiRoyaltyDetailInfoPojo{"transfer", "2088802095984694", "userId", "userId", "2088102363632794", "0.01", "分账给2088102363632794"})
-//	body.Set("royalty_parameters", listParams)
-//
-//	//发起交易结算接口
-//	aliRsp, err := client.AliPayTradeOrderSettle(body)
-//	if err != nil {
-//		fmt.Println("err:", err)
-//		return
-//	}
-//	fmt.Println("aliRsp:", *aliRsp)
-//}
-//
-//func TestAliPayClient_AliPayTradePrecreate(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://api.iguiyu.com/gy_pay/alipay/notify")
-//	//请求参数
-//	body := make(BodyMap)
-//	body.Set("subject", "预创建创建订单")
-//	body.Set("out_trade_no", "GZ201901301040355703")
-//	body.Set("total_amount", "100")
-//	//创建订单
-//	aliRsp, err := client.AliPayTradePrecreate(body)
-//	if err != nil {
-//		fmt.Println("err:", err)
-//		return
-//	}
-//	fmt.Println("aliRsp:", *aliRsp)
-//	fmt.Println("aliRsp.QrCode:", aliRsp.AlipayTradePrecreateResponse.QrCode)
-//	fmt.Println("aliRsp.OutTradeNo:", aliRsp.AlipayTradePrecreateResponse.OutTradeNo)
-//}
-
-//==================================================//
-
-//func TestFormatPrivateKey(t *testing.T) {
-//	privateKey := "MIIEowIBAAKCAQEAxorj0SisU93LxawVWybZzDYfq8bxzw9VIOKDSW1M5ombl/MvZTT9IuBSGvqUxXFSWqY05e+CBlquFrOHTzKttmzeZJEKHpGAkW+4TsX6N4ZCHfz3Sz5MBAzBqQvscUD0FTZ+VlQbQ1HjQiKLbHaNY+fFVn3q2XL6dNtWwFhad592M1lCbzEjZ7yqFcxJ0jIDBh1lWwemHu52iW3YkvLD5lE8IXRiJedhgPFXCFAkX5HLcc0/jicRTarQ9gRNpHC6B87T2SDjKmgxqcws4CVdYJbztU1KLrsbMALFMOp24x8xsLgR88XeraQyUWe6V3lt1OYEOd9XLHWRx33bRHSwIDAQABAoIBAHjrGfjG1r11Nae8OH19WeRfikZqMdcztVsD2YWcxdsaL+MJPvJapVjaWecIehcN/2QqGcl4Zy5Lh/9Xc68uZFHYWFHTa+BWKYFqE0wWk1/Bqv7slAgFdvJ4enHkSypmrsFEoQkezEPh2ZDrzRJP2ajg/XTB14h72EHXXCxlIyP6q9ldlHyYSc+KOdC3WYOg1FoFXsliZHVKGZUxo4jck+xwdTGRAIKYpdLjpw7DqAWS6N25cx4XK9GuBYoV7AkIM0kpdjDDXAciG2aws6ef4kumWuW/JSbdrFWGLdiAN8GVpBx6+9WTeDKerS9KyDLNf6rsz9Hm3LNWOYCMLlrEFiECgYEA/XB6pZGrbmSebn2lZO+WFs3LYCXoCUy4ePouLYZO7lKsHNeTYRxCc6cbEmap0hpuMCYVPJkqK+nL/CDwBad1QChN5rPVFl2rLtLu0owvoAuTVjWjYNPgDfWb3spXh0p+lZ9oi53kZd4iDGe/jQJzAcpUa3Yj2me6XFFTD+8FNCkCgYEAyIxrkCo2oqGg1aJ7xc9+aBcpsrVg/upptdTgiMGSVZ3XuixufZV36lzJOdmCBoFGKwmLgKkStJSOm3SHUqdEKQBbHI95aG3HgnAMRXOtkn1exExfpAmCnAAnAx8RONorOTjrMrW0BO0/NII7O7NkLg/ocahr/lXEylsC8dLlMCgYBDiwiEu6/Oee5nUAEWR2veo/YBp9iRMeswAqzv4Q2EInBQN3vFs7xaCj0CyG2V2wlmt5+NSNyeW27LwRN2zkxHTvaD94VgspH+pqSTZF0E8FDR9vWVxqG91qk11QNCwS2/Pn6kRu4p3+t/Ft9L+00fOwcIpLGlcWOPWvUiF/dxEQKBgQCNEEhwpWC80FejLaFGKIdPjEtmSrKpXBV0rfTF+LkizuUBJ3/9zQNRyeGxnnuRj+nlvO1e3sWACySHRu4G53MvR8qqVr13ecfuuA0nOvPojuq4THKrlzVsUqGelXBrlEdiFFJMY7axfvBzoYIyqq+aoTxFjJ6Z/czFOZyp6tnpxQKBgClvDZ9pUc+WH28fDnDPd36bC6HmBq/fkxo92RJey1aRFSoCtKNW5Eaqem8iDD+WAVYak2Vg7xUHkhwIEyVVfHIxZBXc0X1w3jNFjG1/Fyul4hLjqCH2QI8gOjHXAcDZe+MJa8b33ZTiiilUu5A0N8+Xz8qpMQ84cXODHJcPMPYb"
-//
-//	pKey := FormatPrivateKey(privateKey)
-//	fmt.Println(pKey)
-//}
-//
-//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)
-//}
-//
-//func TestAlipaySystemOauthToken(t *testing.T) {
-//	privateKey := "MIIEpAIBAAKCAQEA0N6CzO4T6NEgWrlW+mrZYMZSNAQ/vBeaCzo1qT+VYNBbklYWxwyUT4JptswSkupdSZGzKVX8rgTBnIbJXjaL9OuUS4KpkOVtqnW9uaPlei7kh2vHkyzbJS85HG8r4XwrrNGY/o4kp/ur51X5dSNPR+Bd5L/0/SUxztsMS8w2onkKk+VNh95yNQx3ZX0XXDhJGmURHFhuWf3bd0XYGoAsLfuEVj95dKOVUodP6RduGJYd/23CBWQfsapA2SxB/X8/ol/7pCgI9UxYkSm88dFZF5BygBv4Alc77ZP2G05VLRtyaEgvzooXzb7N9QEPWsMD4e7sjuuyhUWXakP78BN7tQIDAQABAoIBAGSqeVwPeqUA9ZkELrlueeo8ay4KxjT/Iw06NtalgHcytI+o0j2JAIn5jr29SU5piiCFClZnzOqJ/E5WYAL6QyX9zHFAPj1Jdjtrl887AMSMiTQDbCKwwcYAJoRfyERatioKsrQtCdm0YDuUojAknndD2b0ADzFaldDeneSCPeq7kHVpAylhLIbzGmE7rGWy1gAnJ5ljza/QMQQkVX7MP852IFEwl+8dYeMK4snfKH4SBWbGgLSkfgemEL3mbHaocl2encFHQYjjFSWabUedOfmf0s81+KytsylKLxzZePAKCpbw7cBzf09wXO7YfFPWP3ORSZtEb6UsJAZBD7Kr1ZkCgYEA9DFdgInepyyFgg4w0ljg7HzRT+2U8xGV/rzO6Yc3HerXKWlhUQlAxq+nLW//MZ4RKRilkQmp9876S2jchATXroU+D620q7RmwN80EPhJC3HuAD/vv13rXJpRLhOElL4eMfbllqN/p7Xu0i4P8qrN/WmyICBN4HQxwiAPacOejNMCgYEA2vfoQpcpfDh+pfFvh1kpZLqEsqNdap9Su/dBmtv0oXDST78Azh4WXskoF0g9MQIkUZDjM3Aaa3qWeVI7p8FW8pk1vC1ktD/3x5K19d/eTJYjw4zaxLSDu/8KXkk8+NjpbBJNiUmidFk8y9n15o98AmLmRx5xYeHosH2Y+W6D4FcCgYEA0F7rbYq3/qkEB7V6PZPv4nyj03NlHYENIEEWwrlJ8/J3xXORwieGKcSrgB9IgJtkA1Bvv3Kiob3xYLXLLbBAJ0C1c4WDXN1krQIJmM107xo5v+bO+tn2w58+1HV9NbuBYptO0BsWDBM4BgueOjE78xjlEXrfWT9tUjwvSs3NFlcCgYBakX2ExYdINQnVU1aBEhT379nhFYcXCc0rp+p/xgiaGdMzXtpTZshz7hnh/2Qn+C3Teu0uomibGfpRNf0stuBiuZIrQk9L6sVuy7TtfOoynUsvn/wArnVqdePw+bP5baamp69gYI+MNjjaTE3UTnbJeeSrd+EHzmvzTA/Q47AyQwKBgQC50qZ0jV1WsNfyvv3YyGmlLiyLFEPZ6aDY+gntgeXJ3fCORy90LOk+4FfkaWdIEGH21+dIx7g7oEa9rTt2foqZnCmWWC3vRlDYsdpRYXz4UOKbHsBocWvSCSOmQ8XgwoDve1MhAz7yOlrHIzX816Ld7QHQdI/d/Z4j1LrMyIWP7A=="
-//	rsp, err := AlipaySystemOauthToken("2019071565794663", privateKey, "", "06e8961891d647c0ac99bb1cebe7SE69")
-//	if err != nil {
-//		fmt.Println("gopay.AlipaySystemOauthToken:", err)
-//		return
-//	}
-//	fmt.Println("rsp:", *rsp)
-//	//fmt.Println("rsp:", rsp.ErrorResponse.Code)
-//	//fmt.Println("rsp:", rsp.ErrorResponse.Msg)
-//	//fmt.Println("rsp:", rsp.ErrorResponse.SubCode)
-//	//fmt.Println("rsp:", rsp.ErrorResponse.SubMsg)
-//}
-//
-//func TestDecryptAliPayOpenDataToStruct(t *testing.T) {
-//	data := "MkvuiIZsGOC8S038cu/JIpoRKnF+ZFjoIRGf5d/K4+ctYjCtb/eEkwgrdB5TeH/93bxff1Ylb+SE+UGStlpvcg=="
-//	key := "TDftre9FpItr46e9BVNJcw=="
-//	rsp := new(PhoneNumberResponse)
-//	err := DecryptAliPayOpenDataToStruct(data, key, rsp)
-//	if err != nil {
-//		fmt.Println("err:", err)
-//		return
-//	}
-//	fmt.Println("rsp.Code:", rsp.Code)
-//	fmt.Println("rsp.Msg:", rsp.Msg)
-//	fmt.Println("rsp.SubCode:", rsp.SubCode)
-//	fmt.Println("rsp.SubMsg:", rsp.SubMsg)
-//	fmt.Println("rsp.Mobile:", rsp.Mobile)
-//}
-
-//==================================================//
 type List struct {
 	BillList []fundBillListInfo `json:"bill_list"`
 }

+ 10 - 0
alipay_params.go

@@ -28,6 +28,16 @@ import (
 //	NotifyUrl  string `json:"notify_url"`  //支付宝服务器主动通知商户服务器里指定的页面http/https路径。
 //	BizContent string `json:"biz_content"` //业务请求参数的集合,最大长度不限,除公共参数外所有请求参数都必须放在这个参数中传递,具体参照各产品快速接入文档
 
+type OpenApiRoyaltyDetailInfoPojo struct {
+	RoyaltyType  string `json:"royalty_type,omitempty"`
+	TransOut     string `json:"trans_out,omitempty"`
+	TransOutType string `json:"trans_out_type,omitempty"`
+	TransInType  string `json:"trans_in_type,omitempty"`
+	TransIn      string `json:"trans_in"`
+	Amount       string `json:"amount,omitempty"`
+	Desc         string `json:"desc,omitempty"`
+}
+
 //设置支付后的ReturnUrl
 func (this *aliPayClient) SetReturnUrl(url string) (client *aliPayClient) {
 	this.ReturnUrl = url

+ 76 - 74
alipay_server_api.go → alipay_service_api.go

@@ -20,37 +20,37 @@ import (
 )
 
 //解析支付宝支付完成后的Notify信息
-func ParseAliPayNotifyResult(req *http.Request) (notifyRsp *AliPayNotifyRequest, err error) {
-	notifyRsp = new(AliPayNotifyRequest)
-	notifyRsp.NotifyTime = req.FormValue("notify_time")
-	notifyRsp.NotifyType = req.FormValue("notify_type")
-	notifyRsp.NotifyId = req.FormValue("notify_id")
-	notifyRsp.AppId = req.FormValue("app_id")
-	notifyRsp.Charset = req.FormValue("charset")
-	notifyRsp.Version = req.FormValue("version")
-	notifyRsp.SignType = req.FormValue("sign_type")
-	notifyRsp.Sign = req.FormValue("sign")
-	notifyRsp.AuthAppId = req.FormValue("auth_app_id")
-	notifyRsp.TradeNo = req.FormValue("trade_no")
-	notifyRsp.OutTradeNo = req.FormValue("out_trade_no")
-	notifyRsp.OutBizNo = req.FormValue("out_biz_no")
-	notifyRsp.BuyerId = req.FormValue("buyer_id")
-	notifyRsp.BuyerLogonId = req.FormValue("buyer_logon_id")
-	notifyRsp.SellerId = req.FormValue("seller_id")
-	notifyRsp.SellerEmail = req.FormValue("seller_email")
-	notifyRsp.TradeStatus = req.FormValue("trade_status")
-	notifyRsp.TotalAmount = req.FormValue("total_amount")
-	notifyRsp.ReceiptAmount = req.FormValue("receipt_amount")
-	notifyRsp.InvoiceAmount = req.FormValue("invoice_amount")
-	notifyRsp.BuyerPayAmount = req.FormValue("buyer_pay_amount")
-	notifyRsp.PointAmount = req.FormValue("point_amount")
-	notifyRsp.RefundFee = req.FormValue("refund_fee")
-	notifyRsp.Subject = req.FormValue("subject")
-	notifyRsp.Body = req.FormValue("body")
-	notifyRsp.GmtCreate = req.FormValue("gmt_create")
-	notifyRsp.GmtPayment = req.FormValue("gmt_payment")
-	notifyRsp.GmtRefund = req.FormValue("gmt_refund")
-	notifyRsp.GmtClose = req.FormValue("gmt_close")
+func ParseAliPayNotifyResult(req *http.Request) (notifyReq *AliPayNotifyRequest, err error) {
+	notifyReq = new(AliPayNotifyRequest)
+	notifyReq.NotifyTime = req.FormValue("notify_time")
+	notifyReq.NotifyType = req.FormValue("notify_type")
+	notifyReq.NotifyId = req.FormValue("notify_id")
+	notifyReq.AppId = req.FormValue("app_id")
+	notifyReq.Charset = req.FormValue("charset")
+	notifyReq.Version = req.FormValue("version")
+	notifyReq.SignType = req.FormValue("sign_type")
+	notifyReq.Sign = req.FormValue("sign")
+	notifyReq.AuthAppId = req.FormValue("auth_app_id")
+	notifyReq.TradeNo = req.FormValue("trade_no")
+	notifyReq.OutTradeNo = req.FormValue("out_trade_no")
+	notifyReq.OutBizNo = req.FormValue("out_biz_no")
+	notifyReq.BuyerId = req.FormValue("buyer_id")
+	notifyReq.BuyerLogonId = req.FormValue("buyer_logon_id")
+	notifyReq.SellerId = req.FormValue("seller_id")
+	notifyReq.SellerEmail = req.FormValue("seller_email")
+	notifyReq.TradeStatus = req.FormValue("trade_status")
+	notifyReq.TotalAmount = req.FormValue("total_amount")
+	notifyReq.ReceiptAmount = req.FormValue("receipt_amount")
+	notifyReq.InvoiceAmount = req.FormValue("invoice_amount")
+	notifyReq.BuyerPayAmount = req.FormValue("buyer_pay_amount")
+	notifyReq.PointAmount = req.FormValue("point_amount")
+	notifyReq.RefundFee = req.FormValue("refund_fee")
+	notifyReq.Subject = req.FormValue("subject")
+	notifyReq.Body = req.FormValue("body")
+	notifyReq.GmtCreate = req.FormValue("gmt_create")
+	notifyReq.GmtPayment = req.FormValue("gmt_payment")
+	notifyReq.GmtRefund = req.FormValue("gmt_refund")
+	notifyReq.GmtClose = req.FormValue("gmt_close")
 	billList := req.FormValue("fund_bill_list")
 	//log.Println("billList:", billList)
 	if billList != null {
@@ -59,11 +59,11 @@ func ParseAliPayNotifyResult(req *http.Request) (notifyRsp *AliPayNotifyRequest,
 		if err != nil {
 			return nil, err
 		}
-		notifyRsp.FundBillList = bills
+		notifyReq.FundBillList = bills
 	} else {
-		notifyRsp.FundBillList = nil
+		notifyReq.FundBillList = nil
 	}
-	notifyRsp.PassbackParams = req.FormValue("passback_params")
+	notifyReq.PassbackParams = req.FormValue("passback_params")
 	detailList := req.FormValue("voucher_detail_list")
 	//log.Println("detailList:", detailList)
 	if detailList != null {
@@ -72,17 +72,18 @@ func ParseAliPayNotifyResult(req *http.Request) (notifyRsp *AliPayNotifyRequest,
 		if err != nil {
 			return nil, err
 		}
-		notifyRsp.VoucherDetailList = details
+		notifyReq.VoucherDetailList = details
 	} else {
-		notifyRsp.VoucherDetailList = nil
+		notifyReq.VoucherDetailList = nil
 	}
-	return notifyRsp, err
+	return notifyReq, err
 }
 
 //解密支付宝开放数据
 //    encryptedData:包括敏感数据在内的完整用户信息的加密数据
 //    sessionKey:会话密钥
 //    beanPtr:需要解析到的结构体指针
+//    文档:https://docs.alipay.com/mini/introduce/aes
 func DecryptAliPayOpenDataToStruct(encryptedData, secretKey string, beanPtr interface{}) (err error) {
 	//验证参数类型
 	beanValue := reflect.ValueOf(beanPtr)
@@ -120,43 +121,43 @@ func DecryptAliPayOpenDataToStruct(encryptedData, secretKey string, beanPtr inte
 
 //支付通知的签名验证和参数签名后的Sign
 //    aliPayPublicKey:支付宝公钥
-//    notifyRsp:利用 gopay.ParseAliPayNotifyResult() 得到的结构体
+//    notifyReq:利用 gopay.ParseAliPayNotifyResult() 得到的结构体
 //    返回参数ok:是否验证通过
 //    返回参数err:错误信息
-func VerifyAliPayResultSign(aliPayPublicKey string, notifyRsp *AliPayNotifyRequest) (ok bool, err error) {
+func VerifyAliPayResultSign(aliPayPublicKey string, notifyReq *AliPayNotifyRequest) (ok bool, err error) {
 	body := make(BodyMap)
-	body.Set("notify_time", notifyRsp.NotifyTime)
-	body.Set("notify_type", notifyRsp.NotifyType)
-	body.Set("notify_id", notifyRsp.NotifyId)
-	body.Set("app_id", notifyRsp.AppId)
-	body.Set("charset", notifyRsp.Charset)
-	body.Set("version", notifyRsp.Version)
-	//body.Set("sign", notifyRsp.Sign)          //验签时去掉
-	//body.Set("sign_type", notifyRsp.SignType) //验签时去掉
-	body.Set("auth_app_id", notifyRsp.AuthAppId)
-	body.Set("trade_no", notifyRsp.TradeNo)
-	body.Set("out_trade_no", notifyRsp.OutTradeNo)
-	body.Set("out_biz_no", notifyRsp.OutBizNo)
-	body.Set("buyer_id", notifyRsp.BuyerId)
-	body.Set("buyer_logon_id", notifyRsp.BuyerLogonId)
-	body.Set("seller_id", notifyRsp.SellerId)
-	body.Set("seller_email", notifyRsp.SellerEmail)
-	body.Set("trade_status", notifyRsp.TradeStatus)
-	body.Set("total_amount", notifyRsp.TotalAmount)
-	body.Set("receipt_amount", notifyRsp.ReceiptAmount)
-	body.Set("invoice_amount", notifyRsp.InvoiceAmount)
-	body.Set("buyer_pay_amount", notifyRsp.BuyerPayAmount)
-	body.Set("point_amount", notifyRsp.PointAmount)
-	body.Set("refund_fee", notifyRsp.RefundFee)
-	body.Set("subject", notifyRsp.Subject)
-	body.Set("body", notifyRsp.Body)
-	body.Set("gmt_create", notifyRsp.GmtCreate)
-	body.Set("gmt_payment", notifyRsp.GmtPayment)
-	body.Set("gmt_refund", notifyRsp.GmtRefund)
-	body.Set("gmt_close", notifyRsp.GmtClose)
-	body.Set("fund_bill_list", jsonToString(notifyRsp.FundBillList))
-	body.Set("passback_params", notifyRsp.PassbackParams)
-	body.Set("voucher_detail_list", jsonToString(notifyRsp.VoucherDetailList))
+	body.Set("notify_time", notifyReq.NotifyTime)
+	body.Set("notify_type", notifyReq.NotifyType)
+	body.Set("notify_id", notifyReq.NotifyId)
+	body.Set("app_id", notifyReq.AppId)
+	body.Set("charset", notifyReq.Charset)
+	body.Set("version", notifyReq.Version)
+	//body.Set("sign", notifyReq.Sign)          //验签时去掉
+	//body.Set("sign_type", notifyReq.SignType) //验签时去掉
+	body.Set("auth_app_id", notifyReq.AuthAppId)
+	body.Set("trade_no", notifyReq.TradeNo)
+	body.Set("out_trade_no", notifyReq.OutTradeNo)
+	body.Set("out_biz_no", notifyReq.OutBizNo)
+	body.Set("buyer_id", notifyReq.BuyerId)
+	body.Set("buyer_logon_id", notifyReq.BuyerLogonId)
+	body.Set("seller_id", notifyReq.SellerId)
+	body.Set("seller_email", notifyReq.SellerEmail)
+	body.Set("trade_status", notifyReq.TradeStatus)
+	body.Set("total_amount", notifyReq.TotalAmount)
+	body.Set("receipt_amount", notifyReq.ReceiptAmount)
+	body.Set("invoice_amount", notifyReq.InvoiceAmount)
+	body.Set("buyer_pay_amount", notifyReq.BuyerPayAmount)
+	body.Set("point_amount", notifyReq.PointAmount)
+	body.Set("refund_fee", notifyReq.RefundFee)
+	body.Set("subject", notifyReq.Subject)
+	body.Set("body", notifyReq.Body)
+	body.Set("gmt_create", notifyReq.GmtCreate)
+	body.Set("gmt_payment", notifyReq.GmtPayment)
+	body.Set("gmt_refund", notifyReq.GmtRefund)
+	body.Set("gmt_close", notifyReq.GmtClose)
+	body.Set("fund_bill_list", jsonToString(notifyReq.FundBillList))
+	body.Set("passback_params", notifyReq.PassbackParams)
+	body.Set("voucher_detail_list", jsonToString(notifyReq.VoucherDetailList))
 
 	newBody := make(BodyMap)
 	for k, v := range body {
@@ -169,7 +170,7 @@ func VerifyAliPayResultSign(aliPayPublicKey string, notifyRsp *AliPayNotifyReque
 	signData := sortAliPaySignParams(newBody)
 
 	//log.Println("签名字符串:", signData)
-	err = verifyAliPaySign(signData, notifyRsp.Sign, notifyRsp.SignType, pKey)
+	err = verifyAliPaySign(signData, notifyReq.Sign, notifyReq.SignType, pKey)
 	if err != nil {
 		return false, err
 	}
@@ -192,7 +193,7 @@ func jsonToString(v interface{}) (str string) {
 	return s
 }
 
-//格式化秘钥
+//格式化应用秘钥
 func FormatPrivateKey(privateKey string) (pKey string) {
 	buffer := new(bytes.Buffer)
 	buffer.WriteString("-----BEGIN RSA PRIVATE KEY-----\n")
@@ -222,7 +223,7 @@ func FormatPrivateKey(privateKey string) (pKey string) {
 	return
 }
 
-//格式化
+//格式化支付宝公
 func FormatAliPayPublicKey(publicKey string) (pKey string) {
 	buffer := new(bytes.Buffer)
 	buffer.WriteString("-----BEGIN PUBLIC KEY-----\n")
@@ -296,6 +297,7 @@ func verifyAliPaySign(signData, sign, signType, aliPayPublicKey string) (err err
 //    privateKey:应用私钥
 //    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)

+ 37 - 0
examples/alipay_AliPayTradeAppPay.go

@@ -0,0 +1,37 @@
+//==================================
+//  * Name:Jerry
+//  * DateTime:2019/8/9 17:15
+//  * Desc:
+//==================================
+package main
+
+import (
+	"fmt"
+	"github.com/iGoogle-ink/gopay"
+)
+
+func main() {
+	//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 := gopay.NewAliPayClient("2016091200494382", privateKey, false)
+	//配置公共参数
+	client.SetCharset("utf-8").
+		SetSignType("RSA2").
+		SetNotifyUrl("https://www.gopay.ink")
+	//请求参数
+	body := make(gopay.BodyMap)
+	body.Set("subject", "测试APP支付")
+	body.Set("out_trade_no", "GZ201901301040355706100469")
+	body.Set("total_amount", "1.00")
+	//手机APP支付参数请求
+	payParam, err := client.AliPayTradeAppPay(body)
+	if err != nil {
+		fmt.Println("err:", err)
+		return
+	}
+	fmt.Println("payParam:", payParam)
+}

+ 35 - 0
examples/alipay_AliPayTradeCancel.go

@@ -0,0 +1,35 @@
+//==================================
+//  * Name:Jerry
+//  * DateTime:2019/8/9 17:12
+//  * Desc:
+//==================================
+package main
+
+import (
+	"fmt"
+	"github.com/iGoogle-ink/gopay"
+)
+
+func main() {
+	//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 := gopay.NewAliPayClient("2016091200494382", privateKey, false)
+	//配置公共参数
+	client.SetCharset("utf-8").
+		SetSignType("RSA2").
+		SetNotifyUrl("https://www.gopay.ink")
+	//请求参数
+	body := make(gopay.BodyMap)
+	body.Set("out_trade_no", "GYWX201901301040355706100457")
+	//撤销支付订单
+	aliRsp, err := client.AliPayTradeCancel(body)
+	if err != nil {
+		fmt.Println("err:", err)
+		return
+	}
+	fmt.Println("aliRsp:", *aliRsp)
+}

+ 35 - 0
examples/alipay_AliPayTradeClose.go

@@ -0,0 +1,35 @@
+//==================================
+//  * Name:Jerry
+//  * DateTime:2019/8/9 17:11
+//  * Desc:
+//==================================
+package main
+
+import (
+	"fmt"
+	"github.com/iGoogle-ink/gopay"
+)
+
+func main() {
+	//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 := gopay.NewAliPayClient("2016091200494382", privateKey, false)
+	//配置公共参数
+	client.SetCharset("utf-8").
+		SetSignType("RSA2").
+		SetNotifyUrl("https://www.gopay.ink")
+	//请求参数
+	body := make(gopay.BodyMap)
+	body.Set("out_trade_no", "GYWX201901301040355706100459")
+	//条码支付
+	aliRsp, err := client.AliPayTradeClose(body)
+	if err != nil {
+		fmt.Println("err:", err)
+		return
+	}
+	fmt.Println("aliRsp:", *aliRsp)
+}

+ 39 - 0
examples/alipay_AliPayTradeCreate.go

@@ -0,0 +1,39 @@
+//==================================
+//  * Name:Jerry
+//  * DateTime:2019/8/9 17:10
+//  * Desc:
+//==================================
+package main
+
+import (
+	"fmt"
+	"github.com/iGoogle-ink/gopay"
+)
+
+func main() {
+	//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 := gopay.NewAliPayClient("2016091200494382", privateKey, false)
+	//配置公共参数
+	client.SetCharset("utf-8").
+		SetSignType("RSA2").
+		SetNotifyUrl("https://www.gopay.ink")
+	//请求参数
+	body := make(gopay.BodyMap)
+	body.Set("subject", "创建订单")
+	body.Set("buyer_id", "2088802095984694")
+	body.Set("out_trade_no", "GZ201901301040355706")
+	body.Set("total_amount", "0.01")
+	//创建订单
+	aliRsp, err := client.AliPayTradeCreate(body)
+	if err != nil {
+		fmt.Println("err:", err)
+		return
+	}
+	fmt.Println("aliRsp:", *aliRsp)
+	fmt.Println("aliRsp.TradeNo:", aliRsp.AliPayTradeCreateResponse.TradeNo)
+}

+ 35 - 0
examples/alipay_AliPayTradeFastPayRefundQuery.go

@@ -0,0 +1,35 @@
+//==================================
+//  * Name:Jerry
+//  * DateTime:2019/8/9 17:18
+//  * Desc:
+//==================================
+package main
+
+import (
+	"fmt"
+	"github.com/iGoogle-ink/gopay"
+)
+
+func main() {
+	//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 := gopay.NewAliPayClient("2016091200494382", privateKey, false)
+	//配置公共参数
+	client.SetCharset("utf-8").
+		SetSignType("RSA2")
+	//请求参数
+	body := make(gopay.BodyMap)
+	body.Set("out_trade_no", "GZ201907301420334577")
+	body.Set("out_request_no", "GZ201907301420334577")
+	//发起退款查询请求
+	aliRsp, err := client.AliPayTradeFastPayRefundQuery(body)
+	if err != nil {
+		fmt.Println("err:", err)
+		return
+	}
+	fmt.Println("aliRsp:", *aliRsp)
+}

+ 41 - 0
examples/alipay_AliPayTradeOrderSettle.go

@@ -0,0 +1,41 @@
+//==================================
+//  * Name:Jerry
+//  * DateTime:2019/8/9 17:19
+//  * Desc:
+//==================================
+package main
+
+import (
+	"fmt"
+	"github.com/iGoogle-ink/gopay"
+)
+
+func main() {
+	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, true)
+	//配置公共参数
+	client.SetCharset("utf-8").
+		SetSignType("RSA2")
+	//请求参数
+	body := make(gopay.BodyMap)
+	body.Set("out_request_no", "201907301518083384")
+	body.Set("trade_no", "2019072522001484690549776067")
+
+	var listParams []gopay.OpenApiRoyaltyDetailInfoPojo
+	listParams = append(listParams, gopay.OpenApiRoyaltyDetailInfoPojo{"transfer", "2088802095984694", "userId", "userId", "2088102363632794", "0.01", "分账给2088102363632794"})
+
+	body.Set("royalty_parameters", listParams)
+	fmt.Println("listParams:", body.Get("royalty_parameters"))
+
+	//发起交易结算接口
+	aliRsp, err := client.AliPayTradeOrderSettle(body)
+	if err != nil {
+		fmt.Println("err:", err)
+		return
+	}
+	fmt.Println("aliRsp:", *aliRsp)
+}

+ 39 - 0
examples/alipay_AliPayTradePagePay.go

@@ -0,0 +1,39 @@
+//==================================
+//  * Name:Jerry
+//  * DateTime:2019/8/9 17:16
+//  * Desc:
+//==================================
+package main
+
+import (
+	"fmt"
+	"github.com/iGoogle-ink/gopay"
+)
+
+func main() {
+	//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 := gopay.NewAliPayClient("2016091200494382", privateKey, false)
+	//配置公共参数
+	client.SetCharset("utf-8").
+		SetSignType("RSA2").
+		SetNotifyUrl("https://www.gopay.ink")
+	//请求参数
+	body := make(gopay.BodyMap)
+	body.Set("subject", "网站测试支付")
+	body.Set("out_trade_no", "GZ201901301040355706100469")
+	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)
+}

+ 40 - 0
examples/alipay_AliPayTradePay.go

@@ -0,0 +1,40 @@
+//==================================
+//  * Name:Jerry
+//  * DateTime:2019/8/9 17:07
+//  * Desc:
+//==================================
+package main
+
+import (
+	"fmt"
+	"github.com/iGoogle-ink/gopay"
+)
+
+func main() {
+	//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 := gopay.NewAliPayClient("2016091200494382", privateKey, false)
+	//配置公共参数
+	client.SetCharset("utf-8").
+		SetSignType("RSA2").
+		SetNotifyUrl("https://www.gopay.ink")
+	//请求参数
+	body := make(gopay.BodyMap)
+	body.Set("subject", "条码支付")
+	body.Set("scene", "bar_code")
+	body.Set("auth_code", "284680185023768373")
+	body.Set("out_trade_no", "GYWX201901301040355706100458")
+	body.Set("total_amount", "100.00")
+	body.Set("timeout_express", "2m")
+	//条码支付
+	aliRsp, err := client.AliPayTradePay(body)
+	if err != nil {
+		fmt.Println("err:", err)
+		return
+	}
+	fmt.Println("aliRsp:", *aliRsp)
+}

+ 38 - 0
examples/alipay_AliPayTradePrecreate.go

@@ -0,0 +1,38 @@
+//==================================
+//  * Name:Jerry
+//  * DateTime:2019/8/9 17:27
+//  * Desc:
+//==================================
+package main
+
+import (
+	"fmt"
+	"github.com/iGoogle-ink/gopay"
+)
+
+func main() {
+	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://api.iguiyu.com/gy_pay/alipay/notify")
+	//请求参数
+	body := make(gopay.BodyMap)
+	body.Set("subject", "预创建创建订单")
+	body.Set("out_trade_no", "GZ201901301040355703")
+	body.Set("total_amount", "100")
+	//创建订单
+	aliRsp, err := client.AliPayTradePrecreate(body)
+	if err != nil {
+		fmt.Println("err:", err)
+		return
+	}
+	fmt.Println("aliRsp:", *aliRsp)
+	fmt.Println("aliRsp.QrCode:", aliRsp.AlipayTradePrecreateResponse.QrCode)
+	fmt.Println("aliRsp.OutTradeNo:", aliRsp.AlipayTradePrecreateResponse.OutTradeNo)
+}

+ 35 - 0
examples/alipay_AliPayTradeQuery.go

@@ -0,0 +1,35 @@
+//==================================
+//  * Name:Jerry
+//  * DateTime:2019/8/9 17:13
+//  * Desc:
+//==================================
+package main
+
+import (
+	"fmt"
+	"github.com/iGoogle-ink/gopay"
+)
+
+func main() {
+	//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 := gopay.NewAliPayClient("2016091200494382", privateKey, false)
+	//配置公共参数
+	client.SetCharset("utf-8").
+		SetSignType("RSA2")
+	//请求参数
+	body := make(gopay.BodyMap)
+	body.Set("out_trade_no", "GYWX201901301040355706100457")
+
+	//查询订单
+	aliRsp, err := client.AliPayTradeQuery(body)
+	if err != nil {
+		fmt.Println("err:", err)
+		return
+	}
+	fmt.Println("aliRsp:", *aliRsp)
+}

+ 36 - 0
examples/alipay_AliPayTradeRefund.go

@@ -0,0 +1,36 @@
+//==================================
+//  * Name:Jerry
+//  * DateTime:2019/8/9 17:16
+//  * Desc:
+//==================================
+package main
+
+import (
+	"fmt"
+	"github.com/iGoogle-ink/gopay"
+)
+
+func main() {
+	//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 := gopay.NewAliPayClient("2016091200494382", privateKey, false)
+	//配置公共参数
+	client.SetCharset("utf-8").
+		SetSignType("RSA2")
+	//请求参数
+	body := make(gopay.BodyMap)
+	body.Set("out_trade_no", "GZ201907301420334577")
+	body.Set("refund_amount", "5")
+	body.Set("refund_reason", "测试退款")
+	//发起退款请求
+	aliRsp, err := client.AliPayTradeRefund(body)
+	if err != nil {
+		fmt.Println("err:", err)
+		return
+	}
+	fmt.Println("aliRsp:", *aliRsp)
+}

+ 40 - 0
examples/alipay_AliPayTradeWapPay.go

@@ -0,0 +1,40 @@
+//==================================
+//  * Name:Jerry
+//  * DateTime:2019/8/9 17:13
+//  * Desc:
+//==================================
+package main
+
+import (
+	"fmt"
+	"github.com/iGoogle-ink/gopay"
+)
+
+func main() {
+	//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 := gopay.NewAliPayClient("2016091200494382", privateKey, false)
+	//配置公共参数
+	client.SetCharset("utf-8").
+		SetSignType("RSA2").
+		//SetReturnUrl("https://www.gopay.ink").
+		SetNotifyUrl("https://www.gopay.ink")
+	//请求参数
+	body := make(gopay.BodyMap)
+	body.Set("subject", "手机网站测试支付")
+	body.Set("out_trade_no", "GZ201901301040355703")
+	body.Set("quit_url", "https://www.gopay.ink")
+	body.Set("total_amount", "100.00")
+	body.Set("product_code", "QUICK_WAP_WAY")
+	//手机网站支付请求
+	payUrl, err := client.AliPayTradeWapPay(body)
+	if err != nil {
+		fmt.Println("err:", err)
+		return
+	}
+	fmt.Println("payUrl:", payUrl)
+}

+ 78 - 0
examples/alipay_service_api.go

@@ -0,0 +1,78 @@
+//==================================
+//  * Name:Jerry
+//  * DateTime:2019/8/9 16:53
+//  * Desc:
+//==================================
+package main
+
+import (
+	"fmt"
+	"github.com/iGoogle-ink/gopay"
+	"log"
+	"net/http"
+)
+
+func main() {
+	FormatPrivateKey()
+	FormatAliPayPublicKey()
+	AlipaySystemOauthToken()
+	DecryptAliPayOpenDataToStruct()
+}
+
+func FormatPrivateKey() {
+	privateKey := "MIIEowIBAAKCAQEAxorj0SisU93LxawVWybZzDYfq8bxzw9VIOKDSW1M5ombl/MvZTT9IuBSGvqUxXFSWqY05e+CBlquFrOHTzKttmzeZJEKHpGAkW+4TsX6N4ZCHfz3Sz5MBAzBqQvscUD0FTZ+VlQbQ1HjQiKLbHaNY+fFVn3q2XL6dNtWwFhad592M1lCbzEjZ7yqFcxJ0jIDBh1lWwemHu52iW3YkvLD5lE8IXRiJedhgPFXCFAkX5HLcc0/jicRTarQ9gRNpHC6B87T2SDjKmgxqcws4CVdYJbztU1KLrsbMALFMOp24x8xsLgR88XeraQyUWe6V3lt1OYEOd9XLHWRx33bRHSwIDAQABAoIBAHjrGfjG1r11Nae8OH19WeRfikZqMdcztVsD2YWcxdsaL+MJPvJapVjaWecIehcN/2QqGcl4Zy5Lh/9Xc68uZFHYWFHTa+BWKYFqE0wWk1/Bqv7slAgFdvJ4enHkSypmrsFEoQkezEPh2ZDrzRJP2ajg/XTB14h72EHXXCxlIyP6q9ldlHyYSc+KOdC3WYOg1FoFXsliZHVKGZUxo4jck+xwdTGRAIKYpdLjpw7DqAWS6N25cx4XK9GuBYoV7AkIM0kpdjDDXAciG2aws6ef4kumWuW/JSbdrFWGLdiAN8GVpBx6+9WTeDKerS9KyDLNf6rsz9Hm3LNWOYCMLlrEFiECgYEA/XB6pZGrbmSebn2lZO+WFs3LYCXoCUy4ePouLYZO7lKsHNeTYRxCc6cbEmap0hpuMCYVPJkqK+nL/CDwBad1QChN5rPVFl2rLtLu0owvoAuTVjWjYNPgDfWb3spXh0p+lZ9oi53kZd4iDGe/jQJzAcpUa3Yj2me6XFFTD+8FNCkCgYEAyIxrkCo2oqGg1aJ7xc9+aBcpsrVg/upptdTgiMGSVZ3XuixufZV36lzJOdmCBoFGKwmLgKkStJSOm3SHUqdEKQBbHI95aG3HgnAMRXOtkn1exExfpAmCnAAnAx8RONorOTjrMrW0BO0/NII7O7NkLg/ocahr/lXEylsC8dLlMCgYBDiwiEu6/Oee5nUAEWR2veo/YBp9iRMeswAqzv4Q2EInBQN3vFs7xaCj0CyG2V2wlmt5+NSNyeW27LwRN2zkxHTvaD94VgspH+pqSTZF0E8FDR9vWVxqG91qk11QNCwS2/Pn6kRu4p3+t/Ft9L+00fOwcIpLGlcWOPWvUiF/dxEQKBgQCNEEhwpWC80FejLaFGKIdPjEtmSrKpXBV0rfTF+LkizuUBJ3/9zQNRyeGxnnuRj+nlvO1e3sWACySHRu4G53MvR8qqVr13ecfuuA0nOvPojuq4THKrlzVsUqGelXBrlEdiFFJMY7axfvBzoYIyqq+aoTxFjJ6Z/czFOZyp6tnpxQKBgClvDZ9pUc+WH28fDnDPd36bC6HmBq/fkxo92RJey1aRFSoCtKNW5Eaqem8iDD+WAVYak2Vg7xUHkhwIEyVVfHIxZBXc0X1w3jNFjG1/Fyul4hLjqCH2QI8gOjHXAcDZe+MJa8b33ZTiiilUu5A0N8+Xz8qpMQ84cXODHJcPMPYb"
+
+	pKey := gopay.FormatPrivateKey(privateKey)
+	fmt.Println(pKey)
+}
+
+func FormatAliPayPublicKey() {
+	aliPayPublicKey := "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAp8gueNlkbiDidz6FBQEBpqoRgH8h7JtsPtYW0nzAqy1MME4mFnDSMfSKlreUomS3a55gmBopL1eF4/Km/dEnaL5tCY9+24SKn1D4iyls+lvz/ZjvUjVwxoUYBh8kkcxMZSDeDz8//o+9qZTrICVP2a4sBB8T0XmU4gxfw8FsmtoomBH1nLk3AO7wgRN2a3+SRSAmxrhIGDmF1lljSlhY32eJpJ2TZQKaWNW+7yDBU/0Wt3kQVY84vr14yYagnSCiIfqyVFqePayRtmVJDr5qvSXr51tdqs2zKZCu+26X7JAF4BSsaq4gmY5DmDTm4TohCnBduI1+bPGD+igVmtl05wIDAQAB"
+
+	pKey := gopay.FormatAliPayPublicKey(aliPayPublicKey)
+	fmt.Println(pKey)
+}
+
+func AlipaySystemOauthToken() {
+	privateKey := "MIIEpAIBAAKCAQEA0N6CzO4T6NEgWrlW+mrZYMZSNAQ/vBeaCzo1qT+VYNBbklYWxwyUT4JptswSkupdSZGzKVX8rgTBnIbJXjaL9OuUS4KpkOVtqnW9uaPlei7kh2vHkyzbJS85HG8r4XwrrNGY/o4kp/ur51X5dSNPR+Bd5L/0/SUxztsMS8w2onkKk+VNh95yNQx3ZX0XXDhJGmURHFhuWf3bd0XYGoAsLfuEVj95dKOVUodP6RduGJYd/23CBWQfsapA2SxB/X8/ol/7pCgI9UxYkSm88dFZF5BygBv4Alc77ZP2G05VLRtyaEgvzooXzb7N9QEPWsMD4e7sjuuyhUWXakP78BN7tQIDAQABAoIBAGSqeVwPeqUA9ZkELrlueeo8ay4KxjT/Iw06NtalgHcytI+o0j2JAIn5jr29SU5piiCFClZnzOqJ/E5WYAL6QyX9zHFAPj1Jdjtrl887AMSMiTQDbCKwwcYAJoRfyERatioKsrQtCdm0YDuUojAknndD2b0ADzFaldDeneSCPeq7kHVpAylhLIbzGmE7rGWy1gAnJ5ljza/QMQQkVX7MP852IFEwl+8dYeMK4snfKH4SBWbGgLSkfgemEL3mbHaocl2encFHQYjjFSWabUedOfmf0s81+KytsylKLxzZePAKCpbw7cBzf09wXO7YfFPWP3ORSZtEb6UsJAZBD7Kr1ZkCgYEA9DFdgInepyyFgg4w0ljg7HzRT+2U8xGV/rzO6Yc3HerXKWlhUQlAxq+nLW//MZ4RKRilkQmp9876S2jchATXroU+D620q7RmwN80EPhJC3HuAD/vv13rXJpRLhOElL4eMfbllqN/p7Xu0i4P8qrN/WmyICBN4HQxwiAPacOejNMCgYEA2vfoQpcpfDh+pfFvh1kpZLqEsqNdap9Su/dBmtv0oXDST78Azh4WXskoF0g9MQIkUZDjM3Aaa3qWeVI7p8FW8pk1vC1ktD/3x5K19d/eTJYjw4zaxLSDu/8KXkk8+NjpbBJNiUmidFk8y9n15o98AmLmRx5xYeHosH2Y+W6D4FcCgYEA0F7rbYq3/qkEB7V6PZPv4nyj03NlHYENIEEWwrlJ8/J3xXORwieGKcSrgB9IgJtkA1Bvv3Kiob3xYLXLLbBAJ0C1c4WDXN1krQIJmM107xo5v+bO+tn2w58+1HV9NbuBYptO0BsWDBM4BgueOjE78xjlEXrfWT9tUjwvSs3NFlcCgYBakX2ExYdINQnVU1aBEhT379nhFYcXCc0rp+p/xgiaGdMzXtpTZshz7hnh/2Qn+C3Teu0uomibGfpRNf0stuBiuZIrQk9L6sVuy7TtfOoynUsvn/wArnVqdePw+bP5baamp69gYI+MNjjaTE3UTnbJeeSrd+EHzmvzTA/Q47AyQwKBgQC50qZ0jV1WsNfyvv3YyGmlLiyLFEPZ6aDY+gntgeXJ3fCORy90LOk+4FfkaWdIEGH21+dIx7g7oEa9rTt2foqZnCmWWC3vRlDYsdpRYXz4UOKbHsBocWvSCSOmQ8XgwoDve1MhAz7yOlrHIzX816Ld7QHQdI/d/Z4j1LrMyIWP7A=="
+	rsp, err := gopay.AlipaySystemOauthToken("2019071565794663", 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=="
+	key := "TDftre9FpItr46e9BVNJcw=="
+	rsp := new(gopay.PhoneNumberResponse)
+	err := gopay.DecryptAliPayOpenDataToStruct(data, key, rsp)
+	if err != nil {
+		fmt.Println("err:", err)
+		return
+	}
+	fmt.Println("rsp.Code:", rsp.Code)
+	fmt.Println("rsp.Msg:", rsp.Msg)
+	fmt.Println("rsp.SubCode:", rsp.SubCode)
+	fmt.Println("rsp.SubMsg:", rsp.SubMsg)
+	fmt.Println("rsp.Mobile:", rsp.Mobile)
+}
+
+func ParseAliPayNotifyResultAndVerifyAliPayResultSign(req *http.Request) {
+	aliPayPublicKey := "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1wn1sU/8Q0rYLlZ6sq3enrPZw2ptp6FecHR2bBFLjJ+sKzepROd0bKddgj+Mr1ffr3Ej78mLdWV8IzLfpXUi945DkrQcOUWLY0MHhYVG2jSs/qzFfpzmtut2Cl2TozYpE84zom9ei06u2AXLMBkU6VpznZl+R4qIgnUfByt3Ix5b3h4Cl6gzXMAB1hJrrrCkq+WvWb3Fy0vmk/DUbJEz8i8mQPff2gsHBE1nMPvHVAMw1GMk9ImB4PxucVek4ZbUzVqxZXphaAgUXFK2FSFU+Q+q1SPvHbUsjtIyL+cLA6H/6ybFF9Ffp27Y14AHPw29+243/SpMisbGcj2KD+evBwIDAQAB"
+
+	//解析请求参数
+	notifyReq, err := gopay.ParseAliPayNotifyResult(req)
+	if err != nil {
+		fmt.Println("err:", err)
+	}
+	fmt.Println("notifyReq:", *notifyReq)
+
+	//验签
+	ok, err := gopay.VerifyAliPayResultSign(aliPayPublicKey, notifyReq)
+	if err != nil {
+		fmt.Println("err:", err)
+	}
+	log.Println("支付宝验签是否通过:", ok)
+}

+ 38 - 0
examples/wx_BatchQueryComment.go

@@ -0,0 +1,38 @@
+//==================================
+//  * Name:Jerry
+//  * DateTime:2019/8/9 16:24
+//  * Desc:
+//==================================
+package main
+
+import (
+	"fmt"
+	"github.com/iGoogle-ink/gopay"
+)
+
+func main() {
+	//初始化微信客户端
+	//    appId:应用ID
+	//    MchID:商户ID
+	//    ApiKey:Key值
+	//    isProd:是否是正式环境
+	//    好像不支持沙箱环境,因为沙箱环境默认需要用MD5签名,但是此接口仅支持HMAC-SHA256签名
+	client := gopay.NewWeChatClient("wxdaa2ab9ef87b5497", "1368139502", "GFDS8j98rewnmgl45wHTt980jg543abc", false)
+
+	//初始化参数结构体
+	body := make(gopay.BodyMap)
+	body.Set("nonce_str", gopay.GetRandomString(32))
+	body.Set("sign_type", gopay.SignType_HMAC_SHA256)
+	body.Set("begin_time", "20190120000000")
+	body.Set("end_time", "20190122174000")
+	body.Set("offset", "0")
+
+	//请求拉取订单评价数据,成功后得到结果,沙箱环境下,证书路径参数可传空
+	wxRsp, err := client.BatchQueryComment(body, "", "", "")
+	if err != nil {
+		fmt.Println("Error:", err)
+		return
+	}
+	fmt.Println("Response:", wxRsp)
+
+}

+ 34 - 0
examples/wx_CloseOrder.go

@@ -0,0 +1,34 @@
+//==================================
+//  * Name:Jerry
+//  * DateTime:2019/8/9 16:12
+//  * Desc:
+//==================================
+package main
+
+import (
+	"fmt"
+	"github.com/iGoogle-ink/gopay"
+)
+
+func main() {
+	//初始化微信客户端
+	//    appId:应用ID
+	//    MchID:商户ID
+	//    ApiKey:Key值
+	//    isProd:是否是正式环境
+	client := gopay.NewWeChatClient("wxdaa2ab9ef87b5497", "1368139502", "GFDS8j98rewnmgl45wHTt980jg543abc", false)
+
+	//初始化参数结构体
+	body := make(gopay.BodyMap)
+	body.Set("out_trade_no", "MfZC2segKxh0bnJSELbvKNeH3d9oWvvQ")
+	body.Set("nonce_str", gopay.GetRandomString(32))
+	body.Set("sign_type", gopay.SignType_MD5)
+
+	//请求关闭订单,成功后得到结果
+	wxRsp, err := client.CloseOrder(body)
+	if err != nil {
+		fmt.Println("Error:", err)
+		return
+	}
+	fmt.Println("wxRsp:", *wxRsp)
+}

+ 35 - 0
examples/wx_DownloadBill.go

@@ -0,0 +1,35 @@
+//==================================
+//  * Name:Jerry
+//  * DateTime:2019/8/9 16:21
+//  * Desc:
+//==================================
+package main
+
+import (
+	"fmt"
+	"github.com/iGoogle-ink/gopay"
+)
+
+func main() {
+	//初始化微信客户端
+	//    appId:应用ID
+	//    MchID:商户ID
+	//    ApiKey:Key值
+	//    isProd:是否是正式环境
+	client := gopay.NewWeChatClient("wxdaa2ab9ef87b5497", "1368139502", "GFDS8j98rewnmgl45wHTt980jg543abc", false)
+
+	//初始化参数结构体
+	body := make(gopay.BodyMap)
+	body.Set("nonce_str", gopay.GetRandomString(32))
+	body.Set("sign_type", gopay.SignType_MD5)
+	body.Set("bill_date", "20190722")
+	body.Set("bill_type", "ALL")
+
+	//请求下载对账单,成功后得到结果(string类型字符串)
+	wxRsp, err := client.DownloadBill(body)
+	if err != nil {
+		fmt.Println("Error:", err)
+		return
+	}
+	fmt.Println("wxRsp:", wxRsp)
+}

+ 37 - 0
examples/wx_DownloadFundFlow.go

@@ -0,0 +1,37 @@
+//==================================
+//  * Name:Jerry
+//  * DateTime:2019/8/9 16:22
+//  * Desc:
+//==================================
+package main
+
+import (
+	"fmt"
+	"github.com/iGoogle-ink/gopay"
+)
+
+func main() {
+	//初始化微信客户端
+	//    appId:应用ID
+	//    MchID:商户ID
+	//    ApiKey:Key值
+	//    isProd:是否是正式环境
+	//    好像不支持沙箱环境,因为沙箱环境默认需要用MD5签名,但是此接口仅支持HMAC-SHA256签名
+	client := gopay.NewWeChatClient("wxdaa2ab9ef87b5497", "1368139502", "GFDS8j98rewnmgl45wHTt980jg543abc", false)
+
+	//初始化参数结构体
+	body := make(gopay.BodyMap)
+	body.Set("nonce_str", gopay.GetRandomString(32))
+	body.Set("sign_type", gopay.SignType_HMAC_SHA256)
+	body.Set("bill_date", "20190122")
+	body.Set("account_type", "Basic")
+
+	//请求下载资金账单,成功后得到结果,沙箱环境下,证书路径参数可传空
+	wxRsp, err := client.DownloadFundFlow(body, "", "", "")
+	if err != nil {
+		fmt.Println("Error:", err)
+		return
+	}
+	fmt.Println("wxRsp:", wxRsp)
+
+}

+ 40 - 0
examples/wx_Micropay.go

@@ -0,0 +1,40 @@
+//==================================
+//  * Name:Jerry
+//  * DateTime:2019/8/9 15:46
+//  * Desc:
+//==================================
+package main
+
+import (
+	"fmt"
+	"github.com/iGoogle-ink/gopay"
+)
+
+func main() {
+	//初始化微信客户端
+	//    appId:应用ID
+	//    MchID:商户ID
+	//    ApiKey:Key值
+	//    isProd:是否是正式环境
+	client := gopay.NewWeChatClient("wxdaa2ab9ef87b5497", "1368139502", "GFDS8j98rewnmgl45wHTt980jg543abc", false)
+
+	//初始化参数Map
+	body := make(gopay.BodyMap)
+	body.Set("nonce_str", gopay.GetRandomString(32))
+	body.Set("body", "扫用户付款码支付")
+	number := gopay.GetRandomString(32)
+	fmt.Println("out_trade_no:", number)
+	body.Set("out_trade_no", number)
+	body.Set("total_fee", 1)
+	body.Set("spbill_create_ip", "127.0.0.1")
+	body.Set("auth_code", "134520934756401971")
+	body.Set("sign_type", gopay.SignType_MD5)
+
+	//请求支付,成功后得到结果
+	wxRsp, err := client.Micropay(body)
+	if err != nil {
+		fmt.Println("Error:", err)
+		return
+	}
+	fmt.Println("Response:", wxRsp)
+}

+ 34 - 0
examples/wx_QueryOrder.go

@@ -0,0 +1,34 @@
+//==================================
+//  * Name:Jerry
+//  * DateTime:2019/8/9 16:08
+//  * Desc:
+//==================================
+package main
+
+import (
+	"fmt"
+	"github.com/iGoogle-ink/gopay"
+)
+
+func main() {
+	//初始化微信客户端
+	//    appId:应用ID
+	//    MchID:商户ID
+	//    apiKey:API秘钥值
+	//    isProd:是否是正式环境
+	client := gopay.NewWeChatClient("wxdaa2ab9ef87b5497", "1368139502", "GFDS8j98rewnmgl45wHTt980jg543abc", false)
+
+	//初始化参数结构体
+	body := make(gopay.BodyMap)
+	body.Set("out_trade_no", "GW201908091551421156")
+	body.Set("nonce_str", gopay.GetRandomString(32))
+	body.Set("sign_type", gopay.SignType_MD5)
+
+	//请求订单查询,成功后得到结果
+	wxRsp, err := client.QueryOrder(body)
+	if err != nil {
+		fmt.Println("Error:", err)
+		return
+	}
+	fmt.Println("wxRsp:", *wxRsp)
+}

+ 38 - 0
examples/wx_QueryRefund.go

@@ -0,0 +1,38 @@
+//==================================
+//  * Name:Jerry
+//  * DateTime:2019/8/9 16:18
+//  * Desc:
+//==================================
+package main
+
+import (
+	"fmt"
+	"github.com/iGoogle-ink/gopay"
+)
+
+func main() {
+	//初始化微信客户端
+	//    appId:应用ID
+	//    MchID:商户ID
+	//    ApiKey:Key值
+	//    isProd:是否是正式环境
+	client := gopay.NewWeChatClient("wxdaa2ab9ef87b5497", "1368139502", "GFDS8j98rewnmgl45wHTt980jg543abc", false)
+
+	//初始化参数结构体
+	body := make(gopay.BodyMap)
+	body.Set("out_trade_no", "97HiM5j6kGmM2fk7fYMc8MgKhPnEQ5Rk")
+	//body.Set("out_refund_no", "vk4264I1UQ3Hm3E4AKsavK8npylGSgQA092f9ckUxp8A2gXmnsLEdsupURVTcaC7")
+	//body.Set("transaction_id", "97HiM5j6kGmM2fk7fYMc8MgKhPnEQ5Rk")
+	//body.Set("refund_id", "97HiM5j6kGmM2fk7fYMc8MgKhPnEQ5Rk")
+	body.Set("nonce_str", gopay.GetRandomString(32))
+	body.Set("sign_type", gopay.SignType_MD5)
+
+	//请求申请退款
+	wxRsp, err := client.QueryRefund(body)
+	if err != nil {
+		fmt.Println("Error:", err)
+		return
+	}
+	fmt.Println("wxRsp:", *wxRsp)
+
+}

+ 43 - 0
examples/wx_Refund.go

@@ -0,0 +1,43 @@
+//==================================
+//  * Name:Jerry
+//  * DateTime:2019/8/9 16:15
+//  * Desc:
+//==================================
+package main
+
+import (
+	"fmt"
+	"github.com/iGoogle-ink/gopay"
+)
+
+func main() {
+	//初始化微信客户端
+	//    appId:应用ID
+	//    MchID:商户ID
+	//    ApiKey:Key值
+	//    isProd:是否是正式环境
+	client := gopay.NewWeChatClient("wxdaa2ab9ef87b5497", "1368139502", "GFDS8j98rewnmgl45wHTt980jg543abc", false)
+
+	//初始化参数结构体
+	body := make(gopay.BodyMap)
+	body.Set("out_trade_no", "97HiM5j6kGmM2fk7fYMc8MgKhPnEQ5Rk")
+	body.Set("nonce_str", gopay.GetRandomString(32))
+	body.Set("sign_type", gopay.SignType_MD5)
+	s := gopay.GetRandomString(64)
+	fmt.Println("out_refund_no:", s)
+	body.Set("out_refund_no", s)
+	body.Set("total_fee", 1)
+	body.Set("refund_fee", 1)
+
+	//请求申请退款(沙箱环境下,证书路径参数可传空)
+	//    body:参数Body
+	//    certFilePath:cert证书路径
+	//    keyFilePath:Key证书路径
+	//    pkcs12FilePath:p12证书路径
+	wxRsp, err := client.Refund(body, "/apiclient_cert.pem", "/apiclient_key.pem", "/apiclient_cert.p12")
+	if err != nil {
+		fmt.Println("Error:", err)
+		return
+	}
+	fmt.Println("wxRsp:", *wxRsp)
+}

+ 34 - 0
examples/wx_Reverse.go

@@ -0,0 +1,34 @@
+//==================================
+//  * Name:Jerry
+//  * DateTime:2019/8/9 16:28
+//  * Desc:
+//==================================
+package main
+
+import (
+	"fmt"
+	"github.com/iGoogle-ink/gopay"
+)
+
+func main() {
+	//初始化微信客户端
+	//    appId:应用ID
+	//    MchID:商户ID
+	//    ApiKey:Key值
+	//    isProd:是否是正式环境
+	client := gopay.NewWeChatClient("wxdaa2ab9ef87b5497", "1368139502", "GFDS8j98rewnmgl45wHTt980jg543abc", false)
+
+	//初始化参数Map
+	body := make(gopay.BodyMap)
+	body.Set("nonce_str", gopay.GetRandomString(32))
+	body.Set("out_trade_no", "6aDCor1nUcAihrV5JBlI09tLvXbUp02B")
+	body.Set("sign_type", gopay.SignType_MD5)
+
+	//请求撤销订单,成功后得到结果,沙箱环境下,证书路径参数可传空
+	wxRsp, err := client.Reverse(body, "", "", "")
+	if err != nil {
+		fmt.Println("Error:", err)
+		return
+	}
+	fmt.Println("Response:", wxRsp)
+}

+ 63 - 0
examples/wx_UnifiedOrder.go

@@ -0,0 +1,63 @@
+package main
+
+import (
+	"fmt"
+	"github.com/iGoogle-ink/gopay"
+)
+
+func main() {
+	//初始化微信客户端
+	//    appId:应用ID
+	//    MchID:商户ID
+	//    apiKey:API秘钥值
+	//    isProd:是否是正式环境
+	client := gopay.NewWeChatClient("wxdaa2ab9ef87b5497", "1368139502", "GFDS8j98rewnmgl45wHTt980jg543abc", false)
+
+	number := gopay.GetRandomString(32)
+	fmt.Println("out_trade_no:", number)
+	//初始化参数Map
+	body := make(gopay.BodyMap)
+	body.Set("nonce_str", gopay.GetRandomString(32))
+	body.Set("body", "H5测试支付")
+	body.Set("out_trade_no", number)
+	body.Set("total_fee", 1)
+	body.Set("spbill_create_ip", "127.0.0.1")
+	body.Set("notify_url", "http://www.gopay.ink")
+	body.Set("trade_type", gopay.TradeType_H5)
+	body.Set("device_info", "WEB")
+	body.Set("sign_type", gopay.SignType_MD5)
+
+	sceneInfo := make(map[string]map[string]string)
+	h5Info := make(map[string]string)
+	h5Info["type"] = "Wap"
+	h5Info["wap_url"] = "http://www.gopay.ink"
+	h5Info["wap_name"] = "H5测试支付"
+	sceneInfo["h5_info"] = h5Info
+	body.Set("scene_info", sceneInfo)
+
+	//body.Set("openid", "o0Df70H2Q0fY8JXh1aFPIRyOBgu8")
+
+	//请求支付下单,成功后得到结果
+	wxRsp, err := client.UnifiedOrder(body)
+	if err != nil {
+		fmt.Println("Error:", err)
+		return
+	}
+	fmt.Println("wxRsp:", *wxRsp)
+
+	//timeStamp := strconv.FormatInt(time.Now().Unix(), 10)
+
+	////获取小程序支付需要的paySign
+	//pac := "prepay_id=" + wxRsp.PrepayId
+	//paySign := gopay.GetMiniPaySign("wxdaa2ab9ef87b5497", wxRsp.NonceStr, pac, gopay.SignType_MD5, timeStamp, "GFDS8j98rewnmgl45wHTt980jg543abc")
+	//fmt.Println("paySign:", paySign)
+
+	//获取H5支付需要的paySign
+	//pac := "prepay_id=" + wxRsp.PrepayId
+	//paySign := gopay.GetH5PaySign("wxdaa2ab9ef87b5497", wxRsp.NonceStr, pac, gopay.SignType_MD5, timeStamp, "GFDS8j98rewnmgl45wHTt980jg543abc")
+	//fmt.Println("paySign:", paySign)
+
+	//获取小程序需要的paySign
+	//paySign := gopay.GetAppPaySign("wxdaa2ab9ef87b5497","", wxRsp.NonceStr, wxRsp.PrepayId, gopay.SignType_MD5, timeStamp, "GFDS8j98rewnmgl45wHTt980jg543abc")
+	//fmt.Println("paySign:", paySign)
+}

+ 164 - 0
examples/wx_service_api.go

@@ -0,0 +1,164 @@
+//==================================
+//  * Name:Jerry
+//  * DateTime:2019/8/9 16:32
+//  * Desc:
+//==================================
+package main
+
+import (
+	"fmt"
+	"github.com/iGoogle-ink/gopay"
+	"net/http"
+)
+
+func main() {
+	Code2Session()
+	GetAccessToken()
+	GetPaidUnionId()
+	GetWeChatUserInfo()
+	DecryptOpenDataToStruct()
+	GetOpenIdByAuthCode()
+}
+
+func Code2Session() {
+	//获取微信用户的OpenId、SessionKey、UnionId
+	//    appId:APPID
+	//    appSecret:AppSecret
+	//    wxCode:小程序调用wx.login 获取的code
+	userIdRsp, err := gopay.Code2Session("AppID", "APPSecret", "011EZg6p0VO47n1p2W4p0mle6p0EZg6u")
+	if err != nil {
+		fmt.Println("err:", err)
+		return
+	}
+	fmt.Println("SessionKey:", userIdRsp.SessionKey)
+	fmt.Println("ExpiresIn:", userIdRsp.ExpiresIn)
+	fmt.Println("OpenID:", userIdRsp.Openid)
+	fmt.Println("UnionID:", userIdRsp.Unionid)
+	fmt.Println("Errcode:", userIdRsp.Errcode)
+	fmt.Println("Errmsg:", userIdRsp.Errmsg)
+}
+
+func GetAccessToken() {
+	//获取小程序全局唯一后台接口调用凭据(AccessToken:157字符)
+	//    appId:APPID
+	//    appSecret:AppSecret
+	rsp, err := gopay.GetAccessToken("AppID", "APPSecret")
+	if err != nil {
+		fmt.Println("err:", err)
+		return
+	}
+	fmt.Println("AccessToken:", rsp.AccessToken)
+	fmt.Println("ExpiresIn:", rsp.ExpiresIn)
+	fmt.Println("Errcode:", rsp.Errcode)
+	fmt.Println("Errmsg:", rsp.Errmsg)
+}
+
+func GetPaidUnionId() {
+	accessToken := "21_3puo3mxoK6Ry2bR7Dh-qdn41wUP1wClwke8Zhf9a_i39jfWRq9rhNJZZZHaOt_Yad-Gp6u9_46dGW0RbIMz3nANInRI3m-1glvCnGW47v63sjYWV1iyTKOHGwDVxEv78kY-0OfkmkiIveVqAZCZaAAAQTQ"
+	//用户支付完成后,获取该用户的 UnionId,无需用户授权。
+	//    accessToken:接口调用凭据
+	//    openId:用户的OpenID
+	//    transactionId:微信支付订单号
+	rsp, err := gopay.GetPaidUnionId(accessToken, "o0Df70MSI4Ygv2KQ2cLnoMN5CXI8", "4200000326201905256499385970")
+	if err != nil {
+		fmt.Println("err:", err)
+		return
+	}
+	fmt.Println("Unionid:", rsp.Unionid)
+	fmt.Println("Errcode:", rsp.Errcode)
+	fmt.Println("Errmsg:", rsp.Errmsg)
+}
+
+func GetWeChatUserInfo() {
+	accessToken := "21_3puo3mxoK6Ry2bR7Dh-qdn41wUP1wClwke8Zhf9a_i39jfWRq9rhNJZZZHaOt_Yad-Gp6u9_46dGW0RbIMz3nANInRI3m-1glvCnGW47v63sjYWV1iyTKOHGwDVxEv78kY-0OfkmkiIveVqAZCZaAAAQTQ"
+	//获取用户基本信息(UnionID机制)
+	//    accessToken:接口调用凭据
+	//    openId:用户的OpenID
+	//    lang:默认为 zh_CN ,可选填 zh_CN 简体,zh_TW 繁体,en 英语
+	userInfo, err := gopay.GetWeChatUserInfo(accessToken, "o0Df70H2Q0fY8JXh1aFPIRyOBgu8")
+	if err != nil {
+		fmt.Println("err:", err)
+		return
+	}
+	fmt.Println("userInfo:", *userInfo)
+}
+
+func DecryptOpenDataToStruct() {
+	data := "Kf3TdPbzEmhWMuPKtlKxIWDkijhn402w1bxoHL4kLdcKr6jT1jNcIhvDJfjXmJcgDWLjmBiIGJ5acUuSvxLws3WgAkERmtTuiCG10CKLsJiR+AXVk7B2TUQzsq88YVilDz/YAN3647REE7glGmeBPfvUmdbfDzhL9BzvEiuRhABuCYyTMz4iaM8hFjbLB1caaeoOlykYAFMWC5pZi9P8uw=="
+	iv := "Cds8j3VYoGvnTp1BrjXdJg=="
+	session := "lyY4HPQbaOYzZdG+JcYK9w=="
+
+	phone := new(gopay.WeChatUserPhone)
+	//解密开放数据
+	//    encryptedData:包括敏感数据在内的完整用户信息的加密数据
+	//    iv:加密算法的初始向量
+	//    sessionKey:会话密钥
+	//    beanPtr:需要解析到的结构体指针
+	err := gopay.DecryptOpenDataToStruct(data, iv, session, phone)
+	if err != nil {
+		fmt.Println("err:", err)
+		return
+	}
+	fmt.Println("PhoneNumber:", phone.PhoneNumber)
+	fmt.Println("PurePhoneNumber:", phone.PurePhoneNumber)
+	fmt.Println("CountryCode:", phone.CountryCode)
+	fmt.Println("Watermark:", phone.Watermark)
+}
+
+func GetOpenIdByAuthCode() {
+	//授权码查询openid
+	//    appId:APPID
+	//    mchId:商户号
+	//    apiKey:ApiKey
+	//    authCode:用户授权码
+	//    nonceStr:随即字符串
+	openIdRsp, err := gopay.GetOpenIdByAuthCode("wxdaa2ab9ef87b5497", "1368139502", "GFDS8j98rewnmgl45wHTt980jg543abc", "135127679952609396", gopay.GetRandomString(32))
+	if err != nil {
+		fmt.Println("err:", err)
+		return
+	}
+	fmt.Println("ReturnCode:", openIdRsp.ReturnCode)
+	fmt.Println("ReturnMsg:", openIdRsp.ReturnMsg)
+	fmt.Println("ResultCode:", openIdRsp.ResultCode)
+	fmt.Println("Appid:", openIdRsp.Appid)
+	fmt.Println("MchId:", openIdRsp.MchId)
+	fmt.Println("NonceStr:", openIdRsp.NonceStr)
+	fmt.Println("err_code:", openIdRsp.ErrCode)
+	fmt.Println("Openid:", openIdRsp.Openid)
+}
+
+//解析notify参数、验签、返回数据到微信
+func ParseWeChatNotifyResultAndVerifyWeChatResultSign(req *http.Request) string {
+	rsp := new(gopay.WeChatNotifyResponse)
+
+	//解析参数
+	notifyReq, err := gopay.ParseWeChatNotifyResult(req)
+	if err != nil {
+		fmt.Println("err:", err)
+	}
+	fmt.Println("notifyReq:", *notifyReq)
+
+	//验签
+	ok, sign := gopay.VerifyWeChatResultSign("GFDS8j98rewnmgl45wHTt980jg543abc", gopay.SignType_MD5, notifyReq)
+	fmt.Println("微信验签是否通过:", ok)
+	fmt.Println("计算的sign:", sign)
+
+	rsp.ReturnCode = gopay.SUCCESS
+	rsp.ReturnMsg = "OK"
+	return rsp.ToXmlString()
+}
+
+//BodyMap 解析notify参数、验签
+func ParseWeChatNotifyResultToBodyMapAndVerifyWeChatResultSignByBodyMap(req *http.Request) {
+	//解析到BodyMap
+	bm, err := gopay.ParseWeChatNotifyResultToBodyMap(req)
+	if err != nil {
+		fmt.Println("err:", err)
+	}
+	fmt.Println("bm:", bm)
+
+	//验签
+	ok, sign := gopay.VerifyWeChatResultSignByBodyMap("GFDS8j98rewnmgl45wHTt980jg543abc", gopay.SignType_MD5, bm)
+	fmt.Println("微信验签是否通过:", ok)
+	fmt.Println("计算的sign:", sign)
+}

+ 0 - 382
wechat_client_test.go

@@ -9,388 +9,6 @@ import (
 	"testing"
 )
 
-//func TestWeChatClient_UnifiedOrder(t *testing.T) {
-//	//初始化微信客户端
-//	//    appId:应用ID
-//	//    MchID:商户ID
-//	//    apiKey:API秘钥值
-//	//    isProd:是否是正式环境
-//	client := NewWeChatClient("wxdaa2ab9ef87b5497", "1368139502", "GFDS8j98rewnmgl45wHTt980jg543abc", false)
-//
-//	number := GetRandomString(32)
-//	fmt.Println("out_trade_no:", number)
-//	//初始化参数Map
-//	body := make(BodyMap)
-//	body.Set("nonce_str", GetRandomString(32))
-//	body.Set("body", "Native支付")
-//	body.Set("out_trade_no", number)
-//	body.Set("total_fee", 1)
-//	body.Set("spbill_create_ip", "127.0.0.1")
-//	body.Set("notify_url", "http://www.gopay.ink")
-//	body.Set("trade_type", TradeType_Native)
-//	body.Set("device_info", "WEB")
-//	body.Set("sign_type", SignType_MD5)
-//
-//	//sceneInfo := make(map[string]map[string]string)
-//	//h5Info := make(map[string]string)
-//	//h5Info["type"] = "Wap"
-//	//h5Info["wap_url"] = "http://www.gopay.ink"
-//	//h5Info["wap_name"] = "H5测试支付"
-//	//sceneInfo["h5_info"] = h5Info
-//	//body.Set("scene_info", sceneInfo)
-//	//
-//	//body.Set("openid", OpenID)
-//
-//	//请求支付下单,成功后得到结果
-//	wxRsp, err := client.UnifiedOrder(body)
-//	if err != nil {
-//		fmt.Println("Error:", err)
-//		return
-//	}
-//	fmt.Println("wxRsp:", *wxRsp)
-//	//timeStamp := strconv.FormatInt(time.Now().Unix(), 10)
-//	////获取小程序需要的paySign
-//	//pac := "prepay_id=" + wxRsp.PrepayId
-//	//paySign := GetMiniPaySign(AppID, wxRsp.NonceStr, pac, SignType_MD5, timeStamp, ApiKey_iguiyu)
-//	//fmt.Println("paySign:", paySign)
-//}
-
-//
-//func TestWeChatClient_QueryOrder(t *testing.T) {
-//	//初始化微信客户端
-//	//    appId:应用ID
-//	//    MchID:商户ID
-//	//    apiKey:API秘钥值
-//	//    isProd:是否是正式环境
-//	client := NewWeChatClient(AppID, MchID_iguiyu, ApiKey_iguiyu, false)
-//
-//	//初始化参数结构体
-//	body := make(BodyMap)
-//	body.Set("out_trade_no", "GYWX201901301040355706100401")
-//	body.Set("nonce_str", GetRandomString(32))
-//	body.Set("sign_type", SignType_MD5)
-//
-//	//请求订单查询,成功后得到结果
-//	wxRsp, err := client.QueryOrder(body)
-//	if err != nil {
-//		fmt.Println("Error:", err)
-//		return
-//	}
-//	fmt.Println("wxRsp:", *wxRsp)
-//}
-//
-//func TestWeChatClient_CloseOrder(t *testing.T) {
-//	//初始化微信客户端
-//	//    appId:应用ID
-//	//    MchID:商户ID
-//	//    ApiKey:Key值
-//	//    isProd:是否是正式环境
-//	client := NewWeChatClient(AppID, MchID_iguiyu, ApiKey_iguiyu, false)
-//
-//	//初始化参数结构体
-//	body := make(BodyMap)
-//	body.Set("out_trade_no", "MfZC2segKxh0bnJSELbvKNeH3d9oWvvQ")
-//	body.Set("nonce_str", GetRandomString(32))
-//	body.Set("sign_type", SignType_MD5)
-//
-//	//请求关闭订单,成功后得到结果
-//	wxRsp, err := client.CloseOrder(body)
-//	if err != nil {
-//		fmt.Println("Error:", err)
-//		return
-//	}
-//	fmt.Println("wxRsp:", *wxRsp)
-//}
-//
-//func TestWeChatClient_Refund(t *testing.T) {
-//	//初始化微信客户端
-//	//    appId:应用ID
-//	//    MchID:商户ID
-//	//    ApiKey:Key值
-//	//    isProd:是否是正式环境
-//	client := NewWeChatClient(AppID, MchID_iguiyu, ApiKey_iguiyu, true)
-//
-//	//初始化参数结构体
-//	body := make(BodyMap)
-//	body.Set("out_trade_no", "97HiM5j6kGmM2fk7fYMc8MgKhPnEQ5Rk")
-//	body.Set("nonce_str", GetRandomString(32))
-//	body.Set("sign_type", SignType_MD5)
-//	s := GetRandomString(64)
-//	fmt.Println("s:", s)
-//	body.Set("out_refund_no", s)
-//	body.Set("total_fee", 1)
-//	body.Set("refund_fee", 1)
-//
-//	//请求申请退款(沙箱环境下,证书路径参数可传空)
-//	//    body:参数Body
-//	//    certFilePath:cert证书路径
-//	//    keyFilePath:Key证书路径
-//	//    pkcs12FilePath:p12证书路径
-//	wxRsp, err := client.Refund(body, Cert_iguiyu+"/apiclient_cert.pem", Cert_iguiyu+"/apiclient_key.pem", Cert_iguiyu+"/apiclient_cert.p12")
-//	if err != nil {
-//		fmt.Println("Error:", err)
-//		return
-//	}
-//	fmt.Println("wxRsp:", *wxRsp)
-//}
-//
-//func TestWeChatClient_QueryRefund(t *testing.T) {
-//	//初始化微信客户端
-//	//    appId:应用ID
-//	//    MchID:商户ID
-//	//    ApiKey:Key值
-//	//    isProd:是否是正式环境
-//	client := NewWeChatClient(AppID, MchID_iguiyu, ApiKey_iguiyu, false)
-//
-//	//初始化参数结构体
-//	body := make(BodyMap)
-//	body.Set("out_refund_no", "vk4264I1UQ3Hm3E4AKsavK8npylGSgQA092f9ckUxp8A2gXmnsLEdsupURVTcaC7")
-//	body.Set("nonce_str", GetRandomString(32))
-//	body.Set("sign_type", SignType_MD5)
-//
-//	//请求申请退款
-//	wxRsp, err := client.QueryRefund(body)
-//	if err != nil {
-//		fmt.Println("Error:", err)
-//		return
-//	}
-//	fmt.Println("wxRsp:", *wxRsp)
-//}
-//
-//func TestWeChatClient_DownloadBill(t *testing.T) {
-//	//初始化微信客户端
-//	//    appId:应用ID
-//	//    MchID:商户ID
-//	//    ApiKey:Key值
-//	//    isProd:是否是正式环境
-//	client := NewWeChatClient(AppID, MchID_iguiyu, ApiKey_iguiyu, false)
-//
-//	//初始化参数结构体
-//	body := make(BodyMap)
-//	body.Set("nonce_str", GetRandomString(32))
-//	body.Set("sign_type", SignType_MD5)
-//	body.Set("bill_date", "20190122")
-//	body.Set("bill_type", "ALL")
-//
-//	//请求下载对账单,成功后得到结果(string类型字符串)
-//	wxRsp, err := client.DownloadBill(body)
-//	if err != nil {
-//		fmt.Println("Error:", err)
-//		return
-//	}
-//	fmt.Println("wxRsp:", wxRsp)
-//}
-//
-//func TestWeChatClient_DownloadFundFlow(t *testing.T) {
-//	//初始化微信客户端
-//	//    appId:应用ID
-//	//    MchID:商户ID
-//	//    ApiKey:Key值
-//	//    isProd:是否是正式环境
-//	//    好像不支持沙箱环境,因为沙箱环境默认需要用MD5签名,但是此接口仅支持HMAC-SHA256签名
-//	client := NewWeChatClient(AppID, MchID_iguiyu, ApiKey_iguiyu, false)
-//
-//	//初始化参数结构体
-//	body := make(BodyMap)
-//	body.Set("nonce_str", GetRandomString(32))
-//	body.Set("sign_type", SignType_HMAC_SHA256)
-//	body.Set("bill_date", "20190122")
-//	body.Set("account_type", "Basic")
-//
-//	//请求下载资金账单,成功后得到结果,沙箱环境下,证书路径参数可传空
-//	wxRsp, err := client.DownloadFundFlow(body, "", "", "")
-//	if err != nil {
-//		fmt.Println("Error:", err)
-//		return
-//	}
-//	fmt.Println("wxRsp:", wxRsp)
-//}
-//
-//func TestWeChatClient_BatchQueryComment(t *testing.T) {
-//	//初始化微信客户端
-//	//    appId:应用ID
-//	//    MchID:商户ID
-//	//    ApiKey:Key值
-//	//    isProd:是否是正式环境
-//	//    好像不支持沙箱环境,因为沙箱环境默认需要用MD5签名,但是此接口仅支持HMAC-SHA256签名
-//	client := NewWeChatClient(AppID, MchID_iguiyu, ApiKey_iguiyu, false)
-//
-//	//初始化参数结构体
-//	body := make(BodyMap)
-//	body.Set("nonce_str", GetRandomString(32))
-//	body.Set("sign_type", SignType_HMAC_SHA256)
-//	body.Set("begin_time", "20190120000000")
-//	body.Set("end_time", "20190122174000")
-//	body.Set("offset", "0")
-//
-//	//请求拉取订单评价数据,成功后得到结果,沙箱环境下,证书路径参数可传空
-//	wxRsp, err := client.BatchQueryComment(body, "", "", "")
-//	if err != nil {
-//		fmt.Println("Error:", err)
-//		return
-//	}
-//	fmt.Println("Response:", wxRsp)
-//}
-//
-//func TestWeChatClient_Micropay(t *testing.T) {
-//	//初始化微信客户端
-//	//    appId:应用ID
-//	//    MchID:商户ID
-//	//    ApiKey:Key值
-//	//    isProd:是否是正式环境
-//	client := NewWeChatClient(AppID, MchID_iguiyu, ApiKey_iguiyu, true)
-//
-//	//初始化参数Map
-//	body := make(BodyMap)
-//	body.Set("nonce_str", GetRandomString(32))
-//	body.Set("body", "扫用户付款码支付")
-//	number := GetRandomString(32)
-//	log.Println("out_trade_no:", number)
-//	body.Set("out_trade_no", number)
-//	body.Set("total_fee", 1)
-//	body.Set("spbill_create_ip", "124.77.173.62")
-//	body.Set("auth_code", "134518243599425392")
-//	body.Set("sign_type", SignType_MD5)
-//
-//	//请求支付,成功后得到结果
-//	wxRsp, err := client.Micropay(body)
-//	if err != nil {
-//		fmt.Println("Error:", err)
-//		return
-//	}
-//	fmt.Println("Response:", wxRsp)
-//}
-//
-//func TestWeChatClient_Reverse(t *testing.T) {
-//	//初始化微信客户端
-//	//    appId:应用ID
-//	//    MchID:商户ID
-//	//    ApiKey:Key值
-//	//    isProd:是否是正式环境
-//	client := NewWeChatClient(AppID, MchID_iguiyu, ApiKey_iguiyu, false)
-//
-//	//初始化参数Map
-//	body := make(BodyMap)
-//	body.Set("nonce_str", GetRandomString(32))
-//	body.Set("out_trade_no", "6aDCor1nUcAihrV5JBlI09tLvXbUp02B")
-//	body.Set("sign_type", SignType_MD5)
-//
-//	//请求撤销订单,成功后得到结果,沙箱环境下,证书路径参数可传空
-//	wxRsp, err := client.Reverse(body, "", "", "")
-//	if err != nil {
-//		fmt.Println("Error:", err)
-//		return
-//	}
-//	fmt.Println("Response:", wxRsp)
-//}
-//
-//func TestCode2Session(t *testing.T) {
-//	//获取微信用户的OpenId、SessionKey、UnionId
-//	//    appId:APPID
-//	//    appSecret:AppSecret
-//	//    wxCode:小程序调用wx.login 获取的code
-//	userIdRsp, err := Code2Session(AppID, APPSecret, "011EZg6p0VO47n1p2W4p0mle6p0EZg6u")
-//	if err != nil {
-//		fmt.Println("err:", err)
-//		return
-//	}
-//	fmt.Println("SessionKey:", userIdRsp.SessionKey)
-//	fmt.Println("ExpiresIn:", userIdRsp.ExpiresIn)
-//	fmt.Println("OpenID:", userIdRsp.Openid)
-//	fmt.Println("UnionID:", userIdRsp.Unionid)
-//	fmt.Println("Errcode:", userIdRsp.Errcode)
-//	fmt.Println("Errmsg:", userIdRsp.Errmsg)
-//}
-//
-//func TestGetAccessToken(t *testing.T) {
-//	//获取小程序全局唯一后台接口调用凭据(AccessToken:157字符)
-//	//    appId:APPID
-//	//    appSecret:AppSecret
-//	rsp, err := GetAccessToken(AppID, APPSecret)
-//	if err != nil {
-//		fmt.Println("err:", err)
-//		return
-//	}
-//	fmt.Println("AccessToken:", rsp.AccessToken)
-//	fmt.Println("ExpiresIn:", rsp.ExpiresIn)
-//	fmt.Println("Errcode:", rsp.Errcode)
-//	fmt.Println("Errmsg:", rsp.Errmsg)
-//}
-//
-//func TestGetPaidUnionId(t *testing.T) {
-//	accessToken := "21_3puo3mxoK6Ry2bR7Dh-qdn41wUP1wClwke8Zhf9a_i39jfWRq9rhNJZZZHaOt_Yad-Gp6u9_46dGW0RbIMz3nANInRI3m-1glvCnGW47v63sjYWV1iyTKOHGwDVxEv78kY-0OfkmkiIveVqAZCZaAAAQTQ"
-//	//用户支付完成后,获取该用户的 UnionId,无需用户授权。
-//	//    accessToken:接口调用凭据
-//	//    openId:用户的OpenID
-//	//    transactionId:微信支付订单号
-//	rsp, err := GetPaidUnionId(accessToken, "o0Df70MSI4Ygv2KQ2cLnoMN5CXI8", "4200000326201905256499385970")
-//	if err != nil {
-//		fmt.Println("err:", err)
-//		return
-//	}
-//	fmt.Println("Unionid:", rsp.Unionid)
-//	fmt.Println("Errcode:", rsp.Errcode)
-//	fmt.Println("Errmsg:", rsp.Errmsg)
-//}
-//
-//func TestGetWeChatUserInfo(t *testing.T) {
-//	accessToken := "21_3puo3mxoK6Ry2bR7Dh-qdn41wUP1wClwke8Zhf9a_i39jfWRq9rhNJZZZHaOt_Yad-Gp6u9_46dGW0RbIMz3nANInRI3m-1glvCnGW47v63sjYWV1iyTKOHGwDVxEv78kY-0OfkmkiIveVqAZCZaAAAQTQ"
-//	//获取用户基本信息(UnionID机制)
-//	//    accessToken:接口调用凭据
-//	//    openId:用户的OpenID
-//	//    lang:默认为 zh_CN ,可选填 zh_CN 简体,zh_TW 繁体,en 英语
-//	userInfo, err := GetWeChatUserInfo(accessToken, OpenID)
-//	if err != nil {
-//		fmt.Println("err:", err)
-//		return
-//	}
-//	fmt.Println("userInfo:", *userInfo)
-//}
-//
-//func TestDecryptOpenDataToStruct(t *testing.T) {
-//	data := "Kf3TdPbzEmhWMuPKtlKxIWDkijhn402w1bxoHL4kLdcKr6jT1jNcIhvDJfjXmJcgDWLjmBiIGJ5acUuSvxLws3WgAkERmtTuiCG10CKLsJiR+AXVk7B2TUQzsq88YVilDz/YAN3647REE7glGmeBPfvUmdbfDzhL9BzvEiuRhABuCYyTMz4iaM8hFjbLB1caaeoOlykYAFMWC5pZi9P8uw=="
-//	iv := "Cds8j3VYoGvnTp1BrjXdJg=="
-//	session := "lyY4HPQbaOYzZdG+JcYK9w=="
-//
-//	phone := new(WeChatUserPhone)
-//	//解密开放数据
-//	//    encryptedData:包括敏感数据在内的完整用户信息的加密数据
-//	//    iv:加密算法的初始向量
-//	//    sessionKey:会话密钥
-//	//    beanPtr:需要解析到的结构体指针
-//	err := DecryptOpenDataToStruct(data, iv, session, phone)
-//	if err != nil {
-//		fmt.Println("err:", err)
-//		return
-//	}
-//	fmt.Println("PhoneNumber:", phone.PhoneNumber)
-//	fmt.Println("PurePhoneNumber:", phone.PurePhoneNumber)
-//	fmt.Println("CountryCode:", phone.CountryCode)
-//	fmt.Println("Watermark:", phone.Watermark)
-//}
-//
-//func TestGetOpenIdByAuthCode(t *testing.T) {
-//	//授权码查询openid
-//	//    appId:APPID
-//	//    mchId:商户号
-//	//    apiKey:ApiKey
-//	//    authCode:用户授权码
-//	//    nonceStr:随即字符串
-//	openIdRsp, err := GetOpenIdByAuthCode(AppID, MchID_iguiyu, ApiKey_iguiyu, "135127679952609396", GetRandomString(32))
-//	if err != nil {
-//		fmt.Println("err:", err)
-//		return
-//	}
-//	fmt.Println("ReturnCode:", openIdRsp.ReturnCode)
-//	fmt.Println("ReturnMsg:", openIdRsp.ReturnMsg)
-//	fmt.Println("ResultCode:", openIdRsp.ResultCode)
-//	fmt.Println("Appid:", openIdRsp.Appid)
-//	fmt.Println("MchId:", openIdRsp.MchId)
-//	fmt.Println("NonceStr:", openIdRsp.NonceStr)
-//	fmt.Println("err_code:", openIdRsp.ErrCode)
-//	fmt.Println("Openid:", openIdRsp.Openid)
-//}
-
 func TestMd5(t *testing.T) {
 	st := "appid=wxdaa2ab9ef87b5497&nonceStr=9k20rM66parD2U49&package=prepay_id=wx29164301554772fbc70d1d793335446010&signType=MD5&timeStamp=1548751382&key=GFDS8j98rewnmgl45wHTt980jg543wmg"
 	hash := md5.New()

+ 15 - 3
wechat_servier_api.go → wechat_service_api.go

@@ -154,6 +154,8 @@ func (this *WeChatNotifyResponse) ToXmlString() (xmlStr string) {
 //    signType:签名类型
 //    timeStamp:时间
 //    apiKey:API秘钥值
+//
+//    微信小程序支付API:https://developers.weixin.qq.com/miniprogram/dev/api/open-api/payment/wx.requestPayment.html
 func GetMiniPaySign(appId, nonceStr, prepayId, signType, timeStamp, apiKey string) (paySign string) {
 	buffer := new(bytes.Buffer)
 	buffer.WriteString("appId=")
@@ -190,13 +192,15 @@ func GetMiniPaySign(appId, nonceStr, prepayId, signType, timeStamp, apiKey strin
 	return
 }
 
-//JSAPI支付,统一下单获取支付参数后,再次计算出微信内H5支付需要用的paySign
+//微信内H5支付,统一下单获取支付参数后,再次计算出微信内H5支付需要用的paySign
 //    appId:APPID
 //    nonceStr:随即字符串
 //    prepayId:统一下单成功后得到的值
 //    signType:签名类型
 //    timeStamp:时间
 //    apiKey:API秘钥值
+//
+//    微信内H5支付官方文档:https://pay.weixin.qq.com/wiki/doc/api/external/jsapi.php?chapter=7_7&index=6
 func GetH5PaySign(appId, nonceStr, prepayId, signType, timeStamp, apiKey string) (paySign string) {
 	buffer := new(bytes.Buffer)
 	buffer.WriteString("appId=")
@@ -241,6 +245,8 @@ func GetH5PaySign(appId, nonceStr, prepayId, signType, timeStamp, apiKey string)
 //    signType:此处签名方式,务必与统一下单时用的签名方式一致
 //    timeStamp:时间
 //    apiKey:API秘钥值
+//
+//    APP支付官方文档:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_12
 func GetAppPaySign(appid, partnerid, noncestr, prepayid, signType, timestamp, apiKey string) (paySign string) {
 	buffer := new(bytes.Buffer)
 	buffer.WriteString("appid=")
@@ -284,6 +290,7 @@ func GetAppPaySign(appid, partnerid, noncestr, prepayid, signType, timestamp, ap
 //    iv:加密算法的初始向量
 //    sessionKey:会话密钥
 //    beanPtr:需要解析到的结构体指针
+//    文档:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html
 func DecryptOpenDataToStruct(encryptedData, iv, sessionKey string, beanPtr interface{}) (err error) {
 	//验证参数类型
 	beanValue := reflect.ValueOf(beanPtr)
@@ -321,10 +328,11 @@ func DecryptOpenDataToStruct(encryptedData, iv, sessionKey string, beanPtr inter
 	return nil
 }
 
-//获取微信用户的OpenId、SessionKey、UnionId
+//获取微信小程序用户的OpenId、SessionKey、UnionId
 //    appId:APPID
 //    appSecret:AppSecret
 //    wxCode:小程序调用wx.login 获取的code
+//    文档:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/login/auth.code2Session.html
 func Code2Session(appId, appSecret, wxCode string) (sessionRsp *Code2SessionRsp, err error) {
 	sessionRsp = new(Code2SessionRsp)
 	url := "https://api.weixin.qq.com/sns/jscode2session?appid=" + appId + "&secret=" + appSecret + "&js_code=" + wxCode + "&grant_type=authorization_code"
@@ -340,6 +348,7 @@ func Code2Session(appId, appSecret, wxCode string) (sessionRsp *Code2SessionRsp,
 //获取小程序全局唯一后台接口调用凭据(AccessToken:157字符)
 //    appId:APPID
 //    appSecret:AppSecret
+//    获取access_token文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140183
 func GetAccessToken(appId, appSecret string) (accessToken *AccessToken, err error) {
 	accessToken = new(AccessToken)
 	url := "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appId + "&secret=" + appSecret
@@ -359,6 +368,7 @@ func GetAccessToken(appId, appSecret string) (accessToken *AccessToken, err erro
 //    apiKey:ApiKey
 //    authCode:用户授权码
 //    nonceStr:随即字符串
+//    文档:https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=9_13&index=9
 func GetOpenIdByAuthCode(appId, mchId, apiKey, authCode, nonceStr string) (openIdRsp *OpenIdByAuthCodeRsp, err error) {
 
 	url := "https://api.mch.weixin.qq.com/tools/authcodetoopenid"
@@ -388,10 +398,11 @@ func GetOpenIdByAuthCode(appId, mchId, apiKey, authCode, nonceStr string) (openI
 	return openIdRsp, nil
 }
 
-//用户支付完成后,获取该用户的 UnionId,无需用户授权。
+//微信小程序用户支付完成后,获取该用户的 UnionId,无需用户授权。
 //    accessToken:接口调用凭据
 //    openId:用户的OpenID
 //    transactionId:微信支付订单号
+//    文档:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/user-info/auth.getPaidUnionId.html
 func GetPaidUnionId(accessToken, openId, transactionId string) (unionId *PaidUnionId, err error) {
 	unionId = new(PaidUnionId)
 	url := "https://api.weixin.qq.com/wxa/getpaidunionid?access_token=" + accessToken + "&openid=" + openId + "&transaction_id=" + transactionId
@@ -409,6 +420,7 @@ func GetPaidUnionId(accessToken, openId, transactionId string) (unionId *PaidUni
 //    accessToken:接口调用凭据
 //    openId:用户的OpenID
 //    lang:默认为 zh_CN ,可选填 zh_CN 简体,zh_TW 繁体,en 英语
+//    获取用户基本信息(UnionID机制)文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140839
 func GetWeChatUserInfo(accessToken, openId string, lang ...string) (userInfo *WeChatUserInfo, err error) {
 	userInfo = new(WeChatUserInfo)
 	var url string