首页
关于
Search
1
Fastadmin 美化后台样式
310,891 阅读
2
关于破解移动宽带光猫 型号: GS3101 超级管理员密码
26,918 阅读
3
给Thinkphp3用上composer
19,964 阅读
4
Wallpaper完美壁纸修复天气bug(无需申请API)
19,748 阅读
5
PECL无法安装时手动编译安装PHP扩展
19,606 阅读
Linux
Mysql
PHP
Nginx
归档
Android
Python
IOS
浴室沉思
C++
CCF CSP认证
Windows
C#
前端
登录
Search
标签搜索
php
git
Windows
wkhtmltopdf
短信
defense
API
Google Photos
python
wkhtmltoimage
网页快照
linux
ssr
https
mail
sms
小程序
封装
ComoBox
拼多多
Guooo
累计撰写
126
篇文章
累计收到
81
条评论
首页
栏目
Linux
Mysql
PHP
Nginx
归档
Android
Python
IOS
浴室沉思
C++
CCF CSP认证
Windows
C#
前端
页面
关于
搜索到
2
篇与
的结果
2018-03-19
PHP 调用 拼多多 API 模板
拼多多的API模板就更简单了,前段时间刚放出来接口权限,上周开始对接完成。都是无需授权的接口,所以也就不需要刷新token之类的事。首先按照文档申请接入多多客(打开后选择左侧多多客接入指南):http://open.pinduoduo.com/#/document?auth=1<?php /*拼多多API类*/ class PDDApi { private $client_id = 'client_id'; // 你的client_id private $client_secret = 'client_secret'; // 你的client_secret /** * 获取拼多多接口数据 * @param string $apiType API 名称 如:pdd.ddk.direct.goods.query * @param array $param 公共参数 如:['page' => 1 , 'page_size' => 100] * @return mixed */ public function GetPDDApi($apiType, $param) { $url = 'http://gw-api.pinduoduo.com/api/router'; $param['client_id'] = $this->client_id; $param['type'] = $apiType; $param['data_type'] = 'JSON'; $param['timestamp'] = $this->getMillisecond(); ksort($param); // 排序 $str = ''; // 拼接的字符串 foreach ($param as $k => $v) $str .= $k . $v; $sign = strtoupper(md5($this->client_secret. $str . $this->client_secret)); // 生成签名 MD5加密转大写 $param['sign'] = $sign; return $this->curl_post($url, $param); } /** * 发送post请求 * @param $url * @param $curlPost * @return mixed */ private function curl_post($url, $curlPost) { $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_REFERER, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost); $result = curl_exec($ch); curl_close($ch); return $result; } // 获取13位时间戳 private function getMillisecond() { list($t1, $t2) = explode(' ', microtime()); return sprintf('%.0f', (floatval($t1) + floatval($t2)) * 1000); } } // 调用方法 $p = new PDDApi(); echo $p->GetPDDApi('pdd.ddk.direct.goods.query',['page'=>1]);
2018年03月19日
6,231 阅读
0 评论
0 点赞
2018-03-19
PHP调用京东联盟开普勒、宙斯 API模板
京东开普勒的Appkey和AppSecret在这里可以看到(需要先创建应用):http://kepler.jd.com/console/app/app_list.action授权介绍在这里:http://kepler.jd.com/console/docCenterCatalog/docContent?channelId=17/*开普勒类*/ class KeplerApi{ private $appKey = 'YourKey'; // 你的Key private $appScret = 'YourSecret'; // 你的Secret private $app_token_json = '{}'; // 第一次需要手动授权获取京东Token然后粘贴到这里 /** * 获取开普勒接口数据 * @param string $apiUrl 要获取的api * @param string $param_json 该api需要的参数 * @param string $version 版本可选为 2.0 * @param bool $get 是否使用get,默认为post方式 * @return mixed 京东返回的json格式的数据 */ public function GetKelperApiData($apiUrl='',$param_json = array(),$version='1.0',$get=false){ $API['access_token'] = $this->refreshAccessToken(); // 生成的access_token,30天一换 $API['app_key'] = $this->appKey; $API['method'] = $apiUrl; $API['param_json'] = json_encode($param_json); $API['sign_method'] = 'md5'; $API['timestamp'] = date('Y-m-d H:i:s',time()); $API['v'] = $version; ksort($API); // 排序 $str = ''; // 拼接的字符串 foreach ($API as $k=>$v) $str.=$k.$v; $sign = strtoupper(md5($this->appScret.$str.$this->appScret)); // 生成签名 MD5加密转大写 if ($get){ // 用get方式拼接URL $url = "https://router.jd.com/api?"; foreach ($API as $k=>$v) $url .= urlencode($k) . '=' . urlencode($v) . '&'; // 把参数和值url编码 $url .= 'sign='.$sign; // 接上签名 $res = self::curl_get($url); }else{ // 用post方式获取数据 $url = "https://router.jd.com/api"; $API['sign'] = $sign; $res = self::curl_post($url,$API); } return $res; } // 刷新accessToken private function refreshAccessToken(){ $filePath = dirname(dirname(__FILE__)).'/Config/KelperToken.config'; // Token文本保存路径 if (file_exists($filePath)){ $handle = fopen($filePath,'r'); $tokenJson = fread($handle,8142); }else{ // 插入默认的token fwrite(fopen($filePath,'w'),$this->app_token_json); $tokenJson = $this->app_token_json; } if (substr($tokenJson, 0,3) == pack('CCC',0xef,0xbb,0xbf)) { $tokenJson = substr($tokenJson, 3); } $res = json_decode(trim($tokenJson),true); // 解析不了可能是文本出了问题,注意BOM头 // 判断 if ($res['code'] == 0){ if ($res['expires_in']*1000 + $res['time'] < self::getMillisecond() - 86400000){ // access_token失效前一天 // 获取刷新token的url $refreshUrl = "https://kploauth.jd.com/oauth/token?grant_type=oauth_refresh_token";//&app_key=yourappkey&app_secret=yourappsecret&refresh_token=xxxxxxxx $refreshUrl .= '&app_key='.$this->appKey; $refreshUrl .= '&app_secret='.$this->appScret; $refreshUrl .= '&refresh_token='.$res['refresh_token']; // 获取新的token数据 $newAccessTokenJson = self::curl_get($refreshUrl); // 写入文本 fwrite(fopen($filePath,'w'),$newAccessTokenJson); // 解析成数组 $newAccessTokenArr = json_decode($newAccessTokenJson,true); $accessToken = $newAccessTokenArr['access_token']; }else{ $accessToken = $res['access_token']; } return $accessToken; }else{ // 如果refresh_token过期,将会返回错误码code:2011;msg:refresh_token过期 return $res['msg']; } } // get请求 private static function curl_get($url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_HEADER, FALSE); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_REFERER, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); $result = curl_exec($ch); curl_close($ch); return $result; } // post请求 private static function curl_post($url,$curlPost){ $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_REFERER, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost); $result = curl_exec($ch); curl_close($ch); return $result; } // 获取13位时间戳 private static function getMillisecond(){ list($t1, $t2) = explode(' ', microtime()); return sprintf('%.0f',(floatval($t1)+floatval($t2))*1000); } }宙斯接口也是大同小异,无非是换了个域名和授权方式/** * Class ZeusApi 宙斯接口调用类 */ class ZeusApi { private $appKey = 'YourKey'; // 你的Key private $appScret = 'YourSecret'; // 你的Secret private $app_token_json = '{}'; // 第一次需要手动授权获取京东Token然后粘贴到这里 /** * 获取宙斯接口数据 * @param string $apiUrl 要获取的api * @param string $param_json 该api需要的参数,使用json格式,默认为 {} * @param string $version 版本可选为 2.0 * @param bool $get 是否使用get,默认为post方式 * @return mixed 京东返回的json格式的数据 */ public function GetZeusApiData($apiUrl='',$param_json = array(),$version='1.0',$get=false){ $API['access_token'] = $this->refreshAccessToken(); // 生成的access_token,30天一换 $API['app_key'] = $this->appKey; $API['method'] = $apiUrl; $API['360buy_param_json'] = json_encode($param_json); $API['timestamp'] = date('Y-m-d H:i:s',time()); $API['v'] = $version; ksort($API); // 排序 $str = ''; // 拼接的字符串 foreach ($API as $k=>$v) $str.=$k.$v; $sign = strtoupper(md5($this->appScret.$str.$this->appScret)); // 生成签名 MD5加密转大写 if ($get){ // 用get方式拼接URL $url = "https://api.jd.com/routerjson?"; foreach ($API as $k=>$v) $url .= urlencode($k) . '=' . $v . '&'; // 把参数和值url编码 $url .= 'sign='.$sign; $res = self::curl_get($url); }else{ // 用post方式获取数据 $url = "https://api.jd.com/routerjson?"; $API['sign'] = $sign; $res = self::curl_post($url,$API); } return $res; } // 刷新accessToken private function refreshAccessToken(){ $filePath = dirname(dirname(__FILE__)).'/Config/ZeusToken.config'; // Token文本保存路径 if (file_exists($filePath)){ $handle = fopen($filePath,'r'); $tokenJson = fread($handle,8142); }else{ // 插入默认的token fwrite(fopen($filePath,'w'),$this->app_token_json); $tokenJson = $this->app_token_json; } if (substr($tokenJson, 0,3) == pack('CCC',0xef,0xbb,0xbf)) { $tokenJson = substr($tokenJson, 3); } $res = json_decode(trim($tokenJson),true); // 解析不了可能是文本出了问题 // 判断 if ($res['code'] == 0){ if ($res['expires_in']*1000 + $res['time'] < self::getMillisecond() - 86400000){ // access_token失效前一天 // 获取刷新token的url $refreshUrl = "https://oauth.jd.com/oauth/token?"; $refreshUrl .= '&client_id='.$this->appKey; $refreshUrl .= '&client_secret='.$this->appScret; $refreshUrl .= '&grant_type=refresh_token'; $refreshUrl .= '&refresh_token='.$res['refresh_token']; // 获取新的token数据 $newAccessTokenJson = self::curl_get($refreshUrl); // 写入文本 fwrite(fopen($filePath,'w'),$newAccessTokenJson); // 解析成数组 $newAccessTokenArr = json_decode($newAccessTokenJson,true); $accessToken = $newAccessTokenArr['access_token']; }else{ $accessToken = $res['access_token']; } return $accessToken; }else{ // 如果refresh_token过期,将会返回错误码code:2011;msg:refresh_token过期 return $res['msg']; } } // get请求 private static function curl_get($url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_HEADER, FALSE); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_REFERER, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); $result = curl_exec($ch); curl_close($ch); return $result; } // post请求 private static function curl_post($url,$curlPost){ $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_REFERER, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost); $result = curl_exec($ch); curl_close($ch); return $result; } // 获取13位时间戳 private static function getMillisecond(){ list($t1, $t2) = explode(' ', microtime()); return sprintf('%.0f',(floatval($t1)+floatval($t2))*1000); } }
2018年03月19日
4,287 阅读
0 评论
0 点赞