通过网店管家抓取奇门淘系订单数据

关于thinkphp5.1中vendor目录与extend目录说明
1、vendor

vendor的是通过composer的方法进行自动引入到第三方扩展库vendor目录里的,调用方法是利用的vendor方法:

2、extend

extend是通过手动的方法直接把第三方扩展库或者自己写的封装库直接引入到extend目录里,调用方法的实例:

   require '../extend/taobao/TopSdk.php';
   
   require '../extend/taobao/QimenCloud/top/request/WdgjTradenosensitiveinfoListGetRequest.php';

调取淘系数据需要下载第三方类库包好相应开放功能
在这里插入图片描述

<?php
//获取网店管家测试数据
namespace app\index\controller;
use app\facade\HttpRequest;
use \think\Request;

class Qimen
{
    /** 问题  1.弄清楚 ASCII排序 与 字典序排序
     * 系统级参数
     * Appkey = "71005530"  //接入应用需要的key
     *  AppSecret = "n800m9iaei27l1n3b5eh7ko87gfl2k0g"  //用于生成sign
     *  AccessToken = "191167eb31f242bfa4a089359b77f5e4" //授权码
     */
    public $Appkey = "71005530";
    public $AppSecret = "n800m9iaei27l1n3b5eh7ko87gfl2k0g";
    public $AccessToken = "191167eb31f242bfa4a089359b77f5e4";

    //奇门key
    public $Appkeyqm    = "对应奇门appkeyqm";
    //奇门secret
    public $Appsecretqm = "对应奇门appsecretqm";
    //授权方的奇门 应用 的Appkey    貌似该代码中没有使用到
    public $targetAppkey='对应奇门targetAppkey';
    //授权方给客户配置的奇门路由参数routeParameter  有的接口本身就有这个参数直接传值即可,例如订单查询;有的接口入参没有这个参数,需要额外传入这个参数例如会员查询,目前设置的值与自己的奇门应用Appkey一致
    public $routeParameter='*****';
    //调用入口地址
    public $gatewayUrl = "http://t33hglzv00.api.taobao.com/router/qm";



    // 查询仓库信息  应用级参数
    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');

    /**
     * 对象 转 数组
     * @param object $obj 对象
     * @return array
     */
    public function object_to_array($obj) {
        $obj = (array)$obj;
        foreach ($obj as $k => $v) {
            if (gettype($v) == 'resource') {
                echo '资源非对象';die();
            }
            if (gettype($v) == 'object' || gettype($v) == 'array') {
                //数据为空默认给空字符
                if (empty($v)){
                    $obj[$k] = '';
                    continue;
                }
                $obj[$k] = (array)$this->object_to_array($v);
            }
        }
        return $obj;
    }
    //网店管家对奇门数据抓取的类库引用
    public function WdgjTradenosensitiveinfoListGetRequest($data){
        //抓取淘系数据
        /**引入类库*/
        require '../extend/taobao/TopSdk.php';
        require '../extend/taobao/QimenCloud/top/request/WdgjTradenosensitiveinfoListGetRequest.php';
        $c   = new \QimenCloudClient($this->Appkeyqm,$this->Appsecretqm);
        $req = new \WdgjTradenosensitiveinfoListGetRequest();
        $req->setBegintime($data['begintime']);
        $req->setEndtime($data['endtime']);
        $req->setPageno('1');
        $req->setPagesize('20');
        $req->setSearchtype('0');
        $req->setwdgjaccesstoken($this->AccessToken);
        $req->setWdgjappkey($this->Appkey);
        $req->setWdgjmethod('wdgj.tradenosensitiveinfo.list.get');
        $req->setWdgjformat("json");
        $req->setWdgjversions('1.0');
        $req->setWdgjtimestamp($data['timestamp']);
        $req->setWdgjsign($data['sign']);
        $rsp = $c->execute($req);
        //对象转数组
        $res = $this->object_to_array($rsp);

        return $res;
    }


    /*
     * 抓取网店管家淘系数据 订单数据
     */
    public function WdgjTradenosensitiveinfoListGet(Request $request)
    {
        //系统级参数
        $paramArr = array();
        $paramArr['appkey'] = $this->Appkey;
        $paramArr['accesstoken'] = $this->AccessToken;
        $paramArr['aethod'] = $this->Method;
        $paramArr['format'] = $this->Format;
        $paramArr['versions'] = $this->Versions;
        $paramArr['timestamp'] = (string)time();
        //应用级参数
        $paramArr['searchtype'] = "0";
        $paramArr['pageno']     = "1";
        $paramArr['pagesize']   = "1";
        $paramArr['begintime']  = date('Y-m-d H:i:s',strtotime("-1 day"));
        $paramArr['endtime']    = date('Y-m-d H:i:s');
        $paramArr['method']     = 'wdgj.tradenosensitiveinfo.list.get';

        $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;

        //抓取淘系数据
        $res = $this->WdgjTradenosensitiveinfoListGetRequest($paramArr);
        dump(1111);
        halt($res);
    }

    // 不通过淘系sdk抓取 查询仓库信息的接口
    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);
}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值