$data['user_id'], 'auth' => $data['extparam'], 'tm' => time(), ]; ksort($param); foreach ($param as $k => $v) { $tmp[] = $k . '=' . urlencode($v); } $str = implode('&', $tmp) . $channelConfig['app_key']; $param['sign'] = md5($str); $res = get_http_response('https://api.8yoo.com/user/loginVerify', $param); $res = json_decode($res, true); if ($res['code'] === 0) { return ['user_id' => $res['data']['user_id']]; } // return "登录验证失败!"; return false; } // ## 回调 - 效验 public function paySign($data, $polyChannelGame = []) { $param = Request::instance()->only(['tm', 'm_order_no', 'cp_order_no', 'out_trade_no', 'pay_status', 'pay_amount', 'uid', 'server_id', 'server_name', 'role_id', 'role_name', 'product_id', 'product_name', 'sign']); if(!$param){ return "缺少必要参数!"; } $getValues = array_values($param); if (empty(array_diff(['m_order_no', 'cp_order_no', 'out_trade_no', 'pay_status', 'pay_amount', 'uid'], $getValues))) { return "回调参数缺失!"; } if (!$channelConfig = json_decode($polyChannelGame['param'], true)) { return "渠道参数配置错误!"; } $sign = $param['sign']; unset($param['sign']); ksort($param); $dataSign = http_build_query($param); $handleSign = md5($dataSign . $channelConfig['pay_key']); if ($sign == $handleSign) { return true; } return "签名验证失败!"; } // ## 回调 - 下单参数获取 public function getData($data) { if (!isset($data['cp_order_no']) || !isset($data['pay_amount']) || !isset($data['m_order_no'])) { return false; } return [ 'orderid' => $data['cp_order_no'], // 我方聚合订单 'amount' => $data['pay_amount'], // 充值金额(单位:元) 'sub_orderid' => $data['m_order_no'], // 渠道订单 ]; } // ## 下单 public function getOrder($data) { return ['code' => 200, 'msg' => 'success', 'param' => []]; } // ## 回调 - 成功返回 public function getSuccess($msg = '') { echo 'success'; exit(); } // ## 回调 - 失败返回 public function getFail($msg = '') { log_message('getFail: '.$msg, 'error', LOG_PATH."complexPaylog/{$this->channel}/"); echo 'fail:'. $msg; exit(); } }