$channelConfig['app_id'], 'mem_id' => $data['user_id'], 'user_token' => $data['channel_token'], ]; $param['sign'] = $this->signData($param, $channelConfig['app_key']); $res = get_http_response('http://unapi.piliyouxi.com/cp/user/check', $param); $res = json_decode($res, true); if ($res['status'] == 1) { return $data['user_id']; } else { return false; } } // ## 登陆 - 登陆 public function checkLogin($data, $polyChannelGame = []) { return true; } // ## 下单 - 客户端需要的参数(客户端自己做了,这块暂时不用) public function getOrder($data) { return ['code' => 200, 'msg' => 'success', 'param' => []]; } // ## 回调 - 效验 public function paySign($data, $polyChannelGame = []) { $handleKeys = ['app_id', 'ch_id', 'ch_order_id', 'order_id', 'cp_order_id', 'mem_id', 'order_status', 'pay_time', 'finish_time', 'product_id', 'product_name', 'product_price', 'server_id', 'role_id', 'role_id', 'sign']; if (array_diff($handleKeys, array_keys($data))) { return false; } if (!$channelConfig = json_decode($polyChannelGame['param'], true)) { return false; } $param = [ "app_id" => $data['app_id'], // 游戏 ID "ch_id" => $data['ch_id'], // 渠道ID "ch_order_id" => $data['ch_order_id'], // 渠道订单ID "order_id" => $data['order_id'], // 聚合平台订单ID "cp_order_id" => $data['cp_order_id'], // 外部订单号(第三方) "mem_id" => $data['mem_id'], // 玩家ID "order_status" => $data['order_status'], // 平台订单状态:1=未支付,2=成功支付,3=支付失败 "pay_time" => $data['pay_time'], // 订单下单时间 "finish_time" => $data['finish_time'], // 订单支付完成时间 "product_id" => $data['product_id'], // 商品 id "product_name" => $data['product_name'], // 商品名称 "product_price" => $data['product_price'], // 商品价格(元);保留两位小数 "server_id" => $data['server_id'], // 服务器id "role_id" => $data['role_id'], // 角色id "ext" => $data['ext']??"", // 透传参数 ]; $hadleSign = $this->signData($param, $channelConfig['app_key'], true); if ($data['sign'] == $hadleSign) { return true; } return false; } // ## 回调处理相关参数 public function getData($data) { if (!isset($data['cp_order_id']) || !isset($data['product_price']) || !isset($data['order_id'])) { return false; } return [ 'orderid' => $data['cp_order_id'], // 我方聚合订单 'amount' => $data['product_price'], // 充值金额(单位:元) 'sub_orderid' => $data['order_id'], // 渠道订单 ]; } // ## 回调 - 成功返回 public function getSuccess($msg = '') { echo 'SUCCESS'; exit(); } // ## 回调 - 失败返回 public function getFail($msg = '') { trace($this->channel . '@getFail@回调失败:' . $msg); echo 'FAILURE'; exit(); } // 登陆签名 private function signData($param, $app_key, $handleUrl = false) { ksort($param); $param['app_key'] = $app_key; $tmp = []; foreach ($param as $k => $v) { if ($handleUrl == true) { $tmp[] = $k . '=' . urlencode($v); } else { $tmp[] = $k . '=' . $v; } } $sign = implode('&', $tmp); $md5Res = md5($sign); trace('sign=' . $sign . ' - md5=' . $md5Res, 'Pili@signData.result'); return $md5Res; } }