日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

静态代理和依赖注入方式获取网店管家查询仓库信息接口

發布時間:2024/3/24 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 静态代理和依赖注入方式获取网店管家查询仓库信息接口 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

請求的URL地址http://localhost/tp5.1/public/index.php/index/wdgj/wdgjwarehouselistGet?page=1&pageSize=10

  • 進行字典序排序 或者 ASCII碼排序
  • 將AppSecret加到該串的首和尾并進行MD5加密生成32位字符串生成Sign簽名
  • 將所有的系統級參數與應用級參數 ( 指的是必填類參數 ) 發送post 請求獲取網店管家數據
  • <?php //獲取網店管家測試數據 namespace app\index\controller; use app\facade\HttpRequest; use \think\Request; class Wdgj {/** 問題 1.弄清楚 ASCII排序 與 字典序排序* 系統級參數* Appkey = "71005530" //接入應用需要的key* AppSecret = "n800m9iaei27l1n3b5eh7ko87gfl2k0g" //用于生成sign* AccessToken = "191167eb31f242bfa4a089359b77f5e4" //授權碼*/public $Appkey = "71005530";public $AppSecret = "n800m9iaei27l1n3b5eh7ko87gfl2k0g";public $AccessToken = "191167eb31f242bfa4a089359b77f5e4";// 查詢倉庫信息public $Method = "wdgj.warehouse.list.get";public $Format ="json";public $Versions = "1.0"; // public $Timestamp = "1581228150";public $Apiurl = "http://api.wdgj.com/wdgjcloud/api";public $Heades = array('application/x-www-form-urlencoded;charset=UTF8');// 查詢倉庫信息的接口public function wdgjwarehouselistGet(Request $request){//1. 進行字典序排序 或者 ASCII碼排序//系統級參數$paramArr = array();$paramArr['Appkey'] = $this->Appkey;$paramArr['Accesstoken'] = $this->AccessToken;$paramArr['Method'] = $this->Method;$paramArr['Format'] = $this->Format;$paramArr['Versions'] = $this->Versions;$paramArr['Timestamp'] = (string)time();//應用級參數 依賴注入方式調用$paramArr['pageno'] = $request->get('page');$paramArr['pagesize'] = $request->get('pageSize');$paramArrDemo = $paramArr;//生成Sign簽名 將除Sign參數外的所有系統級參數和應用級級參數的值進行字典排序生成串(versions=1.1時按ASCII碼排序)if($paramArr['Versions']=='1.1'){// 發現問題 ASCCII的排序與測試工具的排序是不一樣的 所以version值我改成1.0的字典排序 // ksort($paramArrDemo);sort($paramArrDemo,SORT_LOCALE_STRING);}else{sort($paramArrDemo,SORT_LOCALE_STRING);}//2. 將AppSecret加到該串的首和尾并進行MD5加密生成32位字符串$paramString = join($paramArrDemo);//Sign簽名 所有系統級參數 和 必要的應用級參數 的值進行 字典排序 生成串$sign = MD5($this->AppSecret.$paramString.$this->AppSecret);$paramArr['Sign'] = $sign;//3. 發送post 請求獲取網店管家數據\think\Facade::bind('app\facade\HttpRequest','\app\common\HttpRequest');/*** 請求數據* @param string $url 請求地址* @param array $postData 請求數據* @param string $head 請求頭* @return array*///靜態代理方式調用$res = HttpRequest::httprequest($this->Apiurl, $paramArr, $this->Heades);dump($res);}}

    /**
    * 如果想靜態調用一個動態方法,需要給當前的類綁定一個靜態代理的類
    *如果沒有在靜態代理類中顯示指定要綁定的類名,就需要動態顯示綁定一下
    * \think\Facade::bind()
    */

    <?php namespace app\facade;class HttpRequest extends \think\Facade {}

    如果想靜態調用一個動態方法,需要給當前的類綁定一個靜態代理的類

    <?php namespace app\common;class HttpRequest {/*** 請求數據* @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);if (0 === strpos(strtolower($url), 'https')) {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 ['code'=>1,'msg'=>'抓取成功','data'=>$obj];} }

    查詢返回結果
    網店管家應用驗證數據來源真實性

    接口對應管家:【管家】->【設置】->【倉庫目錄】,接口查詢出的數據即為該界面的倉庫信息。

    參看網店管家接口調用說明文檔
    http://open.wdgj.com/OpenApiDoc/DocCenter.html

    http://open.wdgj.com/OpenApiDoc/ApiInfo.html?openApiID=70000&dictID=87&name%20=

    總結

    以上是生活随笔為你收集整理的静态代理和依赖注入方式获取网店管家查询仓库信息接口的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。