class KauflandapiController extends YbController{
public $header, $url, $secretKey, $ClientKey;
/**
* GetDiscussionMailListResponse constructor.
* @param $response
*/
public function __construct()
{
$this->secretKey = "2ac36025d9dbf5a1c2e0869b8a2e";
$this->ClientKey = "b2c4666dc9cf64b1cf29";
$header = array();
$header[] = 'Accept:application/json';
$header[] = 'Content-Type:application/json';
$header[] = 'HM-Client:'.$this->ClientKey;
$this->header = $header;
$this->url = "https://www.kaufland.de";
}
/**
* description: 所有需要用到的调用接口地址信息统一管理
*/
public function getUrl($url_code)
{
$urls = [
'categories' => '/api/v1/categories',
'update_product' => '/api/v1/product-data/',
'report_list' => '/api/v1/reports/seller',
'report_info' => '/api/v1/reports/',
'account_listing' => '/api/v1/reports/account-listing',
'get_units_listing' => '/api/v1/units/seller',
'get_units' => '/api/v1/units/',
];
return $this->url ? $this->url . $urls[$url_code] : '';
}
/**
* description: 所有需要用到的调用接口地址信息
*/
public function signRequest($method, $uri, $body, $timestamp, $secretKey)
{
$string = implode("\n", [
$method,
$uri,
$body,
$timestamp,
]);
echo $string;
return hash_hmac('sha256', $string, $secretKey);
}
/**
* description: 分类接口内容调用
* @throws CException
* url:/services/yunyi/Kauflandapi/categorier
*/
public function actionCategorier()
{
$uri = $this->getUrl("categories");
$time = time();
$hash_sign = $this->signRequest("GET", $uri, "", $time , $this->secretKey);
$header = $this->header;
$header[] = "HM-Signature:".$hash_sign;
$header[] = "HM-Timestamp:".$time;
//$result = $this->cur_get($uri,$header);
$result = $this->cur_request($uri,"GET","",$header);
echo "<pre>";
print_r($result);
exit;
}
/**
* description: 获取报告列表
* @throws CException
* url:/services/yunyi/Kauflandapi/getreportlist
*/
public function actionGetreportlist()
{
$uri = $this->getUrl("report_list");
$time = time();
$hash_sign = $this->signRequest("GET", $uri, "", $time , $this->secretKey);
$header = $this->header;
$header[] = "HM-Signature:".$hash_sign;
$header[] = "HM-Timestamp:".$time;
//$result = $this->cur_get($uri,$header);
$result = $this->cur_request($uri,"GET","",$header);
echo "<pre>";
echo $uri."\n";
print_r($result);
exit;
}
/**
* description: 获取报告信息
* @throws CException
* url:/services/yunyi/Kauflandapi/getreportinfo
*/
public function actionGetreportinfo()
{
$report_id = "4041098";
$uri = $this->getUrl("report_info").$report_id;
$time = time();
$hash_sign = $this->signRequest("GET", $uri, "", $time , $this->secretKey);
$header = $this->header;
$header[] = "HM-Signature:".$hash_sign;
$header[] = "HM-Timestamp:".$time;
//$result = $this->cur_get($uri,$header);
$result = $this->cur_request($uri,"GET","",$header);
echo "<pre>";
echo $uri."\n";
print_r($result);
exit;
}
/**
* description: 获取账号listing 信息
* @throws CException
* url:/services/yunyi/Kauflandapi/getaccountlist
*/
public function actionGetaccountlist()
{
$uri = $this->getUrl("account_listing");
$time = time();
$hash_sign = $this->signRequest("POST", $uri, "", $time , $this->secretKey);
$header = $this->header;
$header[] = "HM-Signature:".$hash_sign;
$header[] = "HM-Timestamp:".$time;
//$result = $this->cur_get($uri,$header);
$result = $this->cur_request($uri,"POST","",$header);
echo "<pre>";
echo $uri."\n";
print_r($result);
exit;
}
/**
* description: 获取单个商品信息
* @throws CException
* url:/services/yunyi/Kauflandapi/getproduct
*/
public function actionGetproduct()
{
$ean = "9062609283155";
$uri = $this->getUrl("update_product").$ean;
$time = time();
$hash_sign = $this->signRequest("GET", $uri, "", $time , $this->secretKey);
$header = $this->header;
$header[] = "HM-Signature:".$hash_sign;
$header[] = "HM-Timestamp:".$time;
//$result = $this->cur_get($uri,$header);
$result = $this->cur_request($uri,"GET","",$header);
echo "<pre>";
echo $uri."\n";
print_r($result);
exit;
}
/**
* description: 获取单个unit信息
* @throws CException
* url:/services/yunyi/Kauflandapi/getunitinfo
*/
public function actionGetunitinfo()
{
$id_unit = "384536239807";
$uri = $this->getUrl("get_units").$id_unit;
$time = time();
$hash_sign = $this->signRequest("GET", $uri, "", $time , $this->secretKey);
$header = $this->header;
$header[] = "HM-Signature:".$hash_sign;
$header[] = "HM-Timestamp:".$time;
//$result = $this->cur_get($uri,$header);
$result = $this->cur_request($uri,"GET","",$header);
echo "<pre>";
echo $uri."\n";
print_r($result);
exit;
}
/**
* description: 更新单个unit信息
* @throws CException
* url:/services/yunyi/Kauflandapi/updateunits
*/
public function actionUpdateunits()
{
$id_unit = "384536239807";
$uri = $this->getUrl("get_units").$id_unit;;
$time = time();
$body = [
"condition"=>"new",
"listing_price"=>6392,
"minimum_price"=>6392,
"amount"=> 200,
"id_offer"=> "00001670-01",
"note"=> "",
"delivery_time"=> "e",
"delivery_time_min"=> 4,
"delivery_time_max"=> 20,
"shipping_group"=> "jiekecang",
"location"=> "CN",
"warehouse"=> "Shenzhenshi runxi keji",
"reference_price"=> 0
];
//$uri = $uri."?id_unit=$id_unit";
$body_jsonstr = json_encode($body);
$hash_sign = $this->signRequest("PATCH", $uri, $body_jsonstr, $time , $this->secretKey);
$header = $this->header;
$header[] = "HM-Signature:".$hash_sign;
$header[] = "HM-Timestamp:".$time;
//$result = $this->cur_get($uri,$header);
$result = $this->cur_request($uri,"PATCH",$body_jsonstr,$header);
echo "<pre>";
echo $uri."\n";
print_r($header);
print_r($result);
exit;
}
/**
* description: 获取unit listing信息
* @throws CException
* url:/services/yunyi/Kauflandapi/getunitlisting
*/
public function actionGetunitlisting()
{
$uri = $this->getUrl("get_units_listing");
$time = time();
$body["id_offer"] = "3505-006140-09U0A";
$body["id_item"] = 2147483647;
$body["ean"] = "9072609509223";
$body["limit"] = 300;
$body["offset"] = 1;
$body["embedded"] = "item";
//$url=$uri."?limit=30&offset=0&id_offer=3505-006140-09U0A&ean=9072609509223";
$url=$uri."?limit=30&offset=1";
$hash_sign = $this->signRequest("GET", $url, "", $time , $this->secretKey);
$header = $this->header;
$header[] = "HM-Signature:".$hash_sign;
$header[] = "HM-Timestamp:".$time;
//$result = $this->cur_get($uri,$header);
$result = $this->cur_request($url,"GET","",$header);
echo "<pre>";
echo $uri."\n";
print_r($header);
print_r($result);
exit;
}
/**
* description: 进行更新产品数据
* @throws CException
* url:/services/yunyi/Kauflandapi/updateproduct
*/
public function actionUpdateproduct()
{
$ean = "";
$uri = $this->getUrl("categories").$ean;
$time = time();
$params = [
"ean"=>[""],
"title"=>[""],
"category"=>[""],
"additional_categories"=>[""],
"description"=>[""],
"short_description"=>[""],
"mpn"=>[""],
"list_price"=>[""],
"picture"=>[""],
"additional_attributes"=>[["attribute"=>"","value"=>[""]]],
];
echo json_encode($params);exit;
$hash_sign = $this->signRequest("PATCH", $uri, $body, $time , $this->secretKey);
$header = $this->header;
$header[] = "HM-Signature:".$hash_sign;
$header[] = "HM-Timestamp:".$time;
//$result = $this->cur_get($uri,$header);
$result = $this->cur_request($uri,"PATCH","",$header);
echo "<pre>";
print_r($result);
exit;
}
// 请求方法的封装
public function cur_request($URL,$type,$params,$headers){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $URL);
if($headers!=""){
curl_setopt ($ch, CURLOPT_HTTPHEADER, $headers);
}else {
curl_setopt ($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json'));
}
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 30);
switch ($type){
case "GET" : curl_setopt($ch, CURLOPT_HTTPGET, true);break;
case "POST": curl_setopt($ch, CURLOPT_POST,true);
curl_setopt($ch, CURLOPT_POSTFIELDS,$params);break;
case "PUT" : curl_setopt ($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_POSTFIELDS,$params);break;
case "PATCH": curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PATCH');
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);break;
case "DELETE":curl_setopt ($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($ch, CURLOPT_POSTFIELDS,$params);break;
}
$file_contents = curl_exec($ch);//获得返回值
$responseCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
return [$responseCode,json_decode($file_contents,true)];
}
//POST 请求数据
public function cur_post($url, $post_data, $header)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POST, 1);
if (!$post_data) {
$post_data = "{}";
}
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
if (curl_errno($ch)) {
return array("ack" => 0, "result" => "ERROR:" . curl_error($ch));
}
curl_close($ch);
return json_decode($response,true);
}
//GET 请求数据
public function cur_get($url,$header)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
if (curl_errno($ch)) {
return array("ack" => 0, "result" => "ERROR:" . curl_error($ch));
}
curl_close($ch);
return json_decode($response,true);
}
}