/** * dts请求入口 * @param 请求体 $request 格式为xml */ public function exec($request, $token) { //file_put_contents('/tmp/x1',date('m-d H:i:s')." ".print_r($request,true)."\n",FILE_APPEND); //初始化 json格式 $this->init($request, $token); //分解request xml 为数组 $request_arr = $this->decompose($request); //记录请求日志 $log_id = $this->write_log($request); //账号验证 + token码检验 $check_result = $this->check($request); unset($request); /** * code msg data */ if ($check_result['code'] == 0) { //获取具体处理对象 core::Singleton('api.api_class'); $obj = api_class::getInstance(str_replace('.', '_', $this->service_name)); if (!$obj) { $check_result['code'] = 4; $check_result['msg'] = '接口不存在'; } else { $obj->request_arr = $request_arr; $obj->comm_user_infor = $this->comm_user_infor; $obj->comm_wduser_infor = $this->comm_wduser_infor; $application_result = $obj->run(); //获取处理结果 code ,msg , data unset($obj); } unset($request_arr); if ($application_result['code'] != 0) { //成功的情况 $check_result['code'] = $application_result['code']; $check_result['msg'] = $application_result['msg']; } $check_result['data'] = $application_result['data']; unset($application_result); } //file_put_contents('/tmp/debug',date('m-d H:i:s')." ".print_r($check_result,true)."\n",FILE_APPEND); //格式化响应数据 $response = $this->format($check_result); unset($check_result); //记录响应 $this->update_log($log_id, $response); return $response; }
public function __construct($request, $origin) { parent::__construct($request); //echo $_SERVER['HTTP_ORIGIN']; //if($origin != 'campusbookie') //throw new Exception("not authorised"); try { $user_id = $this->authenticate_user($this->args); } catch (Exception $e) { if ($this->action == 'user_post' || $this->controller == 'search' || $this->controller == 'books') { $user_id = null; } else { $error = $e->getMessage(); if ($error == "no token sent" && $this->controller == 'cart') { $user_id = null; } else { $data = array("status" => "error", "message" => $error, "data" => null); $this->response($data, $e->getCode()); exit; } } } $this->args['user_id'] = $user_id; }
function sendMessages($result) { $start_time = date(TIME_FORMAT); $api_class = new api_class(); $api_class->mobile = $_REQUEST['mobile']; $api_class->username = $_REQUEST['username']; $api_class->password = $_REQUEST['password']; $api_class->api_id = $_REQUEST['api_id']; $api_class->text = $_REQUEST['text']; //先根据短信内容计算credit. if ($api_class->text != "") { //根据短信内容计算花费的credit. $api_class->cost = countCharacters($api_class->text); if (preg_match('/[\\x80-\\xff]./', $api_class->text)) { //中文,全部专程unicode码 $api_class->text = getUnicode($api_class->text); $unicode = 1; } else { //是英文的话再把空格转换下. $api_class->text = str_replace(' ', '%20', $_REQUEST['text']); $message->message_content = ereg_replace(Chr(10), '%0A', $message->message_content); $message->message_content = ereg_replace(Chr(13), '', $message->message_content); } } $api = $api_class->checkAPI(); if (!$api) { $result["status"] = "fail"; $result["message"] = "params error"; } else { $mobile_arr = explode(",", $api_class->mobile); //print_r($mobile_arr); if ($api->balance < count($mobile_arr) * $api_class->cost) { $result["status"] = "fail"; $result["message"] = "no enough bulance"; } else { $success_list = ""; //成功列表 $fail_list = ""; //失败列表 $success_count = 0; //成功发送次数 $fail_count = 0; //失败发送次数 //循环发送短信 for ($i = 0; $i < count($mobile_arr); $i++) { if ($mobile_arr[$i] == "") { continue; } $mobile_arr[$i] = formatMobile($mobile_arr[$i]); $url = "http://api.clickatell.com/http/sendmsg?user="******"&password="******"&api_id=" . $api->api_id . "&to=" . $mobile_arr[$i] . "&text=" . $api_class->text . "&concat=" . $api_class->cost; if ($api->api_type == 1) { $url .= "&from=" . $api->sender_name; } //如果短信内容包含中文,需要加unicode=1 if ($unicode == 1) { $url .= "&unicode=1"; } //echo $url . "<br />"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); $content = curl_exec($ch); curl_close($ch); //判断返回的内容是否包含ID if (strpos($content, "ID:") !== false) { //发送成功 if ($success_count == 0) { $success_list = "[" . $mobile_arr[$i] . "]"; } else { $success_list .= ",[" . $mobile_arr[$i] . "]"; } $success_count++; } else { //发送失败 $message->sms_record_remark = $content; if ($fail_count == 0) { $fail_list = "[" . $mobile_arr[$i] . "]"; } else { $fail_list .= ",[" . $mobile_arr[$i] . "]"; } $fail_count++; } } $message = new message(); $message->api_id = $api->api_id; $message->sms_record_time = date(TIME_FORMAT); $message->sms_success_list = $success_list; $message->sms_fail_list = $fail_list; $message->sms_success_count = $success_count; $message->sms_fail_count = $fail_count; $message->sms_content = $api_class->text; $message->user_id = $api->user_id; $message->company_id = $api->company_id; $message->department_id = $api->department_id; $end_time = date(TIME_FORMAT); $message->sms_record_remark .= "start at " . $start_time . "; end at " . $end_time; $company = new company(); $company->company_id = $api->company_id; $company->deductBalance($message->sms_success_count * $api_class->cost); $message->sendMessage(); $result["status"] = "success"; $result["message"] = "success:" . $success_count . ",fail:" . $fail_count; } } return $result; }
<?php /** * Created by PhpStorm. * User: asus1 * Date: 16.03.2016 * Time: 14:03 */ session_start(); require_once 'config.php'; require_once CORE_DIR . 'registry.php'; require_once CORE_DIR . 'autoload.php'; if (!empty($_GET['code'])) { $api = new api_class(); $api->getAuthCode($_GET['code']); } //$token = $_GET['access_token']; //$params = array( // "grant_type" => "refresh_token", // "code" => $_GET['code'], // "redirect_uri" => REDIRECT_URL, // "scope" => self::$scopes, // "client_id" => APP_ID, // "client_secret" => APP_SECRET, // "refresh_token" => $refresh_token //); //$curl = curl_init(EXCHANGE_TOKEN_URL); //curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); //curl_setopt($curl, CURLOPT_POST, true); //curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($params)); //$response = curl_exec($curl);