PHPackages                             daisuke85a/freee-accounting-sdk - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [HTTP &amp; Networking](/categories/http)
4. /
5. daisuke85a/freee-accounting-sdk

ActiveLibrary[HTTP &amp; Networking](/categories/http)

daisuke85a/freee-accounting-sdk
===============================

Accounting freee PHP SDK

v2.3.0(5y ago)05MITPHPPHP &gt;=7.2

Since Oct 28Pushed 5y agoCompare

[ Source](https://github.com/daisuke85a/freee-accounting-sdk-php)[ Packagist](https://packagist.org/packages/daisuke85a/freee-accounting-sdk)[ Docs](https://developer.freee.co.jp/)[ RSS](/packages/daisuke85a-freee-accounting-sdk/feed)WikiDiscussions master Synced today

READMEChangelogDependencies (3)Versions (22)Used By (0)

会計freee PHP SDK
===============

[](#会計freee-php-sdk)

会計freee API を PHP で利用するための SDK です。

会計freee API の詳細については、[会計API 概要 | freee Developers Community](https://developer.freee.co.jp/docs/accounting) をご参照ください。

このSDKは、リリースバージョンによって、内部で利用するAPIバージョンが異なります。

- 2.0.0 以降 - 会計freee APIの新しいAPIバージョン(v2020-06-15)に対応しています。
- 2.0.0 未満 - 会計freee APIの古いAPIバージョンを利用しています。古いAPIの提供終了に伴い、2020年12月以降に利用不可となります。

目次
--

[](#目次)

- [チュートリアル](#%E3%83%81%E3%83%A5%E3%83%BC%E3%83%88%E3%83%AA%E3%82%A2%E3%83%AB)
    - [前提条件](#%E5%89%8D%E6%8F%90%E6%9D%A1%E4%BB%B6)
    - [実行環境](#%E5%AE%9F%E8%A1%8C%E7%92%B0%E5%A2%83)
    - [freeeアプリストアへのアプリケーション登録](#freee%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B9%E3%83%88%E3%82%A2%E3%81%B8%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E7%99%BB%E9%8C%B2)
    - [サンプルの実行方法](#%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AE%E5%AE%9F%E8%A1%8C%E6%96%B9%E6%B3%95)
    - [SDKの導入方法](#SDK%E3%81%AE%E5%B0%8E%E5%85%A5%E6%96%B9%E6%B3%95)
- [コントリビューションについて](#%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AA%E3%83%93%E3%83%A5%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)
- [ライセンス](#%E3%83%A9%E3%82%A4%E3%82%BB%E3%83%B3%E3%82%B9)

チュートリアル
-------

[](#チュートリアル)

会計freee PHP SDK を利用する手順について記載します。

### 前提条件

[](#前提条件)

本SDKを利用する前に下記をご確認ください。

- freee 本体のアカウントがあること
- PHP の基礎について理解があること

freee 本体のアカウントは、後述する [freeeアプリストアへのアプリケーション登録](#freee%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B9%E3%83%88%E3%82%A2%E3%81%B8%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E7%99%BB%E9%8C%B2) で必要になります。

freee API に関しては、[チュートリアルガイド](https://app.secure.freee.co.jp/developers/tutorials/1-freee%20API%E3%82%92%E5%A7%8B%E3%82%81%E3%82%8B#freee%20API%E3%82%92%E5%A7%8B%E3%82%81%E3%82%8B) をご参照ください。

PHP の基礎については、 [PHP: PHP マニュアル - Manual ](https://www.php.net/manual/ja/) をご参照ください。

### 実行環境

[](#実行環境)

このリポジトリは以下の環境を想定しています。

- PHP 7.2 以上
- composer

このリポジトリは、 PHP 7.1 以上を対象としています。PHP の実行環境をお持ちでない方は、 [PHP: インストールと設定 - Manual](https://www.php.net/manual/ja/install.php) を参考に環境を準備してください。また、 [composer](https://getcomposer.org/) はこちらからインストールしてください。

### freeeアプリストアへのアプリケーション登録

[](#freeeアプリストアへのアプリケーション登録)

本 SDK で利用する `client_id` および `client_secret` を取得するため、freeeアプリストアの開発者ページでアプリケーションを登録します。

こちらの [チュートリアル | freee アプリストア](https://app.secure.freee.co.jp/developers/tutorials/2-%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B) を参考に、アプリケーションを登録して下さい。

本 SDK と接続するには、コールバックURLに、`http://localhost:8000/auth-callback` を設定します。

### サンプルの実行方法

[](#サンプルの実行方法)

#### WebApp のサンプル

[](#webapp-のサンプル)

##### WebApp のサンプルの実行環境

[](#webapp-のサンプルの実行環境)

サンプルは [Laravel](https://laravel.com/) 7.x をベースに作成しています。サンプルを実行する際は、前述の実行環境に加え、下記も併せてご準備ください。

- PHP 7.2.5 以上
    - BCMath PHP Extension
    - Ctype PHP Extension
    - JSON PHP Extension
    - Mbstring PHP Extension
    - OpenSSL PHP Extension
    - PDO PHP Extension
    - Tokenizer PHP Extension
    - XML PHP Extension
- composer
- Node.js (UI生成時に `npm` を使用するため)

##### WebApp のサンプルの実行環境 (Docker)

[](#webapp-のサンプルの実行環境-docker)

また、Docker を利用可能な方向けに、上記実行環境を含む Dockerfile および docker-compose.yaml を同梱しています。利用する際は、下記をご参考にご利用ください。

```
cd
cd samples
docker-compose build
docker-compose up -d
docker exec -it samples_webapp_1 /bin/bash
```

上記の操作後、dockerコンテナの `/usr/src/app` にログインできます。このディレクトリは、本リポジトリの `samples/BasicWebApp` をマウントしたものです。下記の手順を適宜読み替えて、ご利用ください。

##### WebApp のサンプルの実行手順

[](#webapp-のサンプルの実行手順)

本リポジトリをクローンしたのち、PowerShell や bash などのターミナルでディレクトリに移動します。

```
cd
cd samples/BasicWebApp
cp .env.example .env
```

コピーした `.env` を開き、下記の部分を設定してください。 ``, `` は、それぞれ [freeeアプリストアへのアプリケーション登録](#freee%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B9%E3%83%88%E3%82%A2%E3%81%B8%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E7%99%BB%E9%8C%B2) で取得した値を設定します。

```
FREEE_ACCOUNTING_CLIENT_ID=
FREEE_ACCOUNTING_CLIENT_SECRET=
```

ターミナルで、下記を実行します。

```
# パッケージをインストールする
composer install

# Application encryption key を発行する
php artisan key:generate

# sqlite ファイルを作成し、マイグレーションを実行する
touch database/database.sqlite
php artisan migrate

# Laravel の内蔵サーバーを実行する
php artisan serve

# ※ Docker で動かしている場合は、下記のように host を指定する
php artisan serve --host 0.0.0.0
```

`http://localhost:8000` を開き、ページが開けば正常に起動できています。

右上の「LOGIN」をクリックすると、freeeアプリストアのアプリケーションに対して認証が行われます。初回は「アプリ連携の開始」という画面が表示されますので、内容を確認し「許可する」ボタンをクリックしてください。

正常に認証されれば、 `http://localhost:8000/home` にリダイレクトされます。上部のバーに freee のユーザー名が表示されていれば成功です。また、ユーザー名を選択し、そのプルダウンから「Me」を選択すると、ユーザー情報や取引情報が表示されれば、情報を正しく取得できていることが確認できます。

なお、内蔵サーバーを停止するには、 Ctrl + c を押下します。

#### Console のサンプル

[](#console-のサンプル)

##### Console のサンプルの実行環境 (Docker)

[](#console-のサンプルの実行環境-docker)

また、Docker を利用可能な方向けに、上記実行環境を含む Dockerfile および docker-compose.yaml を同梱しています。利用する際は、下記をご参考にご利用ください。

```
cd
cd samples
docker-compose build
docker-compose up -d
docker exec -it samples_console_1 /bin/bash
```

上記の操作後、dockerコンテナの `/usr/src/app` にログインできます。このディレクトリは、本リポジトリの `samples/BasicConsole` をマウントしたものです。下記の手順を適宜読み替えて、ご利用ください。

##### Console のサンプルの実行手順

[](#console-のサンプルの実行手順)

本リポジトリをクローンしたのち、PowerShell や bash などのターミナルでディレクトリに移動します。

```
cd
cd samples/BasicConsole
cp .env.example .env
```

コピーした `.env` を開き、下記の部分を設定してください。 ``, `` は、それぞれ [freeeアプリストアへのアプリケーション登録](#freee%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B9%E3%83%88%E3%82%A2%E3%81%B8%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E7%99%BB%E9%8C%B2) で取得した値を設定します。

```
FREEE_ACCOUNTING_CLIENT_ID=
FREEE_ACCOUNTING_CLIENT_SECRET=
```

ターミナルで、下記を実行します。

```
# パッケージをインストールする
composer install

# php を interactive modeで実行する
php -a
php >require_once(__DIR__ . '/vendor/autoload.php');
php >$token = {対象のアクセストークン}
php >$cid = {対象の事業所ID}
php >$config = Freee\Accounting\Configuration::getDefaultConfiguration()->setAccessToken($token);
php >$partnersApiInstance = new Freee\Accounting\Api\PartnersApi(null, $config);
php >echo $partnersApiInstance->getPartners($cid);
```

### SDKの導入方法

[](#sdkの導入方法)

この項では、本 SDK の導入の参考として、 Laravel で利用する方法を記述します。

まず、 Laravel のプロジェクトを新規作成します。既存のプロジェクトに導入する場合は、読み飛ばしてください。まず、Laravel のプロジェクトを作成するため、`laravel` コマンドを [Installing Laravel](https://laravel.com/docs/7.x#installing-laravel) を参考にインストールします。なお、前述の Dockerfile を利用する場合は、すでにインストール済みです。

```
# Laravel のプロジェクトを新規作成し、そのディレクトリに移動する
laravel new sampleapp
cd sampleapp

# 確認のため、Laravel の内蔵サーバーを実行する
php artisan serve

# ※ Docker で動かしている場合は、下記のように host を指定する
php artisan serve --host 0.0.0.0

# 内蔵サーバーを停止するには、 Ctrl + c を押下します
```

`.env` に下記を追加し、[WebApp のサンプルの実行手順](#webapp-%E3%81%AE%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AE%E5%AE%9F%E8%A1%8C%E6%89%8B%E9%A0%86) に倣い ``, `` を設定してください。

```
FREEE_ACCOUNTING_CLIENT_ID=
FREEE_ACCOUNTING_CLIENT_SECRET=
```

つぎに、データベースの設定を sqlite に変更します。 `.env` を下記のように編集します。 `DB_DATABASE` はプロジェクト内の `database/database.sqlite` への絶対パスを設定します。適宜調整してください。

```
#DB_CONNECTION=mysql
DB_CONNECTION=sqlite
...
#DB_DATABASE=laravel
DB_DATABASE=/usr/src/app/database/database.sqlite

```

つぎに、sqlite ファイルを作成し、マイグレーションを実行します。

```
# 自動作成されたマイグレーションファイルを削除する
rm database/migrations/2014_10_12_000000_create_users_table.php
# マイグレーションを作成する
php artisan make:migration create_users_table --create=users
```

作成したマイグレーションファイルを下記のように編集します。

```
        Schema::create('users', function (Blueprint $table) {
            $table->bigIncrements('id');
            // ↓↓ ここから ↓↓
            $table->unsignedBigInteger('freee_id')->unique();
            $table->string('name');
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('first_name')->nullable();
            $table->string('last_name')->nullable();
            $table->string('token')->nullable();
            $table->rememberToken();
            // ↑↑ ここまで編集 ↑↑
            $table->timestamps();
        });
```

```
# sqlite ファイルを作成し、マイグレーションを実行する
touch database/database.sqlite
php artisan migrate
```

`app/User.php` を編集します。

```
    protected $fillable = [
        // ↓↓ ここから ↓↓
        // 'name', 'email', 'password',
        'name', 'email', 'freee_id', 'first_name', 'last_name', 'token'
        // ↑↑ ここまで編集 ↑↑
    ];
```

プロジェクトの準備ができたら、パッケージのインストールを行います。本SDK のコアである会計freee APIは OAuth2 による認証を行うため、 Laravel オフィシャルパッケージである [Socialite](https://socialiteproviders.netlify.com/) も利用します。

- `freee/freee-accounting-sdk`: 本SDK
- `socialiteproviders/generators`: Socialite のカスタムプロバイダのベースコードを生成するためのパッケージ（参考: )
- `socialiteproviders/manager`: Socialite のカスタムプロバイダを扱うためのパッケージ

```
composer require freee/freee-accounting-sdk
composer require socialiteproviders/generators
composer require socialiteproviders/manager
```

そして `config/app.php` の `providers` に、下記を参考にプロバイダを追記します。

```
    'providers' => [
        // ... 中略 ...
        SocialiteProviders\Generators\GeneratorsServiceProvider::class,
        SocialiteProviders\Manager\ServiceProvider::class,
        // ... 中略 ...
    ],
```

`socialiteproviders/generators` の artisan コマンドを利用して、ベースコードを作成します。

```
# freee の OAuth2 認証を処理するコードを作成する
php artisan make:socialite FreeeAccounting --spec=oauth2 --authorize_url=https://accounts.secure.freee.co.jp/public_api/authorize --access_token_url=https://accounts.secure.freee.co.jp/public_api/token --user_details_url=https://api.freee.co.jp/api/1/users/me

# 作成したファイルを読み込む
composer dumpautoload
```

つぎに、認証用の画面を用意します。今回は `laravel/ui` を導入し、その画面を流用します。詳細は [Authentication - Laravel - The PHP Framework For Web Artisans](https://laravel.com/docs/7.x/authentication#authentication-quickstart) をご参照ください。

```
composer require laravel/ui
php artisan ui vue --auth
npm install && npm run dev
```

この時点で、 `routes/web.php` には `Auth::routes();` が追加され、認証周りのルーティングが設定されています。今回は、新規登録とパスワードリセットを利用しないので、下記のように編集します。

```
// Auth::routes();
Auth::routes([
    'register' => false,
    'reset' => false,
]);
```

これまでの操作で、Laravel の内部でユーザーデータを持つ認証機構のベースができました。しかし、会計freee APIでは、freee に認証・認可を問い合わせる造りになるため、さらに変更を加えます。

まず、 `routes/web.php` に下記のルーティングを追加します。

```
Route::get('login', 'Auth\LoginController@redirectToProvider')->name('login');
Route::get('auth-callback', 'Auth\LoginController@handleProviderCallback')->name('authCallback');
```

そして、設定値にも変更を加えます。まず、 `config/services.php` に下記を追加します。

```
