* @version : HUOSDK 8.0 */ namespace huo\controller\queue; use huo\controller\member\MemCache; use huo\controller\pay\SdkOrderCache; use huo\controller\request\Channel; use huo\controller\request\Device; use huo\controller\request\Game; use huo\controller\request\Mem as MemRq; use huo\controller\request\Order as OrderRq; use huo\controller\request\Role as RoleRq; use huolib\queue\constant\EventConst; class Order extends SdkQueue { /** * 玩家充值下单 * 玩家下单时调用 * http://doc.1tsdk.com/138?page_id=3387 * * @param Device $device_rq * @param Game $game_rq * @param Channel $agent_rq * @param MemRq $mem_rq * @param RoleRq $role_rq * @param OrderRq $order_rq * * @return array */ public function create( Device $device_rq, Game $game_rq, Channel $agent_rq, MemRq $mem_rq, RoleRq $role_rq, OrderRq $order_rq ) { $this->param['event'] = EventConst::EVENT_ORDER_CREATE; $this->setParamDevice($device_rq); $this->setParamGame($game_rq); $this->setParamChannel($agent_rq); $this->setParamRole($role_rq); $this->setParamMem($mem_rq); $this->setParamOrder($order_rq); return $this->pushQueue(); } /** * 充值成功 * 记录玩家充值行为成功的日志。游戏服务端在收到第三方支付端返回的充值结果<成功或失败>, * 同步虚拟币到客户端,应区分该虚拟币是由充值成功获得的,在此处进行埋点。 * http://doc.1tsdk.com/138?page_id=3388 * * @param Device $device_rq * @param Game $game_rq * @param Channel $agent_rq * @param MemRq $mem_rq * @param RoleRq $role_rq * @param OrderRq $order_rq * * @return array */ public function success( Device $device_rq, Game $game_rq, Channel $agent_rq, MemRq $mem_rq, RoleRq $role_rq, OrderRq $order_rq ) { $this->param['event'] = EventConst::EVENT_ORDER_SUCCESS; $this->setParamDevice($device_rq); $this->setParamGame($game_rq); $this->setParamChannel($agent_rq); $this->setParamRole($role_rq); $this->setParamMem($mem_rq); $this->setParamOrder($order_rq); $this->param['ts'] = $order_rq->getPayTime(); return $this->pushQueue(); } /** * 通过订单设置异步处理 * * @param string $order_id * * @return array|mixed */ public function fromSdkOrder($order_id = '') { $_soc_class = SdkOrderCache::ins(); $_order_data = $_soc_class->getInfoByOrderId($order_id); if (empty($_order_data) || empty($_order_data['payext'])) { return $this->retErrMsg(); } $_mem_id = $_order_data['mem_id']; $_mem_data = MemCache::ins()->getInfoById($_mem_id); $_me_data = MemCache::ins()->getMeInfoById($_mem_id); $this->setAppId($_order_data['app_id']); $_device_rq = new Device(); $_game_rq = new Game(); $_agent_rq = new Channel(); $_mem_rq = new MemRq(); $_role_rq = new RoleRq(); $_order_rq = new OrderRq(); /* 渠道 */ $_agent_rq->setCh($_mem_data['agent_id']); /* 玩家 */ $_mem_rq->setMemId($_mem_id); $_mem_rq->setMgMemId($_order_data['mg_mem_id']); $_mem_rq->setRegTime($_mem_data['create_time']); $_mem_rq->setLoginTime($_order_data['pay_time']); /* 角色 */ $_role_rq->setServerId(get_val($_order_data['payext'], 'server_id', '')); $_role_rq->setServerName(get_val($_order_data['payext'], 'server_name', '')); $_role_rq->setRoleId(get_val($_order_data['payext'], 'role_id', '')); $_role_rq->setRoleName(get_val($_order_data['payext'], 'role_name', '')); $_role_rq->setRoleLevel(get_val($_order_data['payext'], 'role_level', '')); /* 订单 */ $_order_rq->setDataFromOrder($_order_data); /* 设备 */ $_device_rq->setIp(get_val($_order_data['payext'], 'ip', '')); $_device_rq->setDeviceId(get_val($_order_data['payext'], 'device_id', '')); return $this->success($_device_rq, $_game_rq, $_agent_rq, $_mem_rq, $_role_rq, $_order_rq); } }