Просмотр исходного кода

fix and add 统一收单线下交易查询

Jerry 6 лет назад
Родитель
Сommit
47e0b5bbb1
3 измененных файлов с 114 добавлено и 31 удалено
  1. 24 2
      alipay_client.go
  2. 27 3
      alipay_client_test.go
  3. 63 26
      alipay_rsp.go

+ 24 - 2
alipay_client.go

@@ -93,8 +93,30 @@ func (this *aliPayClient) AliPayTradePay(body BodyMap) (aliRsp *AliPayTradePayRe
 }
 
 //alipay.trade.query(统一收单线下交易查询)
-func (this *aliPayClient) AliPayTradeQuery(body BodyMap) {
-
+func (this *aliPayClient) AliPayTradeQuery(body BodyMap) (aliRsp *AliPayTradeQueryResponse, err error) {
+	var bytes []byte
+	trade1 := body.Get("out_trade_no")
+	trade2 := body.Get("trade_no")
+	if trade1 == null && trade2 == null {
+		return nil, errors.New("out_trade_no and trade_no are not allowed to be null at the same time")
+	}
+	bytes, err = this.doAliPay(body, "alipay.trade.query")
+	if err != nil {
+		return nil, err
+	}
+	convertBytes, _ := simplifiedchinese.GBK.NewDecoder().Bytes(bytes)
+	//log.Println("convertBytes::::", string(convertBytes))
+	aliRsp = new(AliPayTradeQueryResponse)
+	err = json.Unmarshal(convertBytes, aliRsp)
+	if err != nil {
+		return nil, err
+	}
+	if aliRsp.AlipayTradePayResponse.Code != "10000" {
+		info := aliRsp.AlipayTradePayResponse
+		log.Println("aliRsp:", aliRsp)
+		return nil, fmt.Errorf("code:%v,msg:%v,sub_code:%v,sub_msg:%v.", info.Code, info.Msg, info.SubCode, info.SubMsg)
+	}
+	return aliRsp, nil
 }
 
 //alipay.trade.app.pay(app支付接口2.0)

+ 27 - 3
alipay_client_test.go

@@ -22,9 +22,9 @@ func TestAliPayClient_AliPayTradePay(t *testing.T) {
 	body := make(BodyMap)
 	body.Set("subject", "条码支付")
 	body.Set("scene", "bar_code")
-	body.Set("auth_code", "285860185283886375")
-	body.Set("out_trade_no", "GYWX201901301040355706100456")
-	body.Set("total_amount", "10.00")
+	body.Set("auth_code", "282334610638233727")
+	body.Set("out_trade_no", "GYWX201901301040355706100457")
+	body.Set("total_amount", "100.00")
 	body.Set("timeout_express", "2m")
 	//条码支付
 	aliRsp, err := client.AliPayTradePay(body)
@@ -35,6 +35,30 @@ func TestAliPayClient_AliPayTradePay(t *testing.T) {
 	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="

+ 63 - 26
alipay_rsp.go

@@ -48,35 +48,72 @@ type FundBillListInfo struct {
 }
 
 type VoucherDetailListInfo struct {
-	Amount             string `json:"amount"`
-	Memo               string `json:"memo"`
-	MerchantContribute string `json:"merchant_contribute"`
-	Name               string `json:"name"`
-	OtherContribute    string `json:"other_contribute"`
-	Type               string `json:"type"`
+	Id                         string `json:"id"`
+	Name                       string `json:"name"`
+	Type                       string `json:"type"`
+	Amount                     string `json:"amount"`
+	MerchantContribute         string `json:"merchant_contribute,omitempty"`
+	OtherContribute            string `json:"other_contribute,omitempty"`
+	Memo                       string `json:"memo,omitempty"`
+	TemplateId                 string `json:"template_id,omitempty"`
+	PurchaseBuyerContribute    string `json:"purchase_buyer_contribute,omitempty"`
+	PurchaseMerchantContribute string `json:"purchase_merchant_contribute,omitempty"`
+	PurchaseAntContribute      string `json:"purchase_ant_contribute,omitempty"`
 }
 
 type AliPayTradePayResponse struct {
-	AlipayTradePayResponse AlipayTradePayResponseInfo `json:"alipay_trade_pay_response"`
-	Sign                   string                     `json:"sign"`
+	AlipayTradePayResponse AlipayTradeResponseInfo `json:"alipay_trade_pay_response"`
+	Sign                   string                  `json:"sign"`
 }
 
-type AlipayTradePayResponseInfo struct {
-	Code           string             `json:"code"`
-	Msg            string             `json:"msg"`
-	SubCode        string             `json:"sub_code"`
-	SubMsg         string             `json:"sub_msg"`
-	TradeNo        string             `json:"trade_no"`
-	OutTradeNo     string             `json:"out_trade_no"`
-	BuyerLogonId   string             `json:"buyer_logon_id"`
-	BuyerPayAmount string             `json:"buyer_pay_amount"`
-	BuyerUserId    string             `json:"buyer_user_id"`
-	BuyerUserType  string             `json:"buyer_user_type"`
-	SettleAmount   string             `json:"settle_amount"`
-	TotalAmount    string             `json:"total_amount"`
-	ReceiptAmount  string             `json:"receipt_amount"`
-	PointAmount    string             `json:"point_amount"`
-	InvoiceAmount  string             `json:"invoice_amount"`
-	GmtPayment     string             `json:"gmt_payment"`
-	FundBillList   []FundBillListInfo `json:"fund_bill_list"`
+type AliPayTradeQueryResponse struct {
+	AlipayTradePayResponse AlipayTradeResponseInfo `json:"alipay_trade_query_response"`
+	Sign                   string                  `json:"sign"`
+}
+
+type AlipayTradeResponseInfo struct {
+	Code                string                  `json:"code"`
+	Msg                 string                  `json:"msg"`
+	SubCode             string                  `json:"sub_code,omitempty"`
+	SubMsg              string                  `json:"sub_msg,omitempty"`
+	TradeNo             string                  `json:"trade_no"`
+	OutTradeNo          string                  `json:"out_trade_no"`
+	BuyerLogonId        string                  `json:"buyer_logon_id"`
+	TradeStatus         string                  `json:"trade_status,omitempty"`
+	SettleAmount        string                  `json:"settle_amount,omitempty"`
+	PayCurrency         string                  `json:"pay_currency,omitempty"`
+	PayAmount           string                  `json:"pay_amount,omitempty"`
+	SettleTransRate     string                  `json:"settle_trans_rate,omitempty"`
+	TransPayRate        string                  `json:"trans_pay_rate,omitempty"`
+	TotalAmount         string                  `json:"total_amount"`
+	TransCurrency       string                  `json:"trans_currency,omitempty"`
+	SettleCurrency      string                  `json:"settle_currency,omitempty"`
+	ReceiptAmount       string                  `json:"receipt_amount"`
+	BuyerPayAmount      string                  `json:"buyer_pay_amount"`
+	PointAmount         string                  `json:"point_amount"`
+	InvoiceAmount       string                  `json:"invoice_amount"`
+	SendPayDate         string                  `json:"send_pay_date,omitempty"`
+	GmtPayment          string                  `json:"gmt_payment"`
+	FundBillList        []FundBillListInfo      `json:"fund_bill_list"`
+	CardBalance         string                  `json:"card_balance,omitempty"`
+	TerminalId          string                  `json:"terminal_id,omitempty"`
+	StoreId             string                  `json:"store_id,omitempty"`
+	StoreName           string                  `json:"store_name,omitempty"`
+	BuyerUserId         string                  `json:"buyer_user_id"`
+	DiscountGoodsDetail string                  `json:"discount_goods_detail,omitempty"`
+	VoucherDetailList   []VoucherDetailListInfo `json:"voucher_detail_list,omitempty"`
+	AdvanceAmount       string                  `json:"advance_amount,omitempty"`
+	AuthTradePayMode    string                  `json:"auth_trade_pay_mode,omitempty"`
+	ChargeAmount        string                  `json:"charge_amount,omitempty"`
+	ChargeFlags         string                  `json:"charge_flags,omitempty"`
+	SettlementId        string                  `json:"settlement_id,omitempty"`
+	BusinessParams      string                  `json:"business_params,omitempty"`
+	BuyerUserType       string                  `json:"buyer_user_type,omitempty"`
+	MdiscountAmount     string                  `json:"mdiscount_amount,omitempty"`
+	DiscountAmount      string                  `json:"discount_amount,omitempty"`
+	BuyerUserName       string                  `json:"buyer_user_name,omitempty"`
+	Subject             string                  `json:"subject,omitempty"`
+	Body                string                  `json:"body,omitempty"`
+	AlipaySubMerchantId string                  `json:"alipay_sub_merchant_id,omitempty"`
+	ExtInfos            string                  `json:"ext_infos,omitempty"`
 }