-
投稿
hti 2020年7月9日
請求書作成時にエラー「invoice_contents は Array で指定してください」
お世話になります。
会計freee APIを利用して、PHPアプリから請求書を作成しようとしております。
PHP で用意した配列を POST リクエストで送信すると、「invoice_contents は Array で指定してください。」というエラーメッセージが返ってきて困っています。
どうすれば請求書を作成できるでしょうか? もともとの配列の問題なのか、POSTリクエストの際に何か見落としているのか…ご教示頂けますと大変助かります。
用意した配列も含め、一連のスクリプトを以下に記します(一部をマスクしています)。
なお、請求書の一覧は取得できるので、APIとの接続は問題なく確立できていると考えています。また「会計APIリファレンス Version: 2020-06-15」から同内容の請求書を作成すると、問題なく作成が出来ます。
PHP のバージョンは 7.3 です。宜しくお願い致します。
~~~~~~~~~~~~~~~~~~~~~~~
// 作成したい請求書の内容
$params_raw = array(
‘company_id’ => ${事業所ID},
‘issue_date’ => “2020-07-09”,
‘partner_id’ => ${取引先ID},
‘due_date’ => “2020-07-31”,
‘booking_date’ => “2020-07-09”,
‘description’ => ${請求書の説明},
‘invoice_status’ => ‘draft’,
‘partner_display_name’ => ${取引先の名称},
‘partner_title’ => ‘御中’,
‘payment_type’ => ‘transfer’,
‘payment_bank_info’ => ${振込先の情報},
‘notes’ => ”,
‘invoice_contents’ => array(
0 => array(
‘order’ => 0,
‘type’ => ‘text’,
‘qty’ => 1,
‘unit’ => ”,
‘unit_price’ => 0,
‘amount’ => 0,
‘vat’ => 0,
‘reduced_vat’ => false,
‘description’ => ${任意のテキスト},
‘account_item_id’ => 220795721,
‘tax_code’ => 129,
‘section_id’ => 720934,
),
1 => array(
‘order’ => 1,
‘type’ => ‘normal’,
‘qty’ => 2,
‘unit’ => ‘件’,
‘unit_price’ => 909,
‘vat’ => 182,
‘reduced_vat’ => false,
‘description’ => ${任意のテキスト},
‘account_item_id’ => 220795721,
‘tax_code’ => 129,
‘section_id’ => 720934,
),
2 => array(
‘order’ => 2,
‘type’ => ‘normal’,
‘qty’ => 2,
‘unit’ => ‘件’,
‘unit_price’ => 164,
‘vat’ => 32,
‘reduced_vat’ => false,
‘description’ => ${任意のテキスト},
‘account_item_id’ => 220795721,
‘tax_code’ => 129,
‘section_id’ => 720934,
)
)
);
$params = http_build_query( $params_raw, ”, ‘&’);// HTTPヘッダを用意
$headers = array( ‘Authorization: Bearer ‘.${アクセストークン}, ‘X-Api-Version: 2020-06-15’, ‘accept: application/json’ );//POSTリクエストを送信
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, ‘https://api.freee.co.jp/api/1/invoices’);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, ‘POST’);
curl_setopt($curl, CURLOPT_POSTFIELDS, $params);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_HEADER, true);//レスポンスを確認
$response = curl_exec($curl);
$header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE);
$header = substr($response, 0, $header_size);
$body = substr($response, $header_size);
$result = json_decode($body, true);
var_dump($result);- 回答するにはログインが必要です。
回答
hti 2020年7月9日
本件、自力で解決いたしました。
APIの取り扱いに不慣れで、基本的なところで誤っていたようです。
Community
コミュニティをご利用の際は 【ガイドライン】を確認・同意いただいた上でご利用ください。