<?php
|
namespace app\api\logic\taoke\device;
|
|
use app\api\logic\taoke\Parser;
|
|
|
|
class Taobaolianmeng extends Parser
|
{
|
protected $app_key,$config,$appSecret,$PID;
|
protected $v = '';
|
protected $sign_method = 'md5';
|
|
protected $baseUrl = 'http://gw.api.taobao.com/router/rest';
|
|
const request_url = [
|
'material_url' => "taobao.tbk.dg.optimus.material",
|
'publisher_url'=>'taobao.tbk.sc.publisher.info.save'
|
];
|
|
const shop_type = ["0"=>"淘宝","1"=>"天猫","3"=>"特价版"];
|
|
|
|
public function __construct()
|
{
|
parent::__construct();
|
|
$this->config = config('site.taobaolianmeng');
|
|
$this->app_key = $this->config['app_key'];
|
|
$this->appSecret = $this->config['appSecret'];
|
|
$this->v = $this->config['v'];
|
|
$this->PID = $this->config['PID'];
|
|
$this->sign_method = $this->config['sign_method'];
|
|
if(empty($this->app_key)) return fault('配置信息错误');
|
}
|
|
|
/**
|
* 签名参数
|
* @param $data
|
* @return string
|
*/
|
public function makeSign($params)
|
{
|
ksort($params);
|
$sign_str = "";
|
foreach($params as $key => $value){
|
$sign_str.=$key.$value;
|
}
|
return strtoupper(md5($this->appSecret.$sign_str.$this->appSecret));
|
}
|
|
|
/**
|
* 统一生成参数
|
*
|
* @param [type] $params
|
* @return void
|
*/
|
private function setParams($params = [])
|
{
|
$timer = date('Y-m-d H:m:s',time());
|
|
//默认必传参数
|
$data = [
|
'app_key' => $this->app_key,
|
'v' => $this->v,
|
'timestamp' => $timer,
|
'format' => 'json',
|
'sign_method' => $this->sign_method,
|
];
|
|
//加密的参数
|
if ($params) {
|
$data = array_merge($params, $data);
|
}
|
foreach($data as $key => $item){
|
if(empty($item))unset($data[$key]);
|
}
|
$data['sign'] = $this->makeSign($data);
|
|
return $data;
|
|
}
|
|
/**
|
* 淘宝客-推广者-物料精选
|
*
|
* @param [type] $page
|
* @param [type] $page_size
|
* @param $material_id 6078猜你喜欢 4040备孕 4041-0至6个月 4042-7至12个月 4043-1至3岁 4044-4至6岁 4045-7至12岁
|
* @return void
|
*/
|
public function material($material_id,$deviceValue="",$deviceType="",$page,$page_size)
|
{
|
$adzone_id = explode('_',$this->PID);
|
$params = $this->setParams(['device_value'=>$deviceValue,'device_type'=>$deviceType,'method'=>self::request_url['material_url'],'material_id'=>$material_id,'page_no'=>$page,'page_size'=>$page_size,'adzone_id'=>isset($adzone_id[3]) ? $adzone_id[3] : '']);
|
$result = send_get($this->baseUrl,$params);
|
if(empty($result) || !isset($result['tbk_dg_optimus_material_response']['result_list'])) fault('数据获取失败');
|
$list = $result['tbk_dg_optimus_material_response']['result_list']['map_data'];
|
if(!empty($list)){
|
foreach($list as &$goods){
|
$goods = self::initGoods($goods);
|
}
|
}
|
return $list;
|
}
|
|
|
/**
|
* 淘宝客-公用-私域用户备案 https://open.taobao.com/api.htm?docId=37988&docType=2
|
*
|
* @param [type] $session 用户登录授权成功后,TOP颁发给应用的授权信息
|
* @return void
|
*/
|
public function publisher($session)
|
{
|
$params = $this->setParams(['method'=>self::request_url['publisher_url'],'session'=>$session,'inviter_code'=>$this->config['inviter_code'],'info_type'=>1]);
|
$result = send_get($this->baseUrl,$params);
|
if(isset($result['error_response']['sub_msg']))fault($result['error_response']['sub_msg']);
|
if(empty($result) || !isset($result['tbk_sc_publisher_info_save_response']['data'])) fault('数据获取失败');
|
$info = isset($result['tbk_sc_publisher_info_save_response']['data']) ? $result['tbk_sc_publisher_info_save_response']['data'] : [];
|
return $info;
|
}
|
|
|
|
/**
|
* 格式化商品信息
|
*
|
* @param [type] $goods
|
* @return void
|
*/
|
private static function initGoods($goods)
|
{
|
if(empty($goods)) return [];
|
$init_goods = self::goodsField();
|
$init_goods['id'] = isset($goods['item_id']) ? $goods['item_id'] : '';
|
$init_goods['goodsId'] = isset($goods['item_id']) ? $goods['item_id'] : ''; //商品id
|
$init_goods['itemLink'] = isset($goods['click_url']) ? $goods['click_url'] : ''; //商品链接
|
$init_goods['title'] = isset($goods['title']) ? $goods['title'] : ''; //商品标题
|
$init_goods["dtitle"] = isset($goods['short_title']) ? $goods['short_title'] : ''; //短标题
|
if(empty($init_goods['dtitle'])) $init_goods['dtitle'] = $init_goods['title'];
|
$init_goods["actualPrice"] = isset($goods['zk_final_price']) ? bcsub($goods['zk_final_price'],$goods['coupon_amount'],2) : ''; //券后价
|
$init_goods["originalPrice"] = isset($goods['reserve_price']) ? $goods['reserve_price'] : ''; //商品原价
|
$init_goods["sellerId"] = isset($goods['seller_id']) ? $goods['seller_id'] : ''; //店铺Id
|
$init_goods["shopName"] = isset($goods['shop_title']) ? $goods['shop_title'] : ''; //店铺名称
|
$init_goods["couponPrice"] = isset($goods['coupon_amount']) ? $goods['coupon_amount'] : ''; //优惠券金额
|
$init_goods["monthSales"] = isset($goods['volume']) ? format_number($goods['volume']) : 0; //30天销量
|
$init_goods["mainPic"] = isset($goods['pict_url']) ? $goods['pict_url'] : ''; //商品主图
|
$init_goods["video"] = isset($goods['video']) ? $goods['video'] : ''; //商品视频
|
$init_goods['couponLink'] = isset($goods['coupon_share_url']) ? $goods['coupon_share_url'] : ''; //优惠券链接
|
$init_goods['couponEndTime'] = isset($goods['coupon_end_time']) && !empty($goods['coupon_end_time']) ? $goods['coupon_end_time'] : ''; //优惠券结束时间
|
$init_goods['couponStartTime'] = isset($goods['coupon_start_time']) && !empty($goods['coupon_start_time']) ? $goods['coupon_start_time'] : ''; //优惠券开始时间
|
$init_goods['shopType'] = isset(self::shop_type[$goods['user_type']]) ? self::shop_type[$goods['user_type']] : "未知"; //店铺类型
|
$init_goods['sourceType'] = "tb";
|
if(isset($goods['user_type']) && $goods['user_type'] == 1)$init_goods['sourceType'] = "tm";
|
if(isset($goods['shopType']) && $goods['user_type'] == 1)$init_goods['sourceType'] = "tm";
|
$init_goods['desc'] = isset($goods['item_description']) ? $goods['item_description'] : ''; //推广文案
|
!empty($goods['small_images']) && $init_goods['imgs'] = $goods['small_images']['string'];
|
$init_goods['labelImg'] = self::initSourse($init_goods['sourceType']);
|
$init_goods['isCollect'] = self::isCollect($init_goods);
|
if(empty($init_goods['detailPics']))$init_goods['detailPics'] = $init_goods['mainPic'];
|
$init_goods['fanli'] = self::rebate($init_goods['actualPrice'],$goods['commission_rate']/100);
|
$init_goods['topFanli'] = self::rebate($init_goods['actualPrice'],$goods['commission_rate']/100,self::$topFanliRate);
|
return $init_goods;
|
}
|
|
|
}
|