ThinkPHP3.2对接酷家乐接口
UserController.class.php
namespace User\Controller;
class UserController extends Controller {
public static $appkey=appkey;
public static $appsecret=appsecret;
//注册用户
public function reg(){
$appuid='alonesky0315';
//接口鉴权
$url='https://openapi.kujiale.com/v2/login';
$postfields=array(
'name'=>$appuid
);
$apidata=$this->getapi($appuid,$url,'post', $postfields);
}
//设计列表页
public function diy_design() {
$page=I('page',0);
$appuid='alonesky0315';
$url='https://openapi.kujiale.com/v2/design/list';
$postfields=array(
'start'=>0,
'num'=>50,
'appuid'=>$appuid
);
$apidata=$this->getapi($appuid,$url,'get', $postfields);
//print_r($apidata);exit;
$designlist=$apidata['result'];
$this->assign("designlist",$designlist);
$this->display();
}
//设计详情页
public function design_view() {
$designid=I('designid',0);
$url='https://openapi.kujiale.com/v2/design/'.$designid.'/basic';
$postfields=array();
$apidata=$this->getapi('',$url,'get', $postfields);
$designinfo=$apidata;
$this->assign("designinfo",$designinfo);
$this->display();
}
//创建户型
public function design_create() {
//3FO4JPFI0DTV
$appuid='alonesky0315';
$planId=I('planId','3FO4HTDPPS1A');
//复制户型接口
$url='https://openapi.kujiale.com/v2/floorplan/'.$planId.'/copy';
$postfields=array(
'appuid'=>$appuid
);
$apidata=$this->getapi($appuid,$url,'post', $postfields);
if(!empty($apidata)){
$getplanId=$apidata['planId'];
//登录接口鉴权
$url='https://openapi.kujiale.com/v2/login';
$postfields=array(
'name'=>$appuid
);
$access_token=$this->getapi($appuid,$url,'post', $postfields);
$iframe_src='https://www.kujiale.com/v/auth?accesstoken='.$access_token.'&dest=1&designid='.$getplanId.'';
$this->assign("iframe_src",$iframe_src);
}
$this->assign("title",'创建户型');
$this->display();
}
//户型修改
public function plan_edit() {
$appuid='alonesky0315';
$planId=I('planId','3FO4HTDPPS1A');
$url='https://openapi.kujiale.com/v2/login';
$postfields=array(
'name'=>$appuid
);
$access_token=$this->getapi($appuid,$url,'post', $postfields);
$iframe_src='https://www.kujiale.com/v/auth?accesstoken='.$access_token.'&dest=2&planId='.$planId.'';
$this->assign("iframe_src",$iframe_src);
$this->assign("title",'户型修改');
$this->display('design_create');
}
//设计修改
public function design_edit() {
$appuid='alonesky0315';
$designid=I('designid','3FO4HTDPPS1A');
$url='https://openapi.kujiale.com/v2/login';
$postfields=array(
'name'=>$appuid
);
$access_token=$this->getapi($appuid,$url,'post', $postfields);
$iframe_src='https://www.kujiale.com/v/auth?accesstoken='.$access_token.'&dest=6&designid='.$designid.'';
$this->assign("iframe_src",$iframe_src);
$this->assign("title",'设计修改');
$this->display('design_create');
}
//设计删除
public function design_delete() {
$sign=$this->getsign($appuid);
$timestamp=time()*1000;
$designid=I('designid','3FO4HTDPPS1A');
$url='https://openapi.kujiale.com/v2/design/deletion?appkey='.self::$appkey.'×tamp='.$timestamp.'&sign='.$sign.'&plan_id='.$designid.'';
$at_data=$this->curl($url,'post',$postfields='');
$at_data_de=json_decode($at_data,true);
if(empty($at_data_de['c'])){
$this->success('删除成功!',U('User/diy_design'));
}else{
$this->errot('删除失败!',U('User/diy_design'));
}
}
//获取签名
public function getsign($appuid=''){
$timestamp=time()*1000;
if(!empty($appuid)){
$sign=md5(self::$appsecret.self::$appkey.$appuid.$timestamp);
}else{
$sign=md5(self::$appsecret.self::$appkey.$timestamp);
}
return $sign;
}
//获取拼接接口信息
public function getapi($appuid='',$url='',$method='get', $postfields=array()){
$sign=$this->getsign($appuid);
$timestamp=time()*1000;
if($method=='get'){
if(!empty($appuid)){
$url=$url.'?appkey='.self::$appkey.'×tamp='.$timestamp.'&appuid='.$appuid.'&sign='.$sign.'';
}else{
$url=$url.'?appkey='.self::$appkey.'×tamp='.$timestamp.'&sign='.$sign.'';
}
$http_build_query=is_array($postfields) ? http_build_query($postfields) : $postfields;
$url =$url.'&'.$http_build_query;
}else{
if(!empty($appuid)){
$url=$url.'?appkey='.self::$appkey.'×tamp='.$timestamp.'&appuid='.$appuid.'&sign='.$sign.'';
}else{
$url=$url.'?appkey='.self::$appkey.'×tamp='.$timestamp.'&sign='.$sign.'';
}
$postfields=json_encode($postfields);
}
$at_data=$this->curl($url,$method,$postfields);
$at_data_de=json_decode($at_data,true);
if(empty($at_data_de['c'])){
$design=$at_data_de['d'];
}else{
$design=$at_data_de['m'];
}
return $design;
}
/**
* CURL请求
* @param $url 请求url地址
* @param $method 请求方法 get post
* @param null $postfields post数据数组
* @param array $headers 请求header信息
* @param bool|false $debug 调试开启 默认false
* @return mixed
*/
public function curl($url, $method, $postfields = null, $headers = array("Content-type:application/json;charset='utf-8'"), $debug = false) {
$method = strtoupper($method);
$ci = curl_init();
/* Curl settings */
curl_setopt($ci, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
curl_setopt($ci, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0");
curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, 60); /* 在发起连接前等待的时间,如果设置为0,则无限等待 */
curl_setopt($ci, CURLOPT_TIMEOUT, 7); /* 设置cURL允许执行的最长秒数 */
curl_setopt($ci, CURLOPT_RETURNTRANSFER, true);
switch ($method) {
case "POST":
curl_setopt($ci, CURLOPT_POST, true);
if (!empty($postfields)) {
$tmpdatastr = is_array($postfields) ? http_build_query($postfields) : $postfields;
curl_setopt($ci, CURLOPT_POSTFIELDS, $tmpdatastr);
}
break;
default:
curl_setopt($ci, CURLOPT_CUSTOMREQUEST, $method); /* //设置请求方式 */
break;
}
$ssl = preg_match('/^https:\/\//i',$url) ? TRUE : FALSE;
curl_setopt($ci, CURLOPT_URL, $url);
if($ssl){
curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, FALSE); // https请求 不验证证书和hosts
curl_setopt($ci, CURLOPT_SSL_VERIFYHOST, FALSE); // 不从证书中检查SSL加密算法是否存在
}
//curl_setopt($ci, CURLOPT_HEADER, true); /*启用时会将头文件的信息作为数据流输出*/
curl_setopt($ci, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ci, CURLOPT_MAXREDIRS, 2);/*指定最多的HTTP重定向的数量,这个选项是和CURLOPT_FOLLOWLOCATION一起使用的*/
curl_setopt($ci, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ci, CURLINFO_HEADER_OUT, true);
/*curl_setopt($ci, CURLOPT_COOKIE, $Cookiestr); * *COOKIE带过去** */
$response = curl_exec($ci);
$requestinfo = curl_getinfo($ci);
$http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE);
if ($debug) {
echo "=====post data======\r\n";
var_dump($postfields);
echo "=====info===== \r\n";
print_r($requestinfo);
echo "=====response=====\r\n";
print_r($response);
}
curl_close($ci);
return $response;
//return array($http_code, $response,$requestinfo);
}
}
IndexController.class.php
//酷家乐区域
//http://qhstatic.oss.aliyuncs.com/openapi/cities.json?kpm=qkWL.005853d39357deef.729e22f.1564992506606
namespace Index\Controller;
class IndexController extends Controller {
public static $appkey=appkey;
public static $appsecret=appsecret;
//搜索酷家乐户型
public function floorplan(){
$cityid=I('cityid','235');
$cityname=I('cityname','临沂');
$q=I('q','杏坛');
$page=I('page','0');
$start=($page-1)*9;
$num=9;
$userCont=new UserController();
$url='https://openapi.kujiale.com/v2/floorplan/standard';
$postfields=array(
'start'=>$start,
'num'=>$num,
'city_id'=>$cityid,
'q'=>$q,
);
$apidata=$userCont->getapi('',$url,'get', $postfields);
if(!empty($apidata)){
$str='';
foreach ($apidata['result'] as $item) {
$url=U('User/design_create',array('planId'=>$item[planId],'srcarea'=>$item[srcArea],'area'=>$item[area],'commname'=>$item[commName],'plancity'=>$item[city],'specname'=>$item[specName],'smallpics'=>$item[planPic],'name'=>$item[name],'cityid'=>$item[srcArea],'cityname'=>$cityname));
$str.='<li>';
$str.='<a class="chanpin01 createDesign" href="'.$url.'" data-planid="'.$item['planId'].'" data-srcarea="'.$item['srcArea'].'" data-area="'.$item['area'].'" data-commname="'.$item['commName'].'" data-plancity="'.$item['city'].'" data-specname="'.$item['specName'].'" data-smallpics="'.$item['planPic'].'" data-name="'.$item['name'].'" data-cityid="'.$item['srcArea'].'" data-cityname="'.$cityname.'" ></a>';
$str.='<img src="'.$item['planPic'].'" width="288" height="288" />';
$str.='<div style="clear:both"></div>';
$str.='<p>'.$item['name'].'</p>';
$str.='<p>'.$item['commName'].'</p>';
$str.='</li>';
}
$data=array(
'status'=>200,
'html'=>$str,
);
}else{
$data=array(
'status'=>-1,
'html'=>$apidata,
);
}
$this->ajaxReturn($data);
}
}
demo:https://attigny.cn