Kuaishou.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. <?php
  2. namespace app\api\controller;
  3. class Kuaishou extends Base
  4. {
  5. public $appKey = 'ks698620896473026758';
  6. public $appSecret = 'cvbOgiVC6rSvPs0sBASfkg';
  7. public $signSecret = '71443462ca217e1c29425e7aabc257cc';
  8. public $msgSecret = '4fxDQv7tJKzIc1D7CNNe6A==';
  9. public $syncAPIClient;
  10. public $serverHost = "https://open.kwaixiaodian.com/";
  11. public $webSite = '1688';
  12. public $access_token = '';
  13. public $debug = false;
  14. //
  15. public static function getAccessToken()
  16. {
  17. }
  18. // api请求
  19. public function apiPost()
  20. {
  21. $apiType = "open.item.list.get";
  22. $method = 'get';
  23. $param = input('post.param');
  24. $arr['appkey'] = $this->appKey;
  25. $arr['version'] = '1';
  26. $arr['access_token'] = $this->access_token;
  27. $arr['timestamp'] = $this->getMillisecond();
  28. $arr['method'] = trim($apiType);
  29. $arr['param'] = $param ? json_encode($param) : '{}';
  30. $arr['signMethod'] = 'MD5';
  31. ksort($arr); // 排序
  32. $arr['sign'] = $this->getSign($arr, $this->signSecret);
  33. $apiInfo = str_replace('.', '/', $arr['method']);
  34. $url = $this->serverHost . $apiInfo;
  35. $Alibabahelper = new Alibabahelper();
  36. if ($method == 'get') {
  37. $s = $Alibabahelper->curl_https_get($url. '?' . http_build_query($arr, '', '&'), array());
  38. } else {
  39. $s = $Alibabahelper->curl_https_post($url, $arr);
  40. }
  41. $s = json_decode($s, true);
  42. $this->success('ok',$s);
  43. }
  44. public function getSign($params, $key) {
  45. $unSignParaString = $this->formatQueryParaMap($params, false);
  46. $signStr = (md5($unSignParaString . "&signSecret=" . $this->signSecret));
  47. return $signStr;
  48. }
  49. public function formatQueryParaMap(array $paraMap, $urlEncode = false) {
  50. $buff = "";
  51. ksort($paraMap);
  52. foreach ($paraMap as $k => $v) {
  53. if (null != $v && "null" != $v) {
  54. if ($urlEncode) {
  55. $v = urlencode($v);
  56. }
  57. $buff.= $k . "=" . $v . "&";
  58. }
  59. }
  60. $reqPar = '';
  61. if (strlen($buff) > 0) {
  62. $reqPar = substr($buff, 0, strlen($buff) - 1);
  63. }
  64. return $reqPar;
  65. }
  66. /*获取13位时间戳*/
  67. private static function getMillisecond() {
  68. list($t1, $t2) = explode(' ', microtime());
  69. return sprintf('%.0f', (floatval($t1) + floatval($t2)) * 1000);
  70. }
  71. }
  72. class Alibabahelper {
  73. function __construct() {
  74. }
  75. private function curl_get_contents($url, $data = array(), $https = false) {
  76. $results['error'] = '';
  77. $results['status'] = 0;
  78. $results['data'] = array();
  79. $user_agent = $_SERVER['HTTP_USER_AGENT'];
  80. $curl = curl_init(); // 启动一个CURL会话
  81. if (!empty($data) && is_array($data)) {
  82. curl_setopt($curl, CURLOPT_POST, TRUE);
  83. curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data));
  84. curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));
  85. }
  86. if ($https) {
  87. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
  88. curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); // 从证书中检查SSL加密算法是否存在
  89. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
  90. }
  91. curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
  92. curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环
  93. curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
  94. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
  95. curl_setopt($curl, CURLOPT_USERAGENT, $user_agent); // 模拟用户使用的浏览器
  96. curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
  97. $results['data'] = curl_exec($curl); // 执行操作
  98. if (curl_errno($curl)) {
  99. $results['error'] = curl_error($curl); //捕抓异常
  100. }
  101. curl_close($curl); // 关闭CURL会话
  102. return $results['data']; // 返回数据
  103. }
  104. public function curl_https_post($url, $data) {
  105. return $this->curl_get_contents($url, $data, true);
  106. }
  107. public function curl_https_get($url) {
  108. return $this->curl_get_contents($url, array(), true);
  109. }
  110. }