public static function run($para, $usetoken = true) { self::init(); $ch = curl_init(); if (isset($para[self::XII_PARAMS_USERAGENT]) && !empty($para[self::XII_PARAMS_USERAGENT])) { curl_setopt($ch, CURLOPT_USERAGENT, $para[self::XII_PARAMS_USERAGENT]); } else { curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"); } if (isset($para[XIIS_PARAMS_URL]) && !empty($para[XIIS_PARAMS_URL])) { curl_setopt($ch, CURLOPT_URL, $para[XIIS_PARAMS_URL]); } else { return [XIIS_FEEDBACK_STATUS => false, XIIS_FEEDBACK_CODE => 0, XIIS_FEEDBACK_MSG => XIIS_PARAMS_URL . ' is null!']; } if (isset($para[self::XII_PARAMS_REF_URL]) && !empty($para[self::XII_PARAMS_REF_URL])) { curl_setopt($ch, CURLOPT_REFERER, $para[self::XII_PARAMS_REF_URL]); } if (!isset($para[XIIS_PARAMS_DATA])) { if (!self::$_allowEmptyData) { return [XIIS_FEEDBACK_STATUS => false, XIIS_FEEDBACK_CODE => 0, XIIS_FEEDBACK_MSG => XIIS_PARAMS_DATA . ' is not find!']; } $para[XIIS_PARAMS_DATA] = []; } else { if (!is_array($para[XIIS_PARAMS_DATA])) { return [XIIS_FEEDBACK_STATUS => false, XIIS_FEEDBACK_CODE => 0, XIIS_FEEDBACK_MSG => XIIS_PARAMS_DATA . ' must be array!']; } } if ($usetoken) { $token = XiiToken::accessApi(); $para[XIIS_PARAMS_DATA] = array_merge($para[XIIS_PARAMS_DATA], $token); } if (count($para[XIIS_PARAMS_DATA]) > 0) { if (isset($para[XIIS_PARAMS_METHOD]) && !empty($para[XIIS_PARAMS_METHOD]) && in_array(strtoupper($para[XIIS_PARAMS_METHOD]), array('PUT', 'DELETE', 'POST'))) { curl_setopt($ch, CURLOPT_CUSTOMREQUEST, strtoupper($para[XIIS_PARAMS_METHOD])); //curl_setopt($ch, CURLOPT_HTTPHEADER, array("X-HTTP-Method-Override: " . strtoupper($para[XIIS_PARAMS_METHOD]))); $para[XIIS_PARAMS_DATA] = http_build_query($para[XIIS_PARAMS_DATA]); curl_setopt($ch, CURLOPT_POSTFIELDS, $para[XIIS_PARAMS_DATA]); } else { curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET'); //curl_setopt($ch, CURLOPT_HTTPHEADER, array("X-HTTP-Method-Override: POST")); $para[XIIS_PARAMS_DATA] = http_build_query($para[XIIS_PARAMS_DATA]); curl_setopt($ch, CURLOPT_URL, $para[XIIS_PARAMS_URL] . '?' . $para[XIIS_PARAMS_DATA]); } } else { if (!self::$_allowEmptyData) { return [XIIS_FEEDBACK_STATUS => false, XIIS_FEEDBACK_CODE => 0, XIIS_FEEDBACK_MSG => XIIS_PARAMS_DATA . ' is null!']; } } $timeout = isset($para[self::XII_PARAMS_TIMEOUT]) && !empty($para[self::XII_PARAMS_TIMEOUT]) ? intval($para[self::XII_PARAMS_TIMEOUT]) : 10; curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); if (isset($para[self::XII_PARAMS_SET]) && !empty($para[self::XII_PARAMS_SET])) { foreach ($para[self::XII_PARAMS_SET] as $k => $v) { curl_setopt($ch, $k, $v); } } if (isset($para[self::XII_PARAMS_INFO])) { $result = curl_exec($ch); $info = curl_getinfo($ch); curl_close($ch); return [XIIS_FEEDBACK_STATUS => true, XIIS_FEEDBACK_CODE => 1, XIIS_FEEDBACK_DATA => $info]; } else { $result = curl_exec($ch); curl_close($ch); if (XiiUtil::isJson($result)) { $tmp = Json::decode($result); if (isset($tmp[XIIS_FEEDBACK_DATA][XiiToken::getIndex()])) { if (!XiiToken::verify($tmp[XIIS_FEEDBACK_DATA])) { return [XIIS_FEEDBACK_STATUS => false, XIIS_FEEDBACK_CODE => 0, XIIS_FEEDBACK_MSG => 'Response data be modify!']; } } } return [XIIS_FEEDBACK_STATUS => true, XIIS_FEEDBACK_CODE => 1, XIIS_FEEDBACK_DATA => $result]; } }
private static function doEncrypt() { if (Yii::$app->response->format == Response::FORMAT_JSON) { if (isset(self::$_outputData[XIIS_FEEDBACK_DATA]) && !empty(self::$_outputData[XIIS_FEEDBACK_DATA])) { if (!is_array(self::$_outputData[XIIS_FEEDBACK_DATA])) { self::$_outputData[XIIS_FEEDBACK_DATA] = [self::$_outputData[XIIS_FEEDBACK_DATA]]; } self::$_outputData[XIIS_FEEDBACK_DATA][XiiToken::getIndex()] = XiiToken::get(self::$_outputData[XIIS_FEEDBACK_DATA]); } } }