$channelConfig['app_id'], 'timestamp' => time(), 'uid' => $data['user_id'], ]; $param['sign'] = md5("app_id={$channelConfig['app_id']}×tamp={$param['timestamp']}&uid={$param['uid']}&pay_key={$channelConfig['pay_key']}"); $res = get_http_response('https://sdk.frpmce.cn/tools/gamefactor.ashx?action=factor_login', $param); $res = json_decode($res, true); if ($res['status'] == 1) { return $data['user_id']; } else { // log_message('Weilian@getSpecialParam.str='."app_id={$channelConfig['app_id']}×tamp={$param['timestamp']}&uid={$param['uid']}&pay_key={$channelConfig['pay_key']}".', sign=' . $param['sign'], 'log', LOG_PATH . 'apilog/'); return false; } } // ## 登陆 - 登陆 public function checkLogin($data, $polyChannelGame = []) { return true; } // ## 下单 - 处理下单数据 public function getOrder($data){ if (!empty(array_diff(['attach'], array_keys($data)))) { return ['code' => -110, 'msg' => '下单参数有误!', 'param' => []]; } if (empty($data['channel_info']['param'])) { return ['code' => -120, 'msg' => '渠道配置参数有误!', 'param' => []]; } $param = $data['channel_info']['param']; $param = json_decode($param, true); $timestamp = time(); // $signStr = sprintf( // "amount=%s&app_id=%s&cporder=%s×tamp=%s&uid=%s%s", // $data['attach'], // $param['app_id'], // $data['pay_info']['orderid'], // $timestamp, // $data['member_info']['complex_username'], // $param['pay_key'] // ); $amount = formatYuanToFen($data['amount']); $signStr = "amount={$amount}&app_id={$param['app_id']}&cporder={$data['pay_info']['orderid']}×tamp={$timestamp}&uid={$data['member_info']['complex_username']}{$param['pay_key']}"; $sign = md5($signStr); // log_message('Weilian@getOrder.str='.$signStr.', sign=' . $sign, 'log', LOG_PATH . 'apilog/'); if ($sign) { return ['code' => 200, 'msg' => 'success', 'param' => ['sign' => $sign, 'extension' => $timestamp]]; } return ['code' => -100, 'msg' => '渠道配置参数有误!', 'param' => []]; } // ## 回调 - 效验 public function paySign($data, $polyChannelGame = []) { $handleKeys = ['app_id', 'timestamp', 'uid', 'cp_order_id', 'order_id', 'order_amount', 'server_id', 'role_id', 'sign']; if (array_diff($handleKeys, array_keys($data))) { return false; } $param = [ "app_id" => $data['app_id'], "timestamp" => $data['timestamp'], "uid" => $data['uid'], "cp_order_id" => $data['cp_order_id'], "order_id" => $data['order_id'], "order_amount" => $data['order_amount'], "server_id" => $data['server_id'], "role_id" => $data['role_id'], "extras_params" => $data['extras_params']??'', "sign" => $data['sign'], ]; if (!$channelConfig = json_decode($polyChannelGame['param'], true)) { return false; } $hadleSign = md5("app_id={$param['app_id']}&cp_order_id={$param['cp_order_id']}&order_amount={$param['order_amount']}&order_id={$param['order_id']} &role_id={$param['role_id']}&server_id={$param['server_id']}×tamp={$param['timestamp']}&uid={$param['uid']}&pay_key={$channelConfig['pay_key']}"); if ($param['sign'] == $hadleSign) { return true; } return false; } // ## 回调处理相关参数 public function getData($data) { if (!isset($data['cp_order_id']) || !isset($data['order_amount']) || !isset($data['order_id'])) { return false; } return [ 'orderid' => $data['cp_order_id'], // 我方聚合订单 'amount' => $data['order_amount'], // 充值金额(单位:元) 'sub_orderid' => $data['order_id'], // 渠道订单 ]; } // ## 回调 - 成功返回 public function getSuccess($msg = '') { echo 'SUCCESS'; exit(); } // ## 回调 - 失败返回 public function getFail($msg = '') { trace($this->channel . '@getFail@回调失败:' . $msg); echo 'FAILURE'; exit(); } }