修改支付发货接口

This commit is contained in:
hahwu 2025-01-11 12:02:17 +08:00
parent 163336bc0f
commit a69ea709a3
4 changed files with 760 additions and 824 deletions

View File

@ -45,6 +45,7 @@ var Server struct {
RemoteAddr string
GameConfPath string
TELOGDIR string
GoogleVerify bool
}
func init() {

View File

@ -1,10 +1,14 @@
package game
import (
"encoding/json"
"fmt"
"io"
"net/http"
"server/GoUtil"
"server/MergeConst"
mergeCluster "server/cluster"
"server/conf"
cardCfg "server/conf/card"
chargeCfg "server/conf/charge"
mailCfg "server/conf/mail"
@ -398,18 +402,47 @@ func CreateOrderSn(p *Player, ChargeId int, Platform, Channel string) (string, e
return OrderSn, nil
}
func GoogleVerify(p *Player, OrderSn, PayOrderSn string, Status int) (*db.SqlChargeOrderStruct, error) {
func GoogleVerify(p *Player, OrderSn, ProduceId, Token string) (*db.SqlChargeOrderStruct, error) {
Order, err := db.GetPlayerChargeData(OrderSn)
if err != nil {
return nil, err
}
if !conf.Server.GoogleVerify {
Order.PayStatus = MergeConst.ORDER_STATUS_PAY
return Order, nil
}
if Order.PayStatus != MergeConst.ORDER_STATUS_IDLE {
return nil, fmt.Errorf("订单已经支付")
}
// TODO 验证订单
PackageName := "com.DefaultCompany.PetHomeMergeStory"
accessToken := "ya29.a0ARW5m75hnUnTbdLYAMW_0GTZSC1JY0GkPZ2fVqXGexVnPoDLoTviRTMtGVUmkG18F9tf2mmLeaRh7gPYYRAm145rtifW_J8_WUn0rhdOEpqU23vAsdCo1v2aArMsjw2dPHBf5ZCYBPirW_3ckL3MC1VzI4akvY3gt3EMz7U0aCgYKAR0SARISFQHGX2MipUmvPZgSya_iDJWbczKpnA0175"
url := fmt.Sprintf("https://www.googleapis.com/androidpublisher/v3/applications/%s/purchases/products/%s/tokens/%s?access_token=%s",
PackageName, ProduceId, Token, accessToken)
resp, err := http.Get(url)
if err != nil {
return nil, err
}
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
return nil, fmt.Errorf("failed to get data: %s", resp.Status)
}
body, err := io.ReadAll(resp.Body)
if err != nil {
return nil, err
}
res := make(map[string]interface{})
log.Debug(string(body))
err = json.Unmarshal(body, &res)
if err != nil {
return nil, err
}
Order.PayTime = GoUtil.Now()
Order.PayChannelOrderId = PayOrderSn
Order.PayStatus = Status
Order.PayChannelOrderId = res["orderId"].(string)
Order.PayStatus = res["consumptionState"].(int)
Order.ProductName = ProduceId
err = db.UpdatePlayerChargeData(Order)
if err != nil {
return nil, err

View File

@ -2184,9 +2184,7 @@ func ReqShippingOrder(args []interface{}) error {
req := &msg.ReqShippingOrder{}
proto.Unmarshal(buf, req)
OrderSn := req.OrderSn
PayOrderSn := req.PayOrderSn
Status := int(req.Status)
OrderData, err := GoogleVerify(player, OrderSn, PayOrderSn, Status)
OrderData, err := GoogleVerify(player, OrderSn, req.ProduceId, req.Token)
if err != nil {
return err
}
@ -2198,8 +2196,8 @@ func ReqShippingOrder(args []interface{}) error {
player.PlayMod.save()
player.Kafka("order", map[string]interface{}{
"order_sn": OrderSn,
"pay_order_sn": PayOrderSn,
"status": Status,
"pay_order_sn": OrderData.PayChannelOrderId,
"status": OrderData.PayStatus,
})
player.PushClientRes(&msg.ResShippingOrder{
Code: msg.RES_CODE_SUCCESS,

File diff suppressed because it is too large Load Diff