LoginSignup
6
1

More than 5 years have passed since last update.

MFクラウド請求書APIのPHPクライアントを作った

Last updated at Posted at 2017-10-21

概要

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との統合も簡単にできます。これが一番やりたかった。

config/app.php
'providers' => [
    // ...
    Traimmu\MfCloud\Invoice\Misc\ServiceProvider::class,
],

// ...
'aliases' => [
    // ...
    'Invoice' => Traimmu\MfCloud\Invoice\Misc\Facade::class,
],
config/services.php
// ...
'mfcloud' => [
    'secret' => env('MFCLOUD_INVOICE_API_TOKEN'),
],
tinker
>>> 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のクライアントを真似して作ったので、そのソースコードを読むのは良い勉強になりました。

またテストコードでモックやスタブを使ったことが無かったので、良い機会になりました。

ぜひぜひ使ってみて下さい。
気に入ったらスターお願いします。笑

6
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
1