概要
MFクラウド請求書APIのPHPクライアントを作りました。
動機は、Rubyのクライアントはマネーフォワードの方が公式で作られているものがあったのですが、PHP版は無かったためです。
MFクラウド請求書とは
クラウドで請求書を発行できるサービスです。超便利です。
APIがベータ版なものの、非常に充実しているので是非使って下さい。
APIから郵送できるとは便利な世の中になったものです。
使い方
導入
composerでさくっと入ります。
composer require traimmu/mf-cloud-invoice
基本的な動作
こんな感じで使います。
<?php
use Traimmu\MfCloud\Invoice\Client;
$client = new Client('YOUR_ACCESS_TOKEN');
$client->billings()->all();
// => 請求書一覧が取得できる
$office = $client->office();
// => 自社情報のクラスのインスタンスが返ってくる
echo $office->name;
// => '株式会社Traimmu'
// 自社の情報をアップデートする
$office->update([
'name' => 'section9',
'zip' => '101-1111',
]);
echo $office->name;
// => 'section9'
現在、下記のメソッドが用意されています。
- first()
- find(id)
- all()
- create(params)
- update(params)
- delete()
特に難しいところは無いと思います。
用語・エンティティ
意味 | 取得方法 |
---|---|
自社 | $client->office() |
取引先 | $client->partners()->all() |
請求書 | $client->billings()->all() |
品目 | $client->items()->all() |
Laravelとの統合
Laravelとの統合も簡単にできます。これが一番やりたかった。
'providers' => [
// ...
Traimmu\MfCloud\Invoice\Misc\ServiceProvider::class,
],
// ...
'aliases' => [
// ...
'Invoice' => Traimmu\MfCloud\Invoice\Misc\Facade::class,
],
// ...
'mfcloud' => [
'secret' => env('MFCLOUD_INVOICE_API_TOKEN'),
],
>>> Invoice::partners()->find('0293i4ownw012')
工夫したところ
$client->partners->all()
は、Laravelでおなじみの Illuminate\Support\Collection
を返します。
コレクションの中身には、 Traimmu\MfCloud\Invoice\Models\Partner
が入っています。
なので、こんな感じに使えます。
<?php
// 1つ以上の部署を持つ取引先を取得
$client->partners()->all()->filter(function ($partner) {
return count($partner->departments) > 0;
});
勉強になったこと
マネーフォワードの方が作ったRubyのクライアントを真似して作ったので、そのソースコードを読むのは良い勉強になりました。
またテストコードでモックやスタブを使ったことが無かったので、良い機会になりました。
ぜひぜひ使ってみて下さい。
気に入ったらスターお願いします。笑