pay_controller.go 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. package controller
  2. import (
  3. actorRemote "f1-game/internal/actor_remote"
  4. "f1-game/internal/code"
  5. "f1-game/internal/component/sdk"
  6. "f1-game/internal/data"
  7. nameKey "f1-game/internal/name/key"
  8. "f1-game/internal/pb"
  9. "net/http"
  10. clog "github.com/cherry-game/cherry/logger"
  11. cprofile "github.com/cherry-game/cherry/profile"
  12. cgin "github.com/cherry-game/components/gin"
  13. )
  14. type PayController struct {
  15. cgin.BaseController
  16. }
  17. func (p *PayController) Init() {
  18. p.GET("/pay/pid/:pid", p.pid)
  19. p.GET("/pay/callback/:name", p.callbackName)
  20. if cprofile.Debug() {
  21. p.GET("/pay/test_create", p.testCreateOrder)
  22. p.GET("/pay/test_payment", p.testPayment)
  23. }
  24. }
  25. // pid 根据pid进行支付回调
  26. func (p *PayController) pid(c *cgin.Context) {
  27. pid := c.GetInt32(nameKey.PID, 0)
  28. config := data.SDK.Get(pid)
  29. p.callback(c, config)
  30. }
  31. // callbackName 根据callbackName进行支付回调
  32. func (p *PayController) callbackName(c *cgin.Context) {
  33. callName := c.GetString(nameKey.Name, "")
  34. config := data.SDK.GetWithName(callName)
  35. p.callback(c, config)
  36. }
  37. func (p *PayController) callback(c *cgin.Context, config *data.SdkRow) {
  38. if config == nil {
  39. clog.Warnf("sdkConfig == nil. [params = %s, url = %s]", c.GetParams(true), c.Request.URL)
  40. c.String(http.StatusBadRequest, "request parameter error.")
  41. return
  42. }
  43. invoke, err := sdk.GetInvoke(config.SdkID)
  44. if err != nil {
  45. clog.Warnf("Get invoke error. [params = %s, err = %v]", c.GetParams(true), err)
  46. c.String(http.StatusBadRequest, "request parameter error.")
  47. return
  48. }
  49. invoke.PayCallback(config, c)
  50. }
  51. // testCreateOrder 测试 创建订单
  52. func (p *PayController) testCreateOrder(c *cgin.Context) {
  53. if !cprofile.Debug() {
  54. return
  55. }
  56. createOrder := &pb.CreateOrder{
  57. PID: c.GetInt32(nameKey.PID, 0),
  58. UID: c.GetInt64(nameKey.UID, 0),
  59. GameNodeID: c.GetString(nameKey.GameNodeID, "0"),
  60. PlayerID: c.GetInt64(nameKey.PlayerID, 0),
  61. ChargeID: c.GetInt32(nameKey.ChargeID, 0),
  62. Amount: c.GetInt32(nameKey.Money, 0),
  63. ClientOS: c.GetInt32(nameKey.ClientOS, 0),
  64. Ip: c.ClientIP(),
  65. Extra: make(map[string]string),
  66. }
  67. config := data.SDK.Get(createOrder.PID)
  68. if config == nil {
  69. code.JSONResult(c, code.PlayerOrderCreateFail)
  70. return
  71. }
  72. rsp, statusCode := actorRemote.GameOrder.Create(createOrder)
  73. code.JSONResult(c, statusCode, rsp)
  74. }
  75. // testPayment 测试 付款
  76. func (p *PayController) testPayment(c *cgin.Context) {
  77. if !cprofile.Debug() {
  78. return
  79. }
  80. orderID := c.GetInt64(nameKey.OrderID, 0)
  81. if orderID < 1 {
  82. code.JSONResult(c, code.PlayerOrderIdError)
  83. return
  84. }
  85. statusCode := actorRemote.GameOrder.Payment(&pb.UpdateOrder{
  86. OrderID: orderID,
  87. SdkOrderID: "",
  88. Amount: 0,
  89. CheckAmount: false,
  90. Origin: 0,
  91. })
  92. code.JSONResult(c, statusCode)
  93. }