"淘宝","tm"=>"天猫","jd"=>"京东",'wph'=>'唯品会','suning'=>"苏宁"]; const request_url = [ 'wph_goods_url' => "http://api.tbk.dingdanxia.com/vip/goodsList", //唯品会商品链接 'search_goods_url' => "http://api.tbk.dingdanxia.com/vip/query", 'viplink_check_url' => 'http://api.tbk.dingdanxia.com/vip/viplink_check', 'wph_goods_detail_url' => 'http://api.tbk.dingdanxia.com/vip/item_info', // 唯品会商品详情接口 'tkl_privilege_url' => 'http://api.tbk.dingdanxia.com/tbk/tkl_privilege', 'super_search_url' => 'http://api.tbk.dingdanxia.com/tbk/super_search', 'activity_info_url' => 'http://api.tbk.dingdanxia.com/tbk/activityinfo', 'id_privilege_url' => 'http://api.tbk.dingdanxia.com/tbk/id_privilege', 'vph_id_privilege_url' => 'http://api.tbk.dingdanxia.com/vip/id_privilege', 'url_privilege_url' => 'http://api.tbk.dingdanxia.com/vip/url_privilege', 'order_details2_url' => 'http://api.tbk.dingdanxia.com/vip/order_details2' ]; public function __construct() { parent::__construct(); $this->config = config('site.dingdanxia'); $this->appkey = $this->config['apikey']; if(empty($this->appkey)) return fault('配置信息错误'); } /** * 获取订单列表信息 https://www.dingdanxia.com/doc/135/124 * * @param [type] $page * @param string $pageSize * @param string $orderTimeStart * @param string $orderTimeEnd * @param string $status * @param string $updateTimeStart * @param string $updateTimeEnd * @return void */ public function getOrderDetails2($page,$pageSize="20",$orderTimeStart="",$orderTimeEnd="",$status="",$updateTimeStart="",$updateTimeEnd="") { $send_data = [ 'apikey' => $this->appkey, 'orderTimeStart' => $orderTimeStart, 'orderTimeEnd' => $orderTimeEnd, 'status' => $status, 'updateTimeStart' => $updateTimeStart, 'updateTimeEnd' => $updateTimeEnd, 'page' => $page, 'pageSize' => $pageSize ]; $result = send_get(self::request_url['order_details2_url'],$send_data); if(empty($result) || $result['code'] != 200) return ['status'=>false,'info'=>'接口请求失败','list'=>[],'total' => 0,'hasMore' => false]; return ['status'=>true,'info'=>'接口请求成功','list'=>$result['total_results'] > 0 ?$result['data'] : [],'total' => $result['total_results'],'hasMore' => $result['total_results'] == $pageSize ? true : false]; } /** * 唯品会商品分类 * * @return void */ public function wphCateList() { $cate = [ ['name'=>'女装精选','value' => 'fqs3ruqw'], ['name'=>'男装精选','value' => 'kkhewi9q'], ['name'=>'美妆精选','value' => 'x6kihigh'], ['name'=>'精选-首饰','value' => 'ck9efvy0'], ['name'=>'鞋包精选','value' => '2jo673jj'], ['name'=>'母婴精选','value' => '0lreb0o6'], ['name'=>'居家精选','value' => 'axu1ike2'], ['name'=>'体用精选','value' => 'etr780b6'], ['name'=>'家用电器','value' => '2o396a6v'] ]; return $cate; } /** * 唯品会商品列表 https://www.dingdanxia.com/doc/129/124 * * @param [type] $cate * @param [type] $channelType * @param [type] $page * @param [type] $pageSize * @return void */ public function wphGoodsList($cate,$channelType,$page,$pageSize,$sourceType = 1) { $send_data = [ 'apikey' => $this->appkey, 'channelType' => $channelType, 'sourceType' => $sourceType, //组货 'page' => $page, 'pageSize' => $pageSize ]; if($sourceType == 1)$send_data['jxCode'] = $cate; $result = send_get(self::request_url['wph_goods_url'],$send_data); if(empty($result) || $result['code'] == 0) fault('数据获取失败'); $list = $result['data']; if(!empty($list)){ foreach($list as &$goods){ $marektprice=isset($goods['marketPrice']) ? (float)$goods['marketPrice'] : 0; $vipprice=isset($goods['vipPrice']) ? (float)$goods['vipPrice'] : 0; $goods["discount"]=$marektprice==0?0:number_format(($vipprice/$marektprice)*10,1); $goods = self::initGoods($goods,'wph','w'); } } return $list; } /** * 搜索商品 https://www.dingdanxia.com/doc/131/124 * * @param [type] $keyword 关键词 * @param [type] $fieldName 排序字段 价格-PRICE、折扣-DISCOUNT、销量-SALES * @param [type] $order 排序顺序:0-正序,1-逆序,默认正序 * @param [type] $page * @param [type] $pageSize * @param [type] $sourceType 来源 * @param [type] $faction 派系 * @return void */ public function searchGoods($keyword,$fieldName,$order,$page,$pageSize,$sourceType,$faction) { $send_data = [ 'apikey' => $this->appkey, 'keyword' => $keyword, 'fieldName' => $fieldName, 'order' => $order, 'page' => $page, 'pageSize' => $pageSize ]; $result = send_get(self::request_url['search_goods_url'],$send_data); if(empty($result) || $result['code'] == 0) fault('数据获取失败'); $list = $result['data']; if(!empty($list)){ foreach($list as &$goods){ $goods = self::initGoods($goods,$sourceType,$faction); } } return $list; } /** * 唯品会商品详情 https://www.dingdanxia.com/doc/130/124 * * @param [type] $goodsId 商品id * @return void */ public function getWphGoodsDetail($goodsId) { $send_data = [ 'apikey' => $this->appkey, 'id' => $goodsId ]; $result = send_get(self::request_url['wph_goods_detail_url'],$send_data); if(empty($result) || $result['code'] == 0) fault('数据获取失败'); $info = $result['data']; $goods = self::initGoods($info,'wph','w'); return $goods; } /** * 解析唯品会商品ID https://www.dingdanxia.com/doc/149/124 * * @param [type] $goods_url * @return void */ public function checkLink($goods_url) { $send_data = [ 'apikey' => $this->appkey, 'url' => $goods_url ]; $result = send_get(self::request_url['viplink_check_url'],$send_data); if(empty($result) || $result['code'] == 0) fault('数据获取失败'); $list = $result['data']; if($list['linkType'] == "GOODS"){ return ['goodsId'=>$list['goodsId']]; }else{ return []; } } /** * 淘宝客高佣转链 https://www.dingdanxia.com/doc/3/8 * * @param [type] $goods_url * @param [type] $returnGoods 是否返回商品信息 * @return void */ public function tklPrivilege($goods_url) { $send_data = [ 'apikey' => $this->appkey, 'tkl' => $goods_url, 'itemInfo' => true ]; $result = send_get(self::request_url['tkl_privilege_url'],$send_data); if(empty($result) || $result['code'] != 200) return []; $goods = $result['data']; if(empty($goods)) return []; $init_goods = self::goodsField(); $init_goods['id'] = isset($goods['id']) ? $goods['id'] : ''; $init_goods['goodsId'] = isset($goods['item_id']) ? $goods['item_id'] : ''; //商品id $init_goods['itemLink'] = isset($goods['item_url']) ? $goods['item_url'] : ''; //商品链接 $init_goods['title'] = isset($goods['itemInfo']['title']) ? $goods['itemInfo']['title'] : ''; //商品标题 $init_goods["dtitle"] = isset($goods['itemInfo']['title']) ? $goods['itemInfo']['title'] : ''; $init_goods["actualPrice"] = isset($goods['itemInfo']['qh_final_price']) ? $goods['itemInfo']['qh_final_price'] : ''; //券后价 $init_goods["originalPrice"] = isset($goods['itemInfo']['reserve_price']) ? $goods['itemInfo']['reserve_price'] : ''; //商品原价 $init_goods["shopName"] = isset($goods['itemInfo']['nick']) ? $goods['itemInfo']['nick'] : ''; //店铺名称 $init_goods["couponPrice"] = isset($goods['coupon']) ? $goods['coupon'] : ''; //优惠券金额 $init_goods["mainPic"] = isset($goods['itemInfo']['pict_url']) ? $goods['itemInfo']['pict_url'] : ''; //商品主图 $init_goods["imgs"] = isset($goods['itemInfo']['small_images']) ? $goods['itemInfo']['small_images'] : ''; $init_goods['detailPics'] = $init_goods['imgs']; $init_goods['couponLink'] = isset($goods['coupon_click_url']) ? $goods['coupon_click_url'] : ''; $init_goods['couponStartTime'] = isset($goods['coupon_start_time']) ? $goods['coupon_start_time'] : ''; $init_goods['couponEndTime'] = isset($goods['coupon_end_time']) ? $goods['coupon_end_time'] : ''; $init_goods['shopType'] = '淘宝'; //店铺类型 $init_goods['sourceType'] = 'tb'; $init_goods['faction'] = 't'; return $init_goods; // if($returnGoods){ // }else{ // return [ // 'coupon_tpwd' => isset($goods['coupon_tpwd']) ? $goods['coupon_tpwd'] : "", // 'long_coupon_tpwd' => isset($goods['long_coupon_tpwd']) ? $goods['long_coupon_tpwd'] : "", // 'coupon_click_url' => isset($goods['coupon_click_url']) ? $goods['coupon_click_url'] : "", // 'item_url' => isset($goods['item_url']) ? $goods['item_url'] : "" // ]; // } } /** * 唯品会高佣转链(商品ID版)) https://www.dingdanxia.com/doc/132/124 * * @param [type] $goodsId 商品ID * @param [type] $chanTag 渠道标识 * @return void */ public function idPrivilege($goodsId,$chanTag) { $send_data = [ 'apikey' => $this->appkey, 'id' => $goodsId, 'chanTag' => $chanTag ]; $result = send_get(self::request_url['vph_id_privilege_url'],$send_data); if(empty($result) || $result['code'] != 200) return []; $info = $result['data']; if(empty($info)) return []; return $info; } /** * 唯品会高佣转链(URL链接版) https://www.dingdanxia.com/doc/133/124 * * @param [type] $url 商品,活动链接url * @param [type] $common_relation_id 用户唯一标识 * @return void */ public function urlPrivilege($url,$common_relation_id) { $send_data = [ 'apikey' => $this->appkey, 'url' => $url, 'chanTag' => $common_relation_id, 'itemInfo' => true ]; $result = send_get(self::request_url['url_privilege_url'],$send_data); if(empty($result) || $result['code'] != 200) return []; $info = $result['data']; if(empty($info)) return ''; $str = $info['itemInfo']['goodsName']."\n"."市场价:¥".$info['itemInfo']['marketPrice']." 折扣价:¥".$info['itemInfo']['vipPrice']."\n"."抢购链接:".$info['url']; return $str; } /** * 超级搜索 https://www.dingdanxia.com/doc/15/8 * * @param [type] $goods_url * @return void */ public function superSearch($goods_url,$sourceType='',$faction="") { $send_data = [ 'apikey' => $this->appkey, 'q' => $goods_url, ]; $result = send_get(self::request_url['super_search_url'],$send_data); if(empty($result) || $result['code'] != 200) fault('数据获取失败'); if(!isset($result['data'][0])) return []; $goods = $result['data'][0]; if(empty($goods)) return []; $init_goods = self::goodsField(); $init_goods['id'] = isset($goods['id']) ? $goods['id'] : ''; $init_goods['goodsId'] = isset($goods['item_id']) ? $goods['item_id'] : ''; //商品id $init_goods['itemLink'] = isset($goods['item_url']) ? $goods['item_url'] : ''; //商品链接 $init_goods['title'] = isset($goods['title']) ? $goods['title'] : ''; //商品标题 $init_goods["dtitle"] = isset($goods['title']) ? $goods['title'] : ''; $init_goods["actualPrice"] = isset($goods['zk_final_price']) ? $goods['zk_final_price'] : ''; //券后价 $init_goods["originalPrice"] = isset($goods['reserve_price']) ? $goods['reserve_price'] : ''; //商品原价 $init_goods["shopName"] = isset($goods['nick']) ? $goods['nick'] : ''; //店铺名称 $init_goods["couponPrice"] = isset($goods['coupon']) ? $goods['coupon'] : ''; //优惠券金额 $init_goods["mainPic"] = isset($goods['pict_url']) ? $goods['pict_url'] : ''; //商品主图 $init_goods["imgs"] = isset($goods['small_images']) ? $goods['small_images'] : ''; $init_goods['couponLink'] = isset($goods['coupon_share_url']) ? $goods['coupon_share_url'] : ''; $init_goods['couponStartTime'] = isset($goods['coupon_start_time']) ? $goods['coupon_start_time'] : ''; $init_goods['couponEndTime'] = isset($goods['coupon_end_time']) ? $goods['coupon_end_time'] : ''; $init_goods['shopType'] = !empty($sourceType) && isset(self::shop_type[$sourceType]) ? self::shop_type[$sourceType] : "未知"; //店铺类型 $init_goods['sourceType'] = $sourceType; $init_goods['faction'] = $faction; return $init_goods; } /** * 官方活动转链,饿了么/口碑活动转链 https://www.dingdanxia.com/doc/122/173 * * @param [type] $activity_material_id * @return void */ public function activityinfo($activity_material_id) { $send_data = [ 'apikey' => $this->appkey, 'activity_material_id' => $activity_material_id ]; $result = send_get(self::request_url['activity_info_url'],$send_data); if(empty($result) || $result['code'] == 0) fault('数据获取失败'); $info = $result['data']; return self::initUnion($info); } /** * 格式化转链 * @return void */ private static function initUnion($data) { if(empty($data)) return []; $init_data = self::unionField(); $init_data['h5'] = isset($data['short_click_url']) ? $data['short_click_url'] : ''; $init_data['we_app_info'] = isset($data['we_app_info']) ? $data['we_app_info'] : []; $init_data['act_name'] = isset($data['page_name']) ? $data['page_name'] : ""; $init_data['long_h5'] = isset($data['click_url']) ? $data['click_url'] : ""; if(isset($data['wx_qrcode_url'])) $init_data['we_app_info']['miniCode'] = $data['wx_qrcode_url']; if(isset($data['wx_miniprogram_path'])) $init_data['we_app_info']['page_path'] = $data['wx_miniprogram_path']; return $init_data; } /** *格式化商品数据 * * @param [type] $goods * @param string $sourceType * @return void */ public static function initSearchGoods($goods,$sourceType='',$faction='') { if(empty($goods)) return []; $init_goods = self::goodsField(); $init_goods['id'] = isset($goods['id']) ? $goods['id'] : ''; $init_goods['goodsId'] = isset($goods['item_id']) ? $goods['item_id'] : ''; //商品id $init_goods['itemLink'] = isset($goods['item_url']) ? $goods['item_url'] : ''; //商品链接 $init_goods['title'] = isset($goods['itemInfo']['title']) ? $goods['itemInfo']['title'] : ''; //商品标题 $init_goods["dtitle"] = isset($goods['itemInfo']['title']) ? $goods['itemInfo']['title'] : ''; $init_goods["actualPrice"] = isset($goods['itemInfo']['qh_final_price']) ? $goods['itemInfo']['qh_final_price'] : ''; //券后价 $init_goods["originalPrice"] = isset($goods['itemInfo']['reserve_price']) ? $goods['itemInfo']['reserve_price'] : ''; //商品原价 $init_goods["shopName"] = isset($goods['itemInfo']['nick']) ? $goods['itemInfo']['nick'] : ''; //店铺名称 $init_goods["couponPrice"] = isset($goods['coupon']) ? $goods['coupon'] : ''; //优惠券金额 $init_goods["mainPic"] = isset($goods['itemInfo']['pict_url']) ? $goods['itemInfo']['pict_url'] : ''; //商品主图 $init_goods["imgs"] = isset($goods['itemInfo']['small_images']) ? $goods['itemInfo']['small_images'] : ''; $init_goods['couponLink'] = isset($goods['coupon_click_url']) ? $goods['coupon_click_url'] : ''; $init_goods['couponStartTime'] = isset($goods['coupon_start_time']) ? $goods['coupon_start_time'] : ''; $init_goods['couponEndTime'] = isset($goods['coupon_end_time']) ? $goods['coupon_end_time'] : ''; $init_goods['shopType'] = !empty($sourceType) && isset(self::shop_type[$sourceType]) ? self::shop_type[$sourceType] : "未知"; //店铺类型 $init_goods['sourceType'] = $sourceType; $init_goods['faction'] = $faction; $init_goods['isCollect'] = self::isCollect($init_goods); $init_goods['labelImg'] = self::initSourse($init_goods['sourceType']); $init_goods['fanli'] = self::rebate($init_goods["actualPrice"],$goods['commissionRate']/100); $init_goods['topFanli'] = self::rebate($init_goods['actualPrice'],$goods['commissionRate']/100,self::$topFanliRate); return $init_goods; } /** * 统一商品信息 * * @param [type] $goods * @return void */ private static function initGoods($goods,$sourceType='',$faction='') { if(empty($goods)) return []; $init_goods = self::goodsField(); $init_goods['id'] = isset($goods['id']) ? $goods['id'] : ''; $init_goods['goodsId'] = isset($goods['goodsId']) ? $goods['goodsId'] : ''; //商品id $init_goods['itemLink'] = isset($goods['destUrl']) ? $goods['destUrl'] : ''; //商品链接 $init_goods['title'] = isset($goods['goodsName']) ? $goods['goodsName'] : ''; //商品标题 $init_goods["dtitle"] = isset($goods['goodsName']) ? $goods['goodsName'] : ''; //短标题 $init_goods["actualPrice"] = isset($goods['vipPrice']) ? $goods['vipPrice'] : ''; //券后价 $init_goods["originalPrice"] = isset($goods['marketPrice']) ? $goods['marketPrice'] : ''; //商品原价 $init_goods["shopName"] = isset($goods['storeInfo']['storeName']) ? $goods['storeInfo']['storeName'] : ''; $init_goods['discount'] = isset($goods['discount']) ? $goods['discount'] : ''; $init_goods["couponPrice"] = isset($goods['couponInfo']['fav']) ? $goods['couponInfo']['fav'] : ''; //优惠券金额 $init_goods['couponEndTime'] = isset($goods['couponInfo']['useEndTime']) && !empty($goods['couponInfo']['useEndTime']) ? date('Y-m-d',$goods['couponInfo']['useEndTime']/1000) : ''; //优惠券结束时间 $init_goods['couponStartTime'] = isset($goods['couponInfo']['useBeginTime']) && !empty($goods['couponInfo']['useBeginTime']) ? date('Y-m-d',$goods['couponInfo']['useBeginTime']/1000) : ''; //优惠券结束时间 $init_goods["mainPic"] = isset($goods['goodsThumbUrl']) ? $goods['goodsThumbUrl'] : ''; //商品主图 if(isset($goods['goodsMainPicture']) && !empty($goods['goodsMainPicture'])){ $imageList = strpos($goods['goodsMainPicture'],',') == true ? explode(',',$goods['goodsMainPicture']) : [$goods['goodsMainPicture']]; $init_goods['imgs'] = $imageList; } if(isset($goods['goodsDetailPictures']) && !empty($goods['goodsDetailPictures'])){ $detailList = is_array($goods['goodsDetailPictures']) ? $goods['goodsDetailPictures'] : explode(',',$goods['goodsDetailPictures']); $init_goods['detailPics'] = $detailList; } if(empty($init_goods['detailPics']))$init_goods['detailPics'] = $init_goods['imgs']; $init_goods['shopType'] = !empty($sourceType) && isset(self::shop_type[$sourceType]) ? self::shop_type[$sourceType] : "未知"; //店铺类型 $init_goods['sourceType'] = $sourceType; $init_goods['faction'] = $faction; $init_goods['labelImg'] = self::initSourse($init_goods['sourceType']); $init_goods['isCollect'] = self::isCollect($init_goods); $init_goods['fanli'] = self::rebate($init_goods["actualPrice"],$goods['commissionRate']/100); $init_goods['topFanli'] = self::rebate($init_goods['actualPrice'],$goods['commissionRate']/100,self::$topFanliRate); return $init_goods; } }