#laravel #api #external
#laravel #API #внешний
Вопрос:
Я получаю данные из внешнего источника API.
Я использую это для получения моих заказов
$data = Http::get(
$this->URL .'orders?language=nl_NLamp;limit=100amp;format=jsonamp;status_changed_start_date='
. $last_poll
. 'amp;ordering=ascamp;partner_token='.$this->PARTNERKEY.'amp;token='.$this->MERCHANTTOKEN.''
)->json();
следуя руководству на сайте партнера, я должен использовать этот формат для обновления определенной записи.
curl -X PATCH $this->URL ."orders/2?language=nl_NLamp;format=jsonamp;override_minimum=falseamp;override_stock=falseamp;mutate_stock=trueamp;partner_token='.$this->PARTNERKEY.'amp;token='.$this->MERCHANTTOKEN.'"
-H "accept: application/json"
-H "Content-Type: application/json"
-d "{"status":2,"archived":true,"comments":{"internal":"Owner's commentary"}}"
Как мне реализовать это в контроллере Laravel?
Ответ №1:
Используйте HTTP-клиент, предоставляемый Laravel:
use IlluminateSupportFacadesHttp;
use IlluminateHttpRequest;
class MyController
{
public function update (Request $request)
{
// Maybe use from $request?
$id = 2;
Http::patch($this->url . "/orders/" . $id, [
'version' => 1,
'order_number' => 2,
'language' => 'nl_NL',
'format' => 'json',
'override_minimum' => false,
// .. put here the other parameters
]);
}
}
Комментарии:
1. Я обновил свой код с учетом ваших предложений, но мой API не принимает это. Может ли это быть из-за этих параметров? : -H «accept: application / json» -H «Content-Type: application / json» Параметры URL запроса, которые я могу настроить, но это больше связано с частью данных: -d «{«статус»: 2, «архивировано»: true,»комментарии»: {«внутренние»: «Комментарий владельца»}}» URL-адрес руководства по API: connect.myonlinestore.com/swagger-docs . Он находится в разделе Заказ -> Исправление.
2. Какую ошибку возвращает API? Я обновил свой ответ. Пожалуйста, покажите свой полный код.
3. Я получил ошибку 5000, обратитесь в службу поддержки 🙂
4. Это то, что у меня есть сейчас. $responsePatch = Http::patch ($this->URL . ‘/заказать/’ . $item[‘число’] .’?language=nl_NLamp;format=jsonamp;override_minimum=falseamp;override_stock=falseamp;mutate_stock=trueamp;partner_token=’.$this->PARTNERKEY.’amp;token=’.$this->MERCHANTTOKEN , [‘статус’ => ‘2’, ‘archived’ => true,//, ‘comments’ => [ ‘internal’ => $this-> escaperoomcodes ], ] );
5. Спасибо за вашу помощь!
Ответ №2:
Привет, вот мой окончательный код.
кажется, это работает так, как мне было нужно
$client = new Client([
// Base URI is used with relative requests
'base_uri' => $this->URL,
]);
$response = $client->request('PATCH', 'orders/' . $item['number'] .'?language=nl_NLamp;format=jsonamp;override_minimum=falseamp;override_stock=falseamp;mutate_stock=trueamp;partner_token='.$this->PARTNERKEY.'amp;token='.$this->MERCHANTTOKEN, [
'json' => [
'status' => 2,
'archived' => true,
'comments' => ['internal' => $comment]],
]);