Merge branch 'sdk' into online

This commit is contained in:
hahwu 2025-01-21 16:15:36 +08:00
commit 95d889cf58
2 changed files with 27 additions and 1 deletions

View File

@ -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("订单未消费")
}

View File

@ -5,6 +5,7 @@ import (
"server/conf"
"server/db"
"server/msg"
"server/pkg/github.com/name5566/leaf/log"
"time"
)
@ -21,9 +22,15 @@ func TriggerShippingOrder(player *Player, req *msg.ReqShippingOrder) {
}
OrderData := &db.SqlChargeOrderStruct{}
var err error
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)
time.Sleep(1 * time.Second)
continue
}
@ -34,7 +41,12 @@ func TriggerShippingOrder(player *Player, req *msg.ReqShippingOrder) {
if OrderData.PayStatus == MergeConst.ORDER_STATUS_PAY {
break
}
}
if OrderData == nil {
return
}
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))
@ -53,4 +65,5 @@ func TriggerShippingOrder(player *Player, req *msg.ReqShippingOrder) {
"PayType": OrderData.PayType,
}
player.Kafka("pay", orderDataMap)
player.SendClientRes()
}