diff --git a/src/server/game/PlayerFunc.go b/src/server/game/PlayerFunc.go index 990c4a94..bf403ffb 100644 --- a/src/server/game/PlayerFunc.go +++ b/src/server/game/PlayerFunc.go @@ -23,6 +23,7 @@ import ( proto "server/msg" "server/pkg/github.com/name5566/leaf/log" "sort" + "strings" ) // 处理玩家异步请求 @@ -420,6 +421,11 @@ func GoogleVerify(p *Player, OrderSn, ProduceId, Token string) (*db.SqlChargeOrd if err != nil { return nil, err } + // 将输出转换为字符串 + outputStr := string(output) + + // 替换单引号为双引号 + outputStr = strings.Replace(outputStr, "'", "\"", -1) type VerifyData struct { PurchaseState int `json:"purchaseState"` DeveloperPayload string `json:"developerPayload"` @@ -427,7 +433,14 @@ func GoogleVerify(p *Player, OrderSn, ProduceId, Token string) (*db.SqlChargeOrd ConsumptionState int `json:"consumptionState"` } r := &VerifyData{} - json.Unmarshal(output, r) + err = json.Unmarshal([]byte(outputStr), &r) + if err != nil { + log.Debug("output %s", string(output)) + return nil, err + } + if r.DeveloperPayload != OrderSn { + return nil, fmt.Errorf("订单号不匹配") + } if r.ConsumptionState != 1 { return nil, fmt.Errorf("订单未消费") } diff --git a/src/server/game/Trigger.go b/src/server/game/Trigger.go index ac0f2c48..1cc4d123 100644 --- a/src/server/game/Trigger.go +++ b/src/server/game/Trigger.go @@ -25,6 +25,9 @@ func TriggerShippingOrder(player *Player, req *msg.ReqShippingOrder) { n := 0 for { n++ + if n > 5 { + break + } OrderData, err = GoogleVerify(player, OrderSn, req.ProduceId, req.Token) if err != nil { log.Debug("GoogleVerify err:%v", err) @@ -38,10 +41,9 @@ func TriggerShippingOrder(player *Player, req *msg.ReqShippingOrder) { if OrderData.PayStatus == MergeConst.ORDER_STATUS_PAY { break } - if n > 5 { - break - } + } + log.Debug("[order verify success] Uid:%d;OrderSn:%s;PayOrder:%s;", player.M_DwUin, OrderData.OrderId, OrderData.PayChannelOrderId) player.lock.Lock() defer player.lock.Unlock() Charge(player, int(OrderData.ProductId))