淘宝采集接口

如何在系统中采集淘宝中客户的数据呢?也就是客户之前和淘宝合作,怎么把把淘宝等上的数据同步到我们的小程序系统。

1.第三方开发平台和淘宝签订协议,拿到淘宝采集接口的key。

2.通过脚本服务器跑脚本进行数据采集(建议单独买台服务器专门跑脚本,不然会占用生产服务器CPU太多导致生产代码可能出现其他问题)

上代码

public function actionCollectGoods($page = 0)
    {
        date_default_timezone_set("PRC");
        $goodsData = [
            ['goods_no'=>'10002513','url'=>'http://detail.tmall.com/item.htm?id=613469933130'],
        ];
        $chunkData = array_chunk($goodsData, 200);  //200个做一个记录对象
        $count = count($chunkData);
        $goodsData = $chunkData[$page];
        $inventoryTable = Inventory::tableName();
        $info = Goods::find()->where(['id' => 143662])->select('id,attr,store_id')->one();
        $info->attr = json_decode($info->attr, true);

        foreach ($goodsData as $k => $v) {
            $msg = "{$k}货号:{$v['goods_no']}----URL:{$v['url']}----";
            //查找商品货号是否存在
            $isGoodsNo = Inventory::find()->where(['store_id' => $info->store_id, 'goods_no' => $v['goods_no'], 'is_delete' => 0])->one();
            if ($isGoodsNo) {
                echo $msg.'货号已经存在'.PHP_EOL;
                continue;
            }
            $form = new CopyForm();
            $form->url = $v['url'];
            $res = $form->copy();
            if ($res['code'] == 0) {

                $attr = $info->attr;
                $attr[0]['no'] = $v['goods_no'];
                $data = $res['data'];
                $goods = new Goods();
                $goods->store_id = $info->store_id;
                $goods->name = $data['title'];
                $goods->cover_pic = $data['picsPath'][0];
                $goods->price = $data['sale_price'];
                $goods->cost_price = 1;
                $goods->original_price = isset($data['price']) ? $data['price'] : $data['sale_price'];
                $goods->virtual_sales = isset($data['sale_count']) ? $data['sale_count'] : 0;
                $goods->unit = '件';
                $goods->detail = preg_replace('/\\\u[a-z0-9]{4}/', '', $this->userTextEncode($data['detail_info']));
                $goods->attr = json_encode($attr, JSON_UNESCAPED_UNICODE);
                $goods->full_cut = '{"pieces":"","forehead":""}';
                $goods->integral = '{"give":"0","forehead":"","more":""}';
                $goods->drug_type = 4;
                $goods->use_attr = 0;
                $goods->is_level = 0;
                $goods->addtime = time();
                $result = $goods->save();
                if ($result) {
                    $gattr = json_encode($attr[0], JSON_UNESCAPED_UNICODE);
                    $sql = "insert into {$inventoryTable} (store_id, goods_id, price, goods_no, shop_id, attr_id, attr, is_delete) 
                    select store_id, {$goods->attributes['id']}, {$data['price']}, {$v['goods_no']}, shop_id, attr_id, '{$gattr}', is_delete from {$inventoryTable} 
                    where store_id = {$info->store_id} and goods_id={$info->id} and is_delete=0";
                    \Yii::$app->db->createCommand($sql)->execute();
                    foreach ($data['picsPath'] as $pic_url) {
                        $goods_pic = new GoodsPic();
                        $goods_pic->goods_id = $goods->attributes['id'];
                        $goods_pic->pic_url = $pic_url;
                        $goods_pic->is_delete = 0;
                        $goods_pic->save();
                    }
                    echo $msg.$goods->attributes['id'].'成功'.PHP_EOL;
                }else{
                    file_put_contents('error.txt', $msg.'失败'.PHP_EOL, FILE_APPEND);
                    echo $msg.'失败'.PHP_EOL;
                }
            }else{
                file_put_contents('error.txt', $msg.'查询错误'.$res['msg'].PHP_EOL, FILE_APPEND);
                echo $msg.'查询错误'.$res['msg'].PHP_EOL;
                usleep(3000000);
            }
            usleep(100000);
        }
    }

    //去除部分emoji
    function userTextEncode($str){
        if(!is_string($str)) return $str;
        if(!$str || $str=='undefined')return '';
        $text = json_encode($str); //暴露出unicode
        $text = preg_replace_callback("/(\\\u[ed][0-9a-f]{3})/i",function($str){
            return addslashes($str[0]);
        },$text); //将emoji的unicode留下,其他不动,这里的正则比原答案增加了d,因为我发现我很多emoji实际上是\ud开头的,反而暂时没发现有\ue开头。
        return json_decode($text);
    }

$good_data数组是淘宝推送过来的,所以需要付费的,采集结果插入我们系统,即可在小程序同步数据进行销售

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值