379 lines
11 KiB
PHP
379 lines
11 KiB
PHP
<?php
|
|
|
|
namespace App\Utils;
|
|
|
|
class IfoodUtil{
|
|
|
|
public function getUserCode($config){
|
|
$url = "https://merchant-api.ifood.com.br/authentication/v1.0/oauth/userCode";
|
|
|
|
$curl = curl_init();
|
|
|
|
$headers = [];
|
|
curl_setopt($curl, CURLOPT_URL, $url . "?clientId=".$config->clientId);
|
|
curl_setopt($curl, CURLOPT_POST, true);
|
|
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
|
|
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true );
|
|
curl_setopt($curl, CURLOPT_HEADER, false);
|
|
$result = json_decode(curl_exec($curl));
|
|
curl_close($curl);
|
|
|
|
if(isset($result->authorizationCodeVerifier)){
|
|
$authorizationCodeVerifier = $result->authorizationCodeVerifier;
|
|
$verificationUrlComplete = $result->verificationUrlComplete;
|
|
$userCode = $result->userCode;
|
|
|
|
if($userCode){
|
|
$item = $config;
|
|
$item->userCode = $userCode;
|
|
$item->authorizationCodeVerifier = $authorizationCodeVerifier;
|
|
$item->verificationUrlComplete = $verificationUrlComplete;
|
|
$item->save();
|
|
return $userCode;
|
|
}
|
|
return "";
|
|
}else{
|
|
echo "Algo errado, retorno iFood: ";
|
|
print_r($result);
|
|
die;
|
|
}
|
|
}
|
|
|
|
public function oAuthToken($config){
|
|
$url = "https://merchant-api.ifood.com.br/authentication/v1.0/oauth/token";
|
|
|
|
$ch = curl_init();
|
|
$grantType = $config->grantType;
|
|
|
|
if($config->accessToken != ""){
|
|
$grantType = 'refresh_token';
|
|
}
|
|
|
|
$clientId = $config->clientId;
|
|
$clientSecret = $config->clientSecret;
|
|
$authorizationCode = $config->authorizationCode;
|
|
$authorizationCodeVerifier = $config->authorizationCodeVerifier;
|
|
|
|
$params = "?grantType=$grantType&clientId=$clientId&clientSecret=$clientSecret&authorizationCode=$authorizationCode&authorizationCodeVerifier=$authorizationCodeVerifier";
|
|
|
|
if($config->accessToken != ""){
|
|
$params .= "&refreshToken=" . $config->refreshToken;
|
|
}
|
|
$headers = [];
|
|
curl_setopt($ch, CURLOPT_URL, $url . $params);
|
|
curl_setopt($ch, CURLOPT_POST, true);
|
|
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
curl_setopt($ch, CURLOPT_HEADER, false);
|
|
curl_setopt($ch, CURLOPT_ENCODING, '');
|
|
$result = json_decode(curl_exec($ch));
|
|
curl_close($ch);
|
|
if(!isset($result->error)){
|
|
|
|
$accessToken = $result->accessToken;
|
|
$refreshToken = $result->refreshToken;
|
|
$item = $config;
|
|
$item->accessToken = $result->accessToken;
|
|
$item->refreshToken = $result->refreshToken;
|
|
|
|
$item->save();
|
|
return ['success' => 1, 'token' => $accessToken];
|
|
}else{
|
|
$item = $config;
|
|
$item->save();
|
|
return ['success' => 0, 'message' => $result->error->message];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
public function newToken($config){
|
|
$url = "https://merchant-api.ifood.com.br/authentication/v1.0/oauth/token";
|
|
|
|
$ch = curl_init();
|
|
$grantType = $config->grantType;
|
|
|
|
$clientId = $config->clientId;
|
|
$clientSecret = $config->clientSecret;
|
|
$authorizationCode = $config->authorizationCode;
|
|
$authorizationCodeVerifier = $config->authorizationCodeVerifier;
|
|
|
|
$params = "?grantType=$grantType&clientId=$clientId&clientSecret=$clientSecret&authorizationCode=$authorizationCode&authorizationCodeVerifier=$authorizationCodeVerifier";
|
|
|
|
$headers = [];
|
|
curl_setopt($ch, CURLOPT_URL, $url . $params);
|
|
curl_setopt($ch, CURLOPT_POST, true);
|
|
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
curl_setopt($ch, CURLOPT_HEADER, false);
|
|
curl_setopt($ch, CURLOPT_ENCODING, '');
|
|
$result = json_decode(curl_exec($ch));
|
|
curl_close($ch);
|
|
if(!isset($result->error)){
|
|
|
|
$accessToken = $result->accessToken;
|
|
$refreshToken = $result->refreshToken;
|
|
$item = $config;
|
|
$item->accessToken = $result->accessToken;
|
|
$item->refreshToken = $result->refreshToken;
|
|
|
|
$item->save();
|
|
return ['success' => 1, 'token' => $accessToken];
|
|
}else{
|
|
// echo $result->error->message;
|
|
// die;
|
|
$item = $config;
|
|
$item->save();
|
|
return ['success' => 0, 'message' => $result->error->message];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
public function statusMerchant($config){
|
|
$url = "https://merchant-api.ifood.com.br/merchant/v1.0/merchants/".$config->merchantId."/status";
|
|
|
|
$ch = curl_init();
|
|
$headers = [
|
|
"Authorization: Bearer " . $config->accessToken,
|
|
];
|
|
|
|
curl_setopt($ch, CURLOPT_URL, $url);
|
|
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
|
|
curl_setopt($ch, CURLOPT_HEADER, false);
|
|
curl_setopt($ch, CURLOPT_ENCODING, '');
|
|
$result = json_decode(curl_exec($ch));
|
|
curl_close($ch);
|
|
|
|
return $result;
|
|
}
|
|
|
|
public function getInterruptions($config){
|
|
$url = "https://merchant-api.ifood.com.br/merchant/v1.0/merchants/".$config->merchantId."/interruptions";
|
|
|
|
$ch = curl_init();
|
|
$headers = [
|
|
"Authorization: Bearer " . $config->accessToken,
|
|
];
|
|
|
|
curl_setopt($ch, CURLOPT_URL, $url);
|
|
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
curl_setopt($ch, CURLOPT_HEADER, false);
|
|
curl_setopt($ch, CURLOPT_ENCODING, '');
|
|
$result = json_decode(curl_exec($ch));
|
|
curl_close($ch);
|
|
|
|
return $result;
|
|
|
|
}
|
|
|
|
public function getCatalogs($config){
|
|
$url = "https://merchant-api.ifood.com.br/catalog/v1.0/merchants/".$config->merchantUUID."/catalogs";
|
|
$ch = curl_init();
|
|
$headers = [
|
|
"Authorization: Bearer " . $config->accessToken
|
|
];
|
|
|
|
curl_setopt($ch, CURLOPT_URL, $url);
|
|
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
curl_setopt($ch, CURLOPT_HEADER, false);
|
|
curl_setopt($ch, CURLOPT_ENCODING, '');
|
|
$result = json_decode(curl_exec($ch));
|
|
curl_close($ch);
|
|
return $result;
|
|
|
|
}
|
|
|
|
public function getCategories($config){
|
|
$url = "https://merchant-api.ifood.com.br/catalog/v1.0/merchants/".$config->merchantUUID."/catalogs/".
|
|
$config->catalogId."/categories";
|
|
|
|
$ch = curl_init();
|
|
$headers = [
|
|
"Authorization: Bearer " . $config->accessToken
|
|
];
|
|
|
|
curl_setopt($ch, CURLOPT_URL, $url);
|
|
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
curl_setopt($ch, CURLOPT_HEADER, false);
|
|
curl_setopt($ch, CURLOPT_ENCODING, '');
|
|
$result = json_decode(curl_exec($ch));
|
|
curl_close($ch);
|
|
return $result;
|
|
|
|
}
|
|
|
|
public function storeCategory($config, $data){
|
|
$url = "https://merchant-api.ifood.com.br/catalog/v1.0/merchants/".$config->merchantUUID."/catalogs/".
|
|
$config->catalogId."/categories";
|
|
|
|
$ch = curl_init();
|
|
$headers = [
|
|
"Authorization: Bearer " . $config->accessToken,
|
|
'Content-Type: application/json'
|
|
];
|
|
$payload = json_encode($data);
|
|
|
|
curl_setopt($ch, CURLOPT_URL, $url);
|
|
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
|
|
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
|
curl_setopt($ch, CURLOPT_POST, true);
|
|
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
curl_setopt($ch, CURLOPT_HEADER, false);
|
|
curl_setopt($ch, CURLOPT_ENCODING, '');
|
|
$result = json_decode(curl_exec($ch));
|
|
curl_close($ch);
|
|
return $result;
|
|
|
|
}
|
|
|
|
public function updateCategory($config, $data, $id){
|
|
$url = "https://merchant-api.ifood.com.br/catalog/v1.0/merchants/".$config->merchantUUID."/catalogs/".
|
|
$config->catalogId."/categories/".$id;
|
|
// dd($url);
|
|
$ch = curl_init();
|
|
$headers = [
|
|
"Authorization: Bearer " . $config->accessToken,
|
|
'Content-Type: application/json'
|
|
];
|
|
$payload = json_encode($data);
|
|
|
|
curl_setopt($ch, CURLOPT_URL, $url);
|
|
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
|
|
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
|
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PATCH");
|
|
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
curl_setopt($ch, CURLOPT_HEADER, false);
|
|
curl_setopt($ch, CURLOPT_ENCODING, '');
|
|
$result = json_decode(curl_exec($ch));
|
|
curl_close($ch);
|
|
return $result;
|
|
|
|
}
|
|
|
|
public function destroyCategory($config, $id){
|
|
$url = "https://merchant-api.ifood.com.br/catalog/v1.0/merchants/".$config->merchantUUID."/catalogs/".
|
|
$config->catalogId."/categories/".$id;
|
|
|
|
$ch = curl_init();
|
|
$headers = [
|
|
"Authorization: Bearer " . $config->accessToken,
|
|
];
|
|
|
|
curl_setopt($ch, CURLOPT_URL, $url);
|
|
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
|
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
|
|
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
curl_setopt($ch, CURLOPT_HEADER, false);
|
|
curl_setopt($ch, CURLOPT_ENCODING, '');
|
|
$result = json_decode(curl_exec($ch));
|
|
curl_close($ch);
|
|
return $result;
|
|
|
|
}
|
|
|
|
public function storeProduct($config, $data){
|
|
$url = "https://merchant-api.ifood.com.br/catalog/v1.0/merchants/".$config->merchantUUID."/products";
|
|
|
|
$ch = curl_init();
|
|
$headers = [
|
|
"Authorization: Bearer " . $config->accessToken,
|
|
'Content-Type: application/json'
|
|
];
|
|
$payload = json_encode($data);
|
|
|
|
curl_setopt($ch, CURLOPT_URL, $url);
|
|
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
|
|
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
|
curl_setopt($ch, CURLOPT_POST, true);
|
|
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
curl_setopt($ch, CURLOPT_HEADER, false);
|
|
curl_setopt($ch, CURLOPT_ENCODING, '');
|
|
$result = json_decode(curl_exec($ch));
|
|
curl_close($ch);
|
|
|
|
return $result;
|
|
|
|
}
|
|
|
|
public function addStockProduct($config, $data){
|
|
$url = "https://merchant-api.ifood.com.br/catalog/v1.0/merchants/".$config->merchantUUID."/inventory";
|
|
|
|
$ch = curl_init();
|
|
$headers = [
|
|
"Authorization: Bearer " . $config->accessToken,
|
|
'Content-Type: application/json'
|
|
];
|
|
$payload = json_encode($data);
|
|
// print_r($payload);
|
|
// die;
|
|
curl_setopt($ch, CURLOPT_URL, $url);
|
|
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
|
|
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
|
curl_setopt($ch, CURLOPT_POST, true);
|
|
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
curl_setopt($ch, CURLOPT_HEADER, false);
|
|
curl_setopt($ch, CURLOPT_ENCODING, '');
|
|
$result = json_decode(curl_exec($ch));
|
|
curl_close($ch);
|
|
|
|
return $result;
|
|
|
|
}
|
|
|
|
public function associationProductCategory($config, $categoryId, $productId, $data){
|
|
$url = "https://merchant-api.ifood.com.br/catalog/v1.0/merchants/".$config->merchantUUID."/categories/$categoryId/products/$productId";
|
|
// dd($url);
|
|
$ch = curl_init();
|
|
$headers = [
|
|
"Authorization: Bearer " . $config->accessToken,
|
|
'Content-Type: application/json'
|
|
];
|
|
$payload = json_encode($data);
|
|
|
|
// print_r($payload);
|
|
// die;
|
|
curl_setopt($ch, CURLOPT_URL, $url);
|
|
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
|
|
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
|
curl_setopt($ch, CURLOPT_POST, true);
|
|
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
curl_setopt($ch, CURLOPT_HEADER, false);
|
|
curl_setopt($ch, CURLOPT_ENCODING, '');
|
|
$result = json_decode(curl_exec($ch));
|
|
curl_close($ch);
|
|
|
|
return $result;
|
|
|
|
}
|
|
|
|
public function getStock($config, $id){
|
|
$url = "https://merchant-api.ifood.com.br/catalog/v1.0/merchants/".$config->merchantUUID."/inventory/$id";
|
|
$ch = curl_init();
|
|
$headers = [
|
|
"Authorization: Bearer " . $config->accessToken
|
|
];
|
|
|
|
curl_setopt($ch, CURLOPT_URL, $url);
|
|
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
curl_setopt($ch, CURLOPT_HEADER, false);
|
|
curl_setopt($ch, CURLOPT_ENCODING, '');
|
|
$result = json_decode(curl_exec($ch));
|
|
curl_close($ch);
|
|
return $result;
|
|
|
|
}
|
|
|
|
} |