223 lines
6.6 KiB
Go
223 lines
6.6 KiB
Go
package handler
|
|
|
|
//
|
|
//func (this *RequestHandler) keyValueSign(pairs util.Pairs[string, string], key *util.Pair[string, string]) (string, string) {
|
|
// sort.Slice(pairs, func(i, j int) bool {
|
|
// return pairs[i].Key < pairs[j].Key
|
|
// })
|
|
//
|
|
// var sb = strings.Builder{}
|
|
// sb.WriteString(pairs[0].Key)
|
|
// sb.WriteByte('=')
|
|
// sb.WriteString(pairs[0].Value)
|
|
//
|
|
// for _, pair := range pairs[1:] {
|
|
// sb.WriteByte('&')
|
|
// sb.WriteString(pair.Key)
|
|
// sb.WriteByte('=')
|
|
// sb.WriteString(pair.Value)
|
|
// }
|
|
//
|
|
// sb.WriteByte('&')
|
|
// if key.Key != "" {
|
|
// sb.WriteString(key.Key)
|
|
// sb.WriteByte('=')
|
|
// }
|
|
// sb.WriteString(key.Value)
|
|
//
|
|
// var src = sb.String()
|
|
//
|
|
// return util.MD5(src), src
|
|
//}
|
|
//
|
|
//func (this *RequestHandler) IOSWechatChargeCallback(msg *http.Message) {
|
|
// var req = new(proto.MsgIOSWechatChargeCallbackReq)
|
|
// var err = msg.Read(req)
|
|
// if err != nil {
|
|
// this.logger.Error(err)
|
|
// _ = msg.Write([]byte("1"))
|
|
// return
|
|
// }
|
|
//
|
|
// if this.logger.IsDebugEnabled() {
|
|
// this.logger.Debugf("[%s] <- IOS Wechat Charge Callback, req: %s", msg.R.RemoteAddr, util.ToJsonString(req))
|
|
// }
|
|
//
|
|
// var pairs util.Pairs[string, string]
|
|
// pairs = pairs.Append("status", util.IntegerToString(req.Status))
|
|
// pairs = pairs.Append("transactionId", req.TransactionId)
|
|
// pairs = pairs.Append("amount", util.IntegerToString(req.Amount))
|
|
// pairs = pairs.Append("orderNo", req.OrderNo)
|
|
// pairs = pairs.Append("payer_currency", req.PayerCurrency)
|
|
// pairs = pairs.Append("applet_openid", req.AppletOpenid)
|
|
// pairs = pairs.Append("pay_openid", req.PayOpenid)
|
|
//
|
|
// sign, src := this.keyValueSign(pairs, util.NewPair("key", wechat.SyncSignKey()))
|
|
// if !strings.EqualFold(sign, req.Sign) {
|
|
// this.logger.Errorf("Sign verify failed, req.Sign: %s, sign: %s, src: %s", req.Sign, sign, src)
|
|
// _ = msg.Write([]byte("1"))
|
|
// return
|
|
// }
|
|
//
|
|
// var ss []string
|
|
// ss = strings.Split(req.PayerCurrency, ",")
|
|
// if len(ss) != 2 {
|
|
// this.logger.Error("Parameter error, payerCurrency: ", req.PayerCurrency)
|
|
// _ = msg.Write([]byte("1"))
|
|
// return
|
|
// }
|
|
//
|
|
// ss = strings.Split(ss[1], "_")
|
|
// if len(ss) != 3 {
|
|
// this.logger.Error("Parameter error, payerCurrency: ", req.PayerCurrency)
|
|
// _ = msg.Write([]byte("1"))
|
|
// return
|
|
// }
|
|
//
|
|
// buf, err := base64.StdEncoding.DecodeString(ss[2])
|
|
// if err != nil {
|
|
// this.logger.Error("Decode base64 error, extend: %s, error: %v", ss[2], err)
|
|
// _ = msg.Write([]byte("1"))
|
|
// return
|
|
// }
|
|
//
|
|
// var extend = new(proto.OrderExtend)
|
|
// err = json.Unmarshal(buf, extend)
|
|
// if err != nil {
|
|
// this.logger.Error("Unmarshal extend error, extend: %s, error: %v", ss[2], err)
|
|
// _ = msg.Write([]byte("1"))
|
|
// return
|
|
// }
|
|
//
|
|
// var paymentStatus = proto.PaymentStatusSuccess
|
|
// if req.Status != 3 {
|
|
// paymentStatus = proto.PaymentStatusFailed
|
|
// }
|
|
//
|
|
// err = this.userManager.ChargeCallback(paymentStatus, ss[0], ss[1], req.OrderNo, extend)
|
|
// if err != nil {
|
|
// this.logger.Error("Charge callback failed, ", err)
|
|
// _ = msg.Write([]byte("1"))
|
|
// return
|
|
// }
|
|
//
|
|
// if this.logger.IsDebugEnabled() {
|
|
// this.logger.Debugf("[%s] -> IOS Wechat Charge Callback, body: '0'", msg.R.RemoteAddr)
|
|
// }
|
|
//
|
|
// _ = msg.Write([]byte("0"))
|
|
//}
|
|
//
|
|
//func (this *RequestHandler) IOSWechatAccessTokenExpiredCallback(msg *http.Message) {
|
|
// var req = new(proto.MsgIOSWechatAccessTokenExpiredCallbackReq)
|
|
// var err = msg.Read(req)
|
|
// if err != nil {
|
|
// this.logger.Error(err)
|
|
// _ = msg.Write([]byte("1"))
|
|
// return
|
|
// }
|
|
//
|
|
// if this.logger.IsDebugEnabled() {
|
|
// this.logger.Debugf("[%s] <- IOS Wechat access token expired callback, req: %s", msg.R.RemoteAddr, util.ToJsonString(req))
|
|
// }
|
|
//
|
|
// var pairs util.Pairs[string, string]
|
|
// pairs = pairs.Append("appletId", req.AppletId)
|
|
//
|
|
// sign, src := this.keyValueSign(pairs, util.NewPair("key", wechat.SyncSignKey()))
|
|
// if !strings.EqualFold(sign, req.Sign) {
|
|
// this.logger.Errorf("Sign verify failed, req.Sign: %s, sign: %s, src: %s", req.Sign, sign, src)
|
|
// _ = msg.Write([]byte("1"))
|
|
// return
|
|
// }
|
|
//
|
|
// err = this.userManager.WechatAccessTokenExpired(req.AppletId)
|
|
// if err != nil {
|
|
// this.logger.Error("Wechat access token expired callback failed, ", err)
|
|
// _ = msg.Write([]byte("1"))
|
|
// return
|
|
// }
|
|
//
|
|
// if this.logger.IsDebugEnabled() {
|
|
// this.logger.Debugf("[%s] -> IOS Wechat access token expired callback, body: '0'", msg.R.RemoteAddr)
|
|
// }
|
|
//
|
|
// _ = msg.Write([]byte("0"))
|
|
//}
|
|
//
|
|
//func (this *RequestHandler) QuickGameChargeCallback(msg *http.Message) {
|
|
// var req = new(proto.MsgQuickGameChargeCallbackReq)
|
|
// var err = msg.Read(req)
|
|
// if err != nil {
|
|
// this.logger.Error("Read message error", err)
|
|
// _ = msg.Write([]byte("FAILED"))
|
|
// return
|
|
// }
|
|
//
|
|
// if this.logger.IsDebugEnabled() {
|
|
// this.logger.Debugf("[%s] <- IOS Wechat Charge Callback, req: %s", msg.R.RemoteAddr, util.ToJsonString(req))
|
|
// }
|
|
//
|
|
// var src = req.NtData + req.Sign + taptap.QuickMd5Key()
|
|
// var sign = util.MD5(src)
|
|
// if !strings.EqualFold(sign, req.Md5Sign) {
|
|
// this.logger.Errorf("Sign verify failed, req.Md5Sign: %s, sign: %s, src: %s", req.Md5Sign, sign, src)
|
|
// _ = msg.Write([]byte("FAILED"))
|
|
// return
|
|
// }
|
|
//
|
|
// var quickMessage = new(proto.QuickMessage)
|
|
// err = xml.Unmarshal([]byte(taptap.QuickDecryptData(req.NtData)), quickMessage)
|
|
// if err != nil {
|
|
// this.logger.Error("Unmarshal xml error, ", err)
|
|
// _ = msg.Write([]byte("FAILED"))
|
|
// return
|
|
// }
|
|
//
|
|
// if quickMessage.Message == nil {
|
|
// this.logger.Error("Parameter error, quickMessage.Message == nil")
|
|
// _ = msg.Write([]byte("FAILED"))
|
|
// return
|
|
// }
|
|
//
|
|
// var ss = strings.Split(quickMessage.Message.ExtrasParams, "_")
|
|
// if len(ss) != 3 {
|
|
// this.logger.Error("Parameter error, extrasParams: ", quickMessage.Message.ExtrasParams)
|
|
// _ = msg.Write([]byte("FAILED"))
|
|
// return
|
|
// }
|
|
//
|
|
// buf, err := base64.StdEncoding.DecodeString(ss[2])
|
|
// if err != nil {
|
|
// this.logger.Error("Decode base64 error, extend: %s, error: %v", ss[2], err)
|
|
// _ = msg.Write([]byte("FAILED"))
|
|
// return
|
|
// }
|
|
//
|
|
// var extend = new(proto.OrderExtend)
|
|
// err = json.Unmarshal(buf, extend)
|
|
// if err != nil {
|
|
// this.logger.Error("Unmarshal extend error, extend: %s, error: %v", ss[2], err)
|
|
// _ = msg.Write([]byte("FAILED"))
|
|
// return
|
|
// }
|
|
//
|
|
// var paymentStatus = proto.PaymentStatusSuccess
|
|
// if quickMessage.Message.Status != 0 {
|
|
// paymentStatus = proto.PaymentStatusFailed
|
|
// }
|
|
//
|
|
// err = this.userManager.ChargeCallback(paymentStatus, ss[0], ss[1], quickMessage.Message.OrderNo, extend)
|
|
// if err != nil {
|
|
// this.logger.Error("Charge callback failed, ", err)
|
|
// _ = msg.Write([]byte("FAILED"))
|
|
// return
|
|
// }
|
|
//
|
|
// if this.logger.IsDebugEnabled() {
|
|
// this.logger.Debugf("[%s] -> IOS Wechat Charge Callback, body: 'SUCCESS'", msg.R.RemoteAddr)
|
|
// }
|
|
//
|
|
// _ = msg.Write([]byte("SUCCESS"))
|
|
//}
|