Order.php 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. <?php
  2. /**
  3. * Order.php UTF-8
  4. * 订单事件
  5. *
  6. * @date : 2018/5/30 16:52
  7. *
  8. * @license 这不是一个自由软件,未经授权不许任何使用和传播。
  9. * @author : wuyonghong <wyh@huosdk.com>
  10. * @version : HUOSDK 8.0
  11. */
  12. namespace huo\controller\queue;
  13. use huo\controller\member\MemCache;
  14. use huo\controller\pay\SdkOrderCache;
  15. use huo\controller\request\Channel;
  16. use huo\controller\request\Device;
  17. use huo\controller\request\Game;
  18. use huo\controller\request\Mem as MemRq;
  19. use huo\controller\request\Order as OrderRq;
  20. use huo\controller\request\Role as RoleRq;
  21. use huolib\queue\constant\EventConst;
  22. class Order extends SdkQueue {
  23. /**
  24. * 玩家充值下单
  25. * 玩家下单时调用
  26. * http://doc.1tsdk.com/138?page_id=3387
  27. *
  28. * @param Device $device_rq
  29. * @param Game $game_rq
  30. * @param Channel $agent_rq
  31. * @param MemRq $mem_rq
  32. * @param RoleRq $role_rq
  33. * @param OrderRq $order_rq
  34. *
  35. * @return array
  36. */
  37. public function create(
  38. Device $device_rq,
  39. Game $game_rq,
  40. Channel $agent_rq,
  41. MemRq $mem_rq,
  42. RoleRq $role_rq,
  43. OrderRq $order_rq
  44. ) {
  45. $this->param['event'] = EventConst::EVENT_ORDER_CREATE;
  46. $this->setParamDevice($device_rq);
  47. $this->setParamGame($game_rq);
  48. $this->setParamChannel($agent_rq);
  49. $this->setParamRole($role_rq);
  50. $this->setParamMem($mem_rq);
  51. $this->setParamOrder($order_rq);
  52. return $this->pushQueue();
  53. }
  54. /**
  55. * 充值成功
  56. * 记录玩家充值行为成功的日志。游戏服务端在收到第三方支付端返回的充值结果<成功或失败>,
  57. * 同步虚拟币到客户端,应区分该虚拟币是由充值成功获得的,在此处进行埋点。
  58. * http://doc.1tsdk.com/138?page_id=3388
  59. *
  60. * @param Device $device_rq
  61. * @param Game $game_rq
  62. * @param Channel $agent_rq
  63. * @param MemRq $mem_rq
  64. * @param RoleRq $role_rq
  65. * @param OrderRq $order_rq
  66. *
  67. * @return array
  68. */
  69. public function success(
  70. Device $device_rq,
  71. Game $game_rq,
  72. Channel $agent_rq,
  73. MemRq $mem_rq,
  74. RoleRq $role_rq,
  75. OrderRq $order_rq
  76. ) {
  77. $this->param['event'] = EventConst::EVENT_ORDER_SUCCESS;
  78. $this->setParamDevice($device_rq);
  79. $this->setParamGame($game_rq);
  80. $this->setParamChannel($agent_rq);
  81. $this->setParamRole($role_rq);
  82. $this->setParamMem($mem_rq);
  83. $this->setParamOrder($order_rq);
  84. $this->param['ts'] = $order_rq->getPayTime();
  85. return $this->pushQueue();
  86. }
  87. /**
  88. * 通过订单设置异步处理
  89. *
  90. * @param string $order_id
  91. *
  92. * @return array|mixed
  93. */
  94. public function fromSdkOrder($order_id = '') {
  95. $_soc_class = SdkOrderCache::ins();
  96. $_order_data = $_soc_class->getInfoByOrderId($order_id);
  97. if (empty($_order_data) || empty($_order_data['payext'])) {
  98. return $this->retErrMsg();
  99. }
  100. $_mem_id = $_order_data['mem_id'];
  101. $_mem_data = MemCache::ins()->getInfoById($_mem_id);
  102. $_me_data = MemCache::ins()->getMeInfoById($_mem_id);
  103. $this->setAppId($_order_data['app_id']);
  104. $_device_rq = new Device();
  105. $_game_rq = new Game();
  106. $_agent_rq = new Channel();
  107. $_mem_rq = new MemRq();
  108. $_role_rq = new RoleRq();
  109. $_order_rq = new OrderRq();
  110. /* 渠道 */
  111. $_agent_rq->setCh($_mem_data['agent_id']);
  112. /* 玩家 */
  113. $_mem_rq->setMemId($_mem_id);
  114. $_mem_rq->setMgMemId($_order_data['mg_mem_id']);
  115. $_mem_rq->setRegTime($_mem_data['create_time']);
  116. $_mem_rq->setLoginTime($_order_data['pay_time']);
  117. /* 角色 */
  118. $_role_rq->setServerId(get_val($_order_data['payext'], 'server_id', ''));
  119. $_role_rq->setServerName(get_val($_order_data['payext'], 'server_name', ''));
  120. $_role_rq->setRoleId(get_val($_order_data['payext'], 'role_id', ''));
  121. $_role_rq->setRoleName(get_val($_order_data['payext'], 'role_name', ''));
  122. $_role_rq->setRoleLevel(get_val($_order_data['payext'], 'role_level', ''));
  123. /* 订单 */
  124. $_order_rq->setDataFromOrder($_order_data);
  125. /* 设备 */
  126. $_device_rq->setIp(get_val($_order_data['payext'], 'ip', ''));
  127. $_device_rq->setDeviceId(get_val($_order_data['payext'], 'device_id', ''));
  128. return $this->success($_device_rq, $_game_rq, $_agent_rq, $_mem_rq, $_role_rq, $_order_rq);
  129. }
  130. }