Skip to content

Commit

Permalink
fixed bug
Browse files Browse the repository at this point in the history
  • Loading branch information
blusewang committed Nov 23, 2020
1 parent 6f881e7 commit 7030774
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 23 deletions.
23 changes: 13 additions & 10 deletions mch_api/structs.go
Original file line number Diff line number Diff line change
Expand Up @@ -270,16 +270,19 @@ type RedPackInfoRes struct {
}

type TransferData struct {
MchBase
MchId string `xml:"mchid"`
MchAppId string `xml:"mch_appid"`
PartnerTradeNo string `xml:"partner_trade_no"`
OpenId string `xml:"openid"`
CheckName string `xml:"check_name"`
ReUserName string `xml:"re_user_name"`
Amount int `xml:"amount"`
Desc string `xml:"desc"`
SpBillCreateIp string `xml:"spbill_create_ip"`
XMLName xml.Name `xml:"xml"`
NonceStr string `xml:"nonce_str"`
Sign string `xml:"sign"`
SignType string `xml:"sign_type,omitempty"`
MchId string `xml:"mchid"`
MchAppId string `xml:"mch_appid"`
PartnerTradeNo string `xml:"partner_trade_no"`
OpenId string `xml:"openid"`
CheckName string `xml:"check_name"`
ReUserName string `xml:"re_user_name"`
Amount int `xml:"amount"`
Desc string `xml:"desc"`
SpBillCreateIp string `xml:"spbill_create_ip"`
}

type TransferRes struct {
Expand Down
41 changes: 28 additions & 13 deletions mch_req.go
Original file line number Diff line number Diff line change
Expand Up @@ -101,23 +101,38 @@ func (mr *mchReq) sign() (err error) {
return errors.New("the data to be sign is not set")
}

if reflect.ValueOf(mr.sendData).Kind() != reflect.Ptr {
vf := reflect.ValueOf(mr.sendData)
if vf.Kind() != reflect.Ptr {
return errors.New("the send data must be ptr")
}

var base = reflect.ValueOf(mr.sendData).Elem().FieldByName("MchBase")
base.FieldByName("MchId").SetString(mr.account.MchId)
base.FieldByName("AppId").SetString(mr.appId)
base.FieldByName("NonceStr").SetString(NewRandStr(32))
if vf.Elem().FieldByName("MchBase").IsValid() {
var base = vf.Elem().FieldByName("MchBase")
base.FieldByName("MchId").SetString(mr.account.MchId)
base.FieldByName("AppId").SetString(mr.appId)
base.FieldByName("NonceStr").SetString(NewRandStr(32))

var sign string
//base.FieldByName("SignType").SetString(mch_api.MchSignTypeMD5)
if mr.isHmacSign {
base.FieldByName("SignType").SetString(mch_api.MchSignTypeHMACSHA256)
sign = mr.account.signHmacSha256(mr.sendData)
} else {
sign = mr.account.signMd5(mr.sendData)
var sign string
if mr.isHmacSign {
base.FieldByName("SignType").SetString(mch_api.MchSignTypeHMACSHA256)
sign = mr.account.signHmacSha256(mr.sendData)
} else {
sign = mr.account.signMd5(mr.sendData)
}
base.FieldByName("Sign").SetString(sign)
} else if vf.Elem().FieldByName("Sign").IsValid() && vf.Elem().FieldByName("NonceStr").IsValid() {
vf.Elem().FieldByName("NonceStr").SetString(NewRandStr(32))
var sign string
if mr.isHmacSign {
if vf.Elem().FieldByName("SignType").IsValid() {
vf.Elem().FieldByName("SignType").SetString(mch_api.MchSignTypeHMACSHA256)
sign = mr.account.signHmacSha256(mr.sendData)
}
} else {
sign = mr.account.signMd5(mr.sendData)
}
vf.Elem().FieldByName("Sign").SetString(sign)
}
base.FieldByName("Sign").SetString(sign)

return
}

0 comments on commit 7030774

Please sign in to comment.