<?php
|
/**
|
* Created by PhpStorm.
|
* User: yaobin
|
* Date: 16/8/18
|
* Time: 13:25
|
*/
|
|
/**
|
* 接口控制器
|
*
|
* @package app
|
* @subpackage core
|
* @category controller
|
* @author yaobin<645894453@qq.com>
|
*
|
*/
|
class Api extends CI_Controller {
|
|
public function __construct() {
|
parent::__construct();
|
}
|
|
public function get_pro_byid($id){
|
$project = $this->sysconfig_model->chenck_pro($id);
|
echo $project;
|
}
|
|
// public function authorize() {
|
// $open_id = $this->session->userdata('openid');
|
// if(empty($open_id)) {
|
// if (strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false) {
|
// $code = $_GET['code'];
|
// if(empty($code)){
|
// $url = 'http://'.$_SERVER['SERVER_NAME'].$_SERVER["REQUEST_URI"];
|
// redirect("https://open.weixin.qq.com/connect/oauth2/authorize?appid=".APP_ID."&redirect_uri=".urlencode($url)."&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect");
|
// } else {
|
// $url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.APP_ID.'&secret='.APP_SECRET.'&code='.$code.'&grant_type=authorization_code';
|
// $result = file_get_contents($url);
|
// $jsonInfo = json_decode($result, true);
|
// $open_id = $jsonInfo['openid'];
|
// if(!empty($open_id)) {
|
// $this->session->set_userdata('openid', $open_id);
|
// }
|
// }
|
// }
|
// }
|
// $uri = "http://www.funmall.com.cn/b_house/index/";
|
// if(!empty($open_id)) {
|
// //file_get_contents('http://www.funmall.com.cn/api/update_weixin_user/' . $open_id);
|
// $uri .= $open_id . '/';
|
// $funmallDB = $this->load->database("funmall", True);
|
// $funmallDB->from('wx_user');
|
// $funmallDB->where('open_id', $open_id);
|
// $funmallDB->order_by('updated DESC');
|
// $wxUser = $funmallDB->get()->row_array();
|
// if(!empty($wxUser)) {
|
// $uri .= $wxUser['broker_id'] . '/';
|
// }
|
// }
|
// redirect($uri);
|
// }
|
|
public function view_art($broker_id) {
|
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false) {
|
$code = $_GET['code'];
|
if(empty($code)){
|
$url = 'http://'.$_SERVER['SERVER_NAME'].$_SERVER["REQUEST_URI"];
|
redirect("https://open.weixin.qq.com/connect/oauth2/authorize?appid=".APP_ID."&redirect_uri=".urlencode($url)."&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect");
|
} else {
|
$url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.APP_ID.'&secret='.APP_SECRET.'&code='.$code.'&grant_type=authorization_code';
|
$result = file_get_contents($url);
|
$jsonInfo = json_decode($result, true);
|
$open_id = $jsonInfo['openid'];
|
|
$this->funmall_model->bindBroker($open_id, $broker_id);
|
file_get_contents('http://www.funmall.com.cn/api/update_weixin_user/' . $open_id);
|
|
$uri = "http://www.funmall.com.cn/api/view_art/" . $open_id . "/" . $broker_id;
|
redirect($uri);
|
}
|
}
|
}
|
|
public function index() {
|
$echoStr = $_GET["echostr"];
|
if(isset($echoStr)) {
|
if($this->checkSignature()){
|
echo $echoStr;
|
exit;
|
}
|
} else {
|
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
|
|
if (!empty($postStr)){
|
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
|
$RX_TYPE = trim($postObj->MsgType);
|
$result = "";
|
switch ($RX_TYPE) {
|
case "text":
|
$result = $this->receiveText($postObj);
|
break;
|
case "event":
|
$result = $this->receiveEvent($postObj);
|
break;
|
case "image":
|
//$result = $this->receiveImage($postObj);
|
break;
|
default:
|
$result = "Unknow msg type: ".$RX_TYPE;
|
break;
|
}
|
echo $result;
|
exit;
|
} else {
|
echo "";
|
exit;
|
}
|
}
|
}
|
|
|
private function checkSignature() {
|
$signature = $_GET["signature"];
|
$timestamp = $_GET["timestamp"];
|
$nonce = $_GET["nonce"];
|
$token = 'ada823k21812jasd123dfg6fsdf';
|
$tmpArr = array($token, $timestamp, $nonce);
|
sort($tmpArr);
|
$tmpStr = implode( $tmpArr );
|
$tmpStr = sha1( $tmpStr );
|
if($tmpStr == $signature){
|
return true;
|
} else {
|
return false;
|
}
|
}
|
|
private function receiveEvent($object) {
|
switch ($object->Event) {
|
case "subscribe":
|
$FromUserName = str_replace("", "", $object->FromUserName);
|
if (!empty($object->EventKey)){
|
// $this->sysconfig_model->test(str_replace("qrscene_", "", $object->EventKey));
|
$parent_id = str_replace("qrscene_", "", $object->EventKey);
|
$this->sysconfig_model->bindUesr($FromUserName, $parent_id);
|
}else{
|
$this->sysconfig_model->bindUesr($FromUserName);
|
}
|
break;
|
case "unsubscribe":
|
break;
|
case "SCAN":
|
break;
|
case "CLICK":
|
break;
|
case "VIEW":
|
break;
|
case "LOCATION":
|
break;
|
}
|
// return $this->transmitText($object, $content);
|
}
|
|
private function transmitText($object, $content) {
|
$textTpl = "
|
<xml>
|
<ToUserName><![CDATA[%s]]></ToUserName>
|
<FromUserName><![CDATA[%s]]></FromUserName>
|
<CreateTime>%s</CreateTime>
|
<MsgType><![CDATA[text]]></MsgType>
|
<Content><![CDATA[%s]]></Content>
|
<FuncFlag>0</FuncFlag>
|
</xml>
|
";
|
return sprintf($textTpl, $object->FromUserName, $object->ToUserName, time(), $content);
|
}
|
|
private function transmitNews($object, $arr_item) {
|
if(!is_array($arr_item))
|
return;
|
|
$itemTpl = "
|
<item>
|
<Title><![CDATA[%s]]></Title>
|
<Description><![CDATA[%s]]></Description>
|
<PicUrl><![CDATA[%s]]></PicUrl>
|
<Url><![CDATA[%s]]></Url>
|
</item>
|
";
|
$item_str = "";
|
foreach ($arr_item as $item)
|
$item_str .= sprintf($itemTpl, $item['Title'], $item['Description'], $item['PicUrl'], $item['Url']);
|
|
$newsTpl = "
|
<xml>
|
<ToUserName><![CDATA[%s]]></ToUserName>
|
<FromUserName><![CDATA[%s]]></FromUserName>
|
<CreateTime>%s</CreateTime>
|
<MsgType><![CDATA[news]]></MsgType>
|
<Content><![CDATA[]]></Content>
|
<ArticleCount>%s</ArticleCount>
|
<Articles>$item_str</Articles>
|
</xml>
|
";
|
return sprintf($newsTpl, $object->FromUserName, $object->ToUserName, time(), count($arr_item));
|
}
|
|
|
public function post($url, $post_data, $timeout = 300){
|
$options = array(
|
'http' => array(
|
'method' => 'POST',
|
'header' => 'Content-type:application/json;encoding=utf-8',
|
'content' => urldecode(json_encode($post_data)),
|
'timeout' => $timeout
|
)
|
);
|
$context = stream_context_create($options);
|
return file_get_contents($url, false, $context);
|
}
|
|
|
public function get_access_token() {
|
$this->load->config('wxpay_config');
|
$appid = $this->config->item('appid');
|
$secret = $this->config->item('appsecret');
|
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$secret}";
|
$response = file_get_contents($url);
|
return json_decode($response)->access_token;
|
}
|
|
public function get_or_create_ticket($id = '', $action_name = 'QR_SCENE') {
|
$access_token = $this->get_access_token();
|
$url = 'https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=' . $access_token;
|
@$post_data->expire_seconds = 2592000;
|
@$post_data->action_name = $action_name;
|
@$post_data->action_info->scene->scene_id = $id;
|
$ticket_data = json_decode($this->post($url, $post_data));
|
$ticket = $ticket_data->ticket;
|
$img_url = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=".urlencode($ticket);
|
$data['img'] = $img_url;
|
$this->load->view('scan.php',$data);
|
// return $ticket;
|
}
|
|
}
|