早上好!
我想使用 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>';