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")) //}