<?php
class Test
{
public function __construct()
{
set_time_limit(0); //执行时间无限
ini_set('memory_limit', '-1'); //内存无限
}
/**
* 在吉客云开放平台上申请的Appekey
*/
private $APPKEY = "在吉客云开放平台上申请的Appekey";
/**
* 在吉客云开放平台上申请的AppeSecret
*/
private $APPSECRET = "在吉客云开放平台上申请的AppeSecret";
/**
* 吉客云开放平台网关
*/
private $GATEWAY = "http://differcom.gnway.cc:21017/open/openapi/do";
//请求头
public $head = array('application/x-www-form-urlencoded;charset=UTF8');
/**
* 生成签名
*
* @param method 开放接口方法名
* @param version 开放接口版本号(null表示默认)
* @return string
*/
public function sign($method = '',$bizcontent)
{
$paramArr = array();
//系统级参数
$paramArr[] = 'method'.$method;//方法名称
$paramArr[] = 'appkey'.$this->APPKEY;//应用编号
$paramArr[] = 'version'.'1.0';//版本号
$paramArr[] = 'contenttype'.'json';//返回格式(暂时只支持json)
$paramArr[] = 'timestamp'.date('Y-m-d H:i:s',time());//时间戳
$paramArr[] = 'bizcontent'.$bizcontent;//业务参数
//创建一个变量用于字典排序,生成签名 sign
$paramArrDemo = $paramArr;
// var_dump($paramArrDemo);exit;
//字典排序
sort($paramArrDemo,SORT_LOCALE_STRING);
//将AppSecret加到该串的首尾,然后整个字符串转小写
$paramString = join($paramArrDemo);
//生成签名
$sign = strtolower($this->APPSECRET.$paramString.$this->APPSECRET);
$sign = MD5($sign);
return $sign;
}
/**
* @param $method 调用接口名称
* @param $bizcontent 业务参数 json格式
* @return array 返回整理后的参数
*/
public function common($method,$bizcontent)
{
//获取签名
$sign = $this->sign($method,$bizcontent);
$paramArr['method'] = $method;//方法名称
$paramArr['appkey'] = $this->APPKEY;//应用编号
$paramArr['version'] = '1.0';//版本号
$paramArr['contenttype'] = 'json';//返回格式(暂时只支持json)
$paramArr['timestamp'] = date('Y-m-d H:i:s',time());//时间戳
$paramArr['bizcontent'] = $bizcontent;//业务参数 json格式
$paramArr['sign'] = $sign; //签名
return $paramArr;
}
/**
* 供应商查询
*/
public function jky_vend_get()
{
//请求方法
$method = 'erp.vend.get';
//业务参数
$bizcontent = json_encode(['pageindex'=>20,'pageSize' => 50]);
//整理post请求参数
$paramArr = $this->common($method,$bizcontent);
//发送http请求
$res = $this->httpRequest($this->GATEWAY,$paramArr,$this->head);
return $res;
}
/**
* 销售单查询
*/
public function oms_trade_fullinfoget()
{
//请求方法
$method = 'oms.trade.fullinfoget';
//业务参数
$bizcontent = json_encode(['pageindex'=>0,'pageSize' => 50,'startCreated'=>date('Y-m-d H:i:s',time())]);
//整理post请求参数
$paramArr = $this->common($method,$bizcontent);
//发送http请求
$res = $this->httpRequest($this->GATEWAY,$paramArr,$this->head);
return $res;
}
/**
* 请求数据
* @param string $url 请求地址
* @param array $postData 请求数据
* @param string $head 请求头
* @return array
*/
public function httpRequest($url, $postData, $head)
{
//初始化
$curl = curl_init();
//设置抓取的url;
curl_setopt($curl, CURLOPT_URL, $url);
//设置头文件的信息作为数据流输出
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_HTTPHEADER, $head);
curl_setopt($curl, CURLINFO_HEADER_OUT, true);
//判断是否是https请求协议 0 表示请求是https,需要绕过
if (0 === strpos(strtolower($url), 'https')) {
//HTTPS请求需要加几行代码绕过SSL证书的检查等方式来成功请求到资源
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 对认证证书来源的检查
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); // 从证书中检查SSL加密算法是否存在 7.2 强制https 使用2
}
if (!empty($postData)) {
curl_setopt($curl, CURLOPT_POST, true); //设置post方式提交
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($postData)); //使用给出的关联(或下标)数组生成一个经过 URL-encode 的请求字符串。参数 formdata 可以是数组或包含属性的对象。
//设置post数据
}
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
//执行命令
$json = curl_exec($curl);
$error = curl_error($curl);
//关闭URL请求
curl_close($curl);
if ($json === false) //请求失败
{
return ['success' => false, 'desc' => 'curl错误,错误编码:' . $error];
}
if (preg_match('/^\xEF\xBB\xBF/', $json)) //去除boom 头
{
$output = substr($json, 3);
} else {
$output = $json;
}
$obj = json_decode(trim($output), true);
return $obj;
}
}
$test = new Test();
$res = $test->jky_vend_get();
echo "<pre>";
var_dump($res);
返回数据页面