发票 api - 通过 php 创建发票

时间:2021-04-20 07:15:47

标签: php curl

早上好!

我想使用 invoiz.de 的 API(通过 PHP)。我有这个文档: https://app.invoiz.de/api/documentation/#/auth 、一个 api 密钥、秘密 api 密钥和 InstallationID。

有了这个代码,我就可以拿走我的“不记名令牌”:

// TOKEN
$curl = curl_init('https://app.invoiz.de/api/auth/token');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl, CURLOPT_USERPWD, $apiKey . ":" . $secretApiKey); 
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query(array(
    'installationId' => $installationId
)));


$content  = curl_exec($curl);
$token = json_decode($content);
curl_close($curl);

使用此代码,我可以显示我所有的文章:

// GET ARTICEL
$curl = curl_init('https://app.invoiz.de/api/article');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($curl, CURLOPT_USERPWD, $apiKey . ":" . $secretApiKey); 
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
    'Authorization: Bearer '.$token->token
));
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query(array(
    'limit'     =>  20,
    'orderBy'   =>  'title'
)));


$content = curl_exec($curl);
$article = json_decode($content);
curl_close($curl);

echo '<pre>';
print_r($article);
echo '</pre>';

现在我想创建一张发票。 文档需要此请求正文:

{
  "date": "2020-03-01T00:00:00.000Z",
  "customerId": 542,
  "priceKind": "net",
  "deliveryDate": "2020-03-01T00:00:00.000Z",
  "articles": [
    {
      "id": 143,
      "amount": 5,
      "discount": 10
    }
  ]
}

我试过了:

// CREATE INVOICE
$curl = curl_init('https://app.invoiz.de/api/v2/invoice');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl, CURLOPT_USERPWD, $apiKey . ":" . $secretApiKey); 
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
    'Authorization: Bearer '.$token->token
));
curl_setopt($curl, CURLOPT_POSTFIELDS, array(
    'date'          =>  '2021-04-20T00:00:00.000Z',
    'customerId'    =>  100110,
    'deliveryDate'  =>  '2021-04-20T00:00:00.000Z',
    'priceKind'     =>  'net',
    'articles'      =>  array(
                            'id'        => MY_ARTICLE_ID,
                            'amount'    => 2,
                            'discount'  => 10
                        )
));


$content  = curl_exec($curl);
$invoice = json_decode($content);
curl_close($curl);

echo '<pre>';
print_r($invoice);
echo '</pre>';

结果:

stdClass Object
(
    [name] => ValidationError
    [message] => Please check your entries.
    [meta] => stdClass Object
        (
            [body] => Array
                (
                    [0] => stdClass Object
                        (
                            [code] => NOT_EMPTY
                            [message] => Please check your entries.
                        )

                )

        )

)

我的错误在哪里?

解决方案

   // CREATE INVOICE
$values = array(
    "date"          =>  "2020-03-01T00:00:00.000Z",
    "customerId"    =>  100110,
    "priceKind"     =>  "net",
    "deliveryDate"  =>  "2020-03-01T00:00:00.000Z",
    "articles"      =>  array [("id" => 45203 ,"amount" => 5,"discount" => 10 )] );

$data = json_encode($values);


$curl = curl_init('https://app.invoiz.de/api/v2/invoice');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl, CURLOPT_USERPWD, $apiKey . ":" . $secretApiKey); 
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
    'Content-Type:application/json', 
    'Authorization: Bearer '.$token->token
));
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);


$content  = curl_exec($curl);
$invoice = json_decode($content);
curl_close($curl);

echo '<pre>';
print_r($invoice);
echo '</pre>';

0 个答案:

没有答案
相关问题