$data['user_id'], 'token' => $data['channel_token'], ]; $signStr = sprintf('userID=%stoken=%s%s', $param['userID'], $param['token'], $channelConfig['app_secret']); $param['sign'] = md5($signStr); $res = get_http_response('http://unionapi.ezjhy.com/user/verifyAccount', $param); $res = json_decode($res, true); if ($res['state'] == 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 = ['productID', 'orderID', 'userID', 'channelID', 'gameID', 'serverID', 'extension', 'roleID', 'currency', 'signType', 'sign']; if (array_diff($handleKeys, array_keys($data))) { return false; } $param = [ 'productID' => $data['productID'], 'orderID' => $data['orderID'], 'userID' => $data['userID'], 'channelID' => $data['channelID'], 'gameID' => $data['gameID'], 'serverID' => $data['serverID'], 'money' => $data['money'], 'extension' => $data['extension'], 'roleID' => $data['roleID'], 'currency' => $data['currency'], 'signType' => $data['signType'], 'sign' => $data['sign'], ]; if (!$channelConfig = json_decode($polyChannelGame['param'], true)) { return false; } $hadleSign = $this->signNotify($param, $channelConfig['app_secret']); if ($data['sign'] == $hadleSign) { return true; } return false; } // ## 回调处理相关参数 public function getData($data) { if (!isset($data['extension']) || !isset($data['money']) || !isset($data['orderID'])) { return false; } return [ 'orderid' => $data['extension'], // 我方聚合订单 'amount' => formatFenToYuan($data['money']), // 充值金额(单位:元) 'sub_orderid' => $data['orderID'], // 渠道订单 ]; } // ## 回调 - 成功返回 public function getSuccess($msg = '') { echo 'SUCCESS'; exit(); } // ## 回调 - 失败返回 public function getFail($msg = '') { echo 'FAIL'; exit(); } // 回调签名 private function signNotify($param, $app_key) { $oldSign = $param['sign']; unset($param['sign']); unset($param['signType']); unset($param['orderTime']); unset($param['orderCompleteTime']); ksort($param); $string = ''; foreach ($param as $k => $v) { $string .= $k . '=' . $v.'&'; } $sign = $string . $app_key; $md5Res = md5($sign); trace('str=' . $sign . ' - sign: ' . $oldSign . ' - ' . $md5Res, 'Ledao@signNotify.result'); return $md5Res; } }