ecs/servers/gate/handler/request_callback.go
2025-06-04 18:17:39 +08:00

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