package main import ( "crypto/md5" "fmt" "io" "net/url" ) func md5str(s string) string { h := md5.New() io.WriteString(h, s) return fmt.Sprintf("%x", h.Sum(nil)) } func md5LeanworkForm(form url.Values) string { s := "" if _, ok := form["pickupUrl"]; ok { s += form["pickupUrl"][0] s += form["receiveUrl"][0] s += form["signType"][0] s += form["orderNo"][0] s += form["orderAmount"][0] s += form["orderCurrency"][0] s += form["customerId"][0] s += Config.LeanWork.MD5Key } return md5str(s) } func isLeanworkFormValid(form url.Values) bool { r := md5LeanworkForm(form) sign := form["sign"][0] return r == sign } func md4RpnFormP2P(r RpnReq) string { return md5RpnForm(r, Config.Rpn.MD5P2P) } func md5RpnFormFAT(r RpnReq) string { return md5RpnForm(r, Config.Rpn.MD5FAT) } func md5RpnForm(r RpnReq, md5key string) string { s := "" s += "version=" + r.version + "|" s += "sign_type=" + r.sign_type + "|" s += "mid=" + r.mid + "|" s += "notify_url=" + r.notify_url + "|" s += "order_id=" + r.order_id + "|" s += "order_amount=" + r.order_amount + "|" s += "order_time=" + r.order_time + "|" s += "user_id=" + r.user_id + "|" s += "user_name=" + r.user_name + "|" s += "user_cardno=" + r.user_cardno + "|" s += "key=" + md5key fmt.Println(s) fmt.Println(md5str(s)) return md5str(s) }