ПУБЛИКАЦИЯ easybill REST API через PHP

#php #json #rest

#php #json #rest

Вопрос:

это мой первый пост здесь. Я надеюсь, что я правильно понял свой вопрос. Я использую переводчик Google с немецкого на английский, потому что мой английский не настолько хорош.

Я хотел бы использовать «api» из easybill. ПРИСТУПАЙТЕ к работе. Но, к сожалению, я не могу сделать это с помощью POST.

Я надеюсь, что кто-нибудь сможет мне помочь.

Я хотел бы создать нового клиента для тестирования. Моя цель — позже генерировать счета-фактуры с помощью PHP. «api» для easybill можно найти здесь:https://www.easybill.de/api /

Я попробовал следующий код, но, к сожалению, не могу найти ошибку.

 $url = "https://api.easybill.de/rest/v1/customers";
$data =  array(
    
          'first_name'   => 'Foo',
          'last_name'    => 'Bar',
          'company_name' => 'FooBar GmbH',
          'emails'       => array ('foo.bar@foobar.com'
            )


);

$postdata = json_encode(array($data));
$accesstoken = "XXXXXXXXXXX";

$headr = array();
$headr[] = 'Content-length: 0';
$headr[] = 'Content-type: application/json';
$headr[] = 'Authorization: Bearer '.$accesstoken;

    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headr);
    $result = curl_exec($ch);
    curl_close($ch);
    print_r ($result);
  

С наилучшими пожеланиями из Германии.

Комментарии:

1. Какова ваша точная ошибка при попытке ОПУБЛИКОВАТЬ?

2. 400 неверных запросов nginx

3. Content-length: 0 наверняка неверно.

4. Спасибо. Теперь я немного продвинулся вперед. 🙂 Я прокомментировал строку. Теперь появляется сообщение об ошибке: {«code»:20000, «message»: «Bitte f u00fcllen Sie alle Felder aus.», «arguments»:[«last_name», «company_name»]} Но данные заполнены.

Ответ №1:

Ваши ошибки:

  1. Content-length: 0 не имеет никакого смысла и здесь совершенно неверно. Afaik, вы можете полностью удалить его, поскольку curl делает это за вас.

  2. $postdata = json_encode(array($data)); обернет ваш массив в другой массив, что здесь неверно. Это приводит к:

    [{«first_name»:»Foo»,»last_name»:»Bar», «company_name»:»FooBar GmbH», «электронные письма»:[«foo.bar@foobar.com «]}]

где это должно быть:

 {"first_name":"Foo","last_name":"Bar","company_name":"FooBar GmbH","emails":["foo.bar@foobar.com"]}
  

просто удалите вызов array:

 $postdata = json_encode($data);