package controller import ( actorRemote "f1-game/internal/actor_remote" "f1-game/internal/code" "f1-game/internal/component/sdk" "f1-game/internal/data" nameKey "f1-game/internal/name/key" "f1-game/internal/pb" "net/http" clog "github.com/cherry-game/cherry/logger" cprofile "github.com/cherry-game/cherry/profile" cgin "github.com/cherry-game/components/gin" ) type PayController struct { cgin.BaseController } func (p *PayController) Init() { p.GET("/pay/pid/:pid", p.pid) p.GET("/pay/callback/:name", p.callbackName) if cprofile.Debug() { p.GET("/pay/test_create", p.testCreateOrder) p.GET("/pay/test_payment", p.testPayment) } } // pid 根据pid进行支付回调 func (p *PayController) pid(c *cgin.Context) { pid := c.GetInt32(nameKey.PID, 0) config := data.SDK.Get(pid) p.callback(c, config) } // callbackName 根据callbackName进行支付回调 func (p *PayController) callbackName(c *cgin.Context) { callName := c.GetString(nameKey.Name, "") config := data.SDK.GetWithName(callName) p.callback(c, config) } func (p *PayController) callback(c *cgin.Context, config *data.SdkRow) { if config == nil { clog.Warnf("sdkConfig == nil. [params = %s, url = %s]", c.GetParams(true), c.Request.URL) c.String(http.StatusBadRequest, "request parameter error.") return } invoke, err := sdk.GetInvoke(config.SdkID) if err != nil { clog.Warnf("Get invoke error. [params = %s, err = %v]", c.GetParams(true), err) c.String(http.StatusBadRequest, "request parameter error.") return } invoke.PayCallback(config, c) } // testCreateOrder 测试 创建订单 func (p *PayController) testCreateOrder(c *cgin.Context) { if !cprofile.Debug() { return } createOrder := &pb.CreateOrder{ PID: c.GetInt32(nameKey.PID, 0), UID: c.GetInt64(nameKey.UID, 0), GameNodeID: c.GetString(nameKey.GameNodeID, "0"), PlayerID: c.GetInt64(nameKey.PlayerID, 0), ChargeID: c.GetInt32(nameKey.ChargeID, 0), Amount: c.GetInt32(nameKey.Money, 0), ClientOS: c.GetInt32(nameKey.ClientOS, 0), Ip: c.ClientIP(), Extra: make(map[string]string), } config := data.SDK.Get(createOrder.PID) if config == nil { code.JSONResult(c, code.PlayerOrderCreateFail) return } rsp, statusCode := actorRemote.GameOrder.Create(createOrder) code.JSONResult(c, statusCode, rsp) } // testPayment 测试 付款 func (p *PayController) testPayment(c *cgin.Context) { if !cprofile.Debug() { return } orderID := c.GetInt64(nameKey.OrderID, 0) if orderID < 1 { code.JSONResult(c, code.PlayerOrderIdError) return } statusCode := actorRemote.GameOrder.Payment(&pb.UpdateOrder{ OrderID: orderID, SdkOrderID: "", Amount: 0, CheckAmount: false, Origin: 0, }) code.JSONResult(c, statusCode) }