* @version : HUOSDK 8.0 */ namespace api\apple\controller\v8; use api\common\controller\AppleApiBaseController; use huo\controller\pay\Notify; use huo\controller\pay\PaySwitch; use huo\controller\pay\Sdk; use huo\model\order\PayAppleModel; use huolib\constant\GameConst; use huolib\constant\OrderConst; use huolib\status\OrderStatus; use think\Exception; class OrderController extends AppleApiBaseController { public function _initialize() { parent::_initialize(); } /** * 游戏预下单 * http://doc.1tsdk.com/138?page_id=2908 * 【域名】/v8/sdk/preorder * 【域名】/v8/pay/preorder */ public function preorder() { $this->checkLogin(); $_game_rq = $this->setGameData(); $_channel_rq = $this->setChannelData(); $_device_rq = $this->setDeviceData(); $_mem_rq = $this->setMemData(); $_role_rq = $this->setRoleData(); $_order_rq = $this->setOrderData(); $_order = new Sdk(); $_pay_check = OrderConst::PAY_SWITCH_NO; /* 判断支付切换 */ $_from = $_device_rq->getFrom(); if (GameConst::GAME_IOS_SWITCH == $_from) { $_pay_check = (new PaySwitch())->getPaySwitch( $_order_rq, $_role_rq, $_mem_rq, $_game_rq, $_channel_rq, $_device_rq ); } $_preorder_rs = $_order->preorder($_order_rq, $_role_rq, $_mem_rq, $_game_rq, $_channel_rq, $_device_rq); if (OrderStatus::NO_ERROR != $_preorder_rs['code']) { $this->returnData($_preorder_rs); } $_order_id = $_preorder_rs['data']['order_id']; $_pay_token = $_order_rq->genPayToken($_order_id); $_rdata['order_id'] = $_order_id; $_rdata['pay_token'] = $_pay_token; $_rdata['check'] = $_pay_check; $_rdata['pay_url'] = ''; //TODO: chengbingling 2018/6/5 切换支付url /* 苹果下单 直接插入苹果订单表 */ $_from = $_device_rq->getFrom(); if (GameConst::GAME_IOS_SWITCH == $_from && OrderConst::PAY_SWITCH_NO == $_pay_check) { $_data['order_id'] = $_order_id; $_data['mem_id'] = $_mem_rq->getMemId(); $_data['mg_mem_id'] = $_mem_rq->getMgMemId(); $_data['apple_id'] = $_game_rq->getAppleId(); $_data['product_id'] = $_order_rq->getProductId(); $_data['idfv'] = $_device_rq->getMac(); $_data['idfa'] = $_device_rq->getDeviceId(); (new PayAppleModel())->addData($_data); } $this->success(lang('SUCCESS'), $_rdata); } /** * 支付页面数据 * http://doc.1tsdk.com/138?page_id=2954 * 【域名】/pay/info * 【域名】/v8/pay/info */ public function getInfo() { $this->checkLogin(); $_order_rq = $this->setOrderData(); $_pay_token = get_val($this->rq_data, 'pay_token', ''); $_rs = $_order_rq->checkPayToken($_pay_token); if (false == $_rs) { $_code = OrderStatus::TOKEN_ARGS_ERROR; $this->error(OrderStatus::getMsg($_code), [], $_code); } $_order_id = $_order_rq->getOrderId(); $_rdata = (new Sdk())->getPayInfo($_order_id); $this->returnData($_rdata); } /** * 查询支付结果 * http://doc.1tsdk.com/138?page_id=2909 * 【域名】/v8/product/query */ public function read() { try { $_order_rq = $this->setOrderData(); $_order = new Sdk(); $_rdata = $_order->getStatus($_order_rq->getOrderId()); if (false == $_rdata) { $this->error('ERROR'); } if (OrderConst::CP_STATUS_SUC != $_rdata['cp_status'] && OrderConst::PAY_STATUS_SUC == $_rdata['status']) { $_rs = (new Notify())->notify($_order_rq->getOrderId()); if (OrderStatus::NO_ERROR == $_rs['code']) { $_rdata['status'] = OrderConst::PAY_STATUS_SUC; $_rdata['cp_status'] = OrderConst::CP_STATUS_SUC; } } $_rdata['order_id'] = $_order_rq->getOrderId(); $this->success(lang('SUCCESS'), $_rdata); } catch (Exception $_e) { $this->error($_e->getMessage()); } } }