diff --git a/wx_change.go b/wx_change.go index 67baf0864f6d77bfd76e2ebe1619fceedab3a508..e049666d2c5fabe30a264dc06187d242f4fdc598 100644 --- a/wx_change.go +++ b/wx_change.go @@ -1,6 +1,8 @@ package wechat -import "encoding/xml" +import ( + "encoding/xml" +) // 企业付款到零钱(前提用户必须关注公众号) func (c *Client) Change(body ChangeBody) (wxRsp ChangeResponse, err error) { @@ -9,10 +11,7 @@ func (c *Client) Change(body ChangeBody) (wxRsp ChangeResponse, err error) { if err != nil { return } - // 结果校验 - if err = c.doVerifySign(bytes, true); err != nil { - return - } + // 不返回sign不需要校验 // 解析返回值 err = xml.Unmarshal(bytes, &wxRsp) return @@ -34,8 +33,8 @@ type ChangeBody struct { type ChangeResponse struct { ResponseModel MchServiceResponseModel - DeviceInfo string `json:"device_info,omitempty"` // 终端设备号 - PartnerTradeNo string `json:"partner_trade_no"` // 商户系统内部订单号,要求32个字符内,只能是数字、大小写字母_-|*且在同一个商户号下唯一。详见商户订单号 - PaymentNo string `json:"payment_no"` // 企业付款成功,返回的微信付款单号 - PaymentTime string `json:"payment_time"` // 企业付款成功时间 + DeviceInfo string `xml:"device_info"` // 终端设备号 + PartnerTradeNo string `xml:"partner_trade_no"` // 商户系统内部订单号,要求32个字符内,只能是数字、大小写字母_-|*且在同一个商户号下唯一。详见商户订单号 + PaymentNo string `xml:"payment_no"` // 企业付款成功,返回的微信付款单号 + PaymentTime string `xml:"payment_time"` // 企业付款成功时间 } diff --git a/wx_change_query.go b/wx_change_query.go new file mode 100644 index 0000000000000000000000000000000000000000..f1c21572120bc3ecaf72579bcb16f6c1d0381333 --- /dev/null +++ b/wx_change_query.go @@ -0,0 +1,39 @@ +package wechat + +import ( + "encoding/xml" +) + +// 企业付款到零钱的查询 +func (c *Client) ChangeQuery(body ChangeQueryBody) (wxRsp ChangeQueryResponse, err error) { + // 业务逻辑 + bytes, err := c.doWeChatWithCert("mmpaymkttransfers/gettransferinfo", body) + if err != nil { + return + } + // 不返回sign不需要校验 + // 解析返回值 + err = xml.Unmarshal(bytes, &wxRsp) + return +} + +// 微信找零查询的参数 +type ChangeQueryBody struct { + PartnerTradeNo string `json:"partner_trade_no"` // 商户系统内部订单号 +} + +// 微信找零查询的返回值 +type ChangeQueryResponse struct { + ResponseModel + MchServiceResponseModel + PartnerTradeNo string `xml:"partner_trade_no"` // 商户系统内部订单号,要求32个字符内,只能是数字、大小写字母_-|*且在同一个商户号下唯一。详见商户订单号 + DetailId string `xml:"detail_id"` // 调用企业付款API时,微信系统内部产生的单号 + Status string `xml:"status"` // 转账状态 + Reason string `xml:"reason"` // 失败原因 + OpenId string `xml:"openid"` // 转账的openid + TransferName string `xml:"transfer_name"` // 收款用户姓名 + PaymentAmount int `xml:"payment_amount"` // 付款金额单位为“分” + TransferTime string `xml:"transfer_time"` // 发起转账的时间 + PaymentTime string `xml:"payment_time"` // 企业付款成功时间 + Desc string `xml:"desc"` // 企业付款备注 +} diff --git a/wx_change_query_test.go b/wx_change_query_test.go new file mode 100644 index 0000000000000000000000000000000000000000..8a6761e4e894de2c3df9f68472706812a20c8c8f --- /dev/null +++ b/wx_change_query_test.go @@ -0,0 +1,29 @@ +package wechat + +import ( + "fmt" + "testing" +) + +// 测试微信找零查询 +func TestChangeQuery(t *testing.T) { + fmt.Println("----------微信找零查询----------") + // 初始化参数 + body := ChangeQueryBody{} + body.PartnerTradeNo = "wxcs201908241600005555" + + // 请求的客户端必须是商户模式,且是特殊的商户接口 + changeClient := NewClient(true, false, ServiceTypeNormalDomestic, testApiKey, testCertPath, Config{ + AppId: testAppId, // 用子商户id设置 + MchId: testMchId, // 用子商户号设置 + }) + + // 请求支付 + wxRsp, err := changeClient.ChangeQuery(body) + if err != nil { + t.Error(err) + return + } + t.Logf("返回值: %+v\n", wxRsp) + return +} diff --git a/wx_change_test.go b/wx_change_test.go index 981229aa0adf03d53d4e354766c59161f3bca2c1..14aa096c218b7adc99d92918a9e72de9e602fb9d 100644 --- a/wx_change_test.go +++ b/wx_change_test.go @@ -10,17 +10,17 @@ func TestChange(t *testing.T) { fmt.Println("----------微信找零----------") // 初始化参数 body := ChangeBody{} - body.PartnerTradeNo = "wxcs201908231600003333" - body.OpenId = "134891333183485251" + body.PartnerTradeNo = "1111111" + body.OpenId = "111" body.CheckName = CheckNameTypeNoCheck - body.Amount = 1 + body.Amount = 30 body.Desc = "停车费找零" body.SpbillCreateIP = "124.77.173.62" // 请求的客户端必须是商户模式,且是特殊的商户接口 changeClient := NewClient(true, true, ServiceTypeNormalDomestic, testApiKey, testCertPath, Config{ - AppId: testSubAppId, // 用子商户id设置 - MchId: testSubMchId, // 用子商户号设置 + AppId: testAppId, // 用子商户id设置 + MchId: testMchId, // 用子商户号设置 }) // 请求支付 @@ -29,6 +29,6 @@ func TestChange(t *testing.T) { t.Error(err) return } - fmt.Printf("返回值: %+v\n", wxRsp) + t.Logf("返回值: %+v\n", wxRsp) return } diff --git a/wx_openid_by_authcode_test.go b/wx_openid_by_authcode_test.go index ef87e821eadf33040355a6d2cde5db740e0517d3..5f52f7c08cb88d9d4aa3df9ceede2308eb4d6da0 100644 --- a/wx_openid_by_authcode_test.go +++ b/wx_openid_by_authcode_test.go @@ -10,7 +10,7 @@ func TestOpenIdByAuthCode(t *testing.T) { fmt.Println("----------授权码查询openid----------") // 初始化参数 body := OpenIdByAuthCodeBody{} - body.AuthCode = "134878838249661612" + body.AuthCode = "134785902462927760" // 请求支付 wxRsp, err := testClient.OpenIdByAuthCode(body) if err != nil {