Community

コミュニティをご利用の際は 【ガイドライン】を確認・同意いただいた上でご利用ください。

  • 投稿

    アバターhti

    請求書作成時にエラー「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

    本件、自力で解決いたしました。

    APIの取り扱いに不慣れで、基本的なところで誤っていたようです。