LINE@ 公式ブログ にて、2019年春より新たな料金プランに切り替わっていくという告知がありました。ユーザにとって特に大きいのは『従量制の追加メッセージ料金』かと思います。
計算方法自体は難しいものではありませんが、個々で開発するのも面倒な話。
私が現在開発中のサービスで利用するために作ったライブラリをPackagistにて公開しましたので、LINE@と絡むBot・Webサービスを開発する際はどうぞご利用ください。
概要
- パッケージ名: fullkawa/line-at-cost
- LINE@の月額利用料金(税別)を計算します。
- 年間利用料(すなわち、プレミアムID)は含まれません。
インストール方法
composer require fullkawa/line-at-cost
使い方
2018年12月現在の料金体系の場合
use LineAtCost\PlanFactory;
use LineAtCost\Estimator;
$factory = new PlanFactory();
$plan_free = $factory->getInstance(1); // Free plan
$cost_free = Estimator::estimate($plan_free);
$this->assertEquals(0, $cost_free);
$plan_basic = $factory->getInstance(2); // Basic plan
$cost_basic = Estimator::estimate($plan_basic);
$this->assertEquals(5000, $cost_basic);
$plan_pro = $factory->getInstance(4); // Pro plan
$cost_pro = Estimator::estimate($plan_pro);
$this->assertEquals(30000, $cost_pro);
まあ、これくらいならわざわざライブラリを使う必要もないでしょうが。
2019年春以降の料金体系の場合
本命はこちらです。
メッセージ配信数(message_count)を渡すと、プランごとの月額利用料と追加メッセージ料金を足した金額を返します。もちろん、無料で利用できる分は差し引かれて計算されます。
use LineAtCost\PlanFactory;
use LineAtCost\Estimator;
$factory = new PlanFactory(PlanFactory::TARGET_2019);
$plan_free = $factory->getInstance(1); // Free plan
$usages_free = ['message_count' => 1000];
$cost_free = Estimator::estimate($plan_free, $usages_free);
$this->assertEquals(0, $cost_free);
$plan_light = $factory->getInstance(2); // Light plan
$usages_light = ['message_count' => 16000];
$cost_light = Estimator::estimate($plan_light, $usages_light);
$this->assertEquals(10000, $cost_light);
$plan_standard = $factory->getInstance(3); // Standard plan
$usages_standard = ['message_count' => 145000];
$cost_standard = Estimator::estimate($plan_standard, $usages_standard);
$this->assertEquals(305000, $cost_standard);
その他の使い方
このように、料金体系をまたいで使うこともできます。
use LineAtCost\PlanFactory;
use LineAtCost\Estimator;
$factory = new PlanFactory(PlanFactory::TARGET_ALL);
$plan_2016free = $factory->getInstance(PlanFactory::PLAN2016FREE_ID);
$cost_2016free = Estimator::estimate($plan_2016free);
$this->assertEquals(0, $cost_2016free);
$plan_2019light = $factory->getInstance(PlanFactory::PLAN2019LIGHT_ID);
$usages_2019light = ['message_count' => 16000];
$cost_2019light = Estimator::estimate($plan_2019light, $usages_2019light);
$this->assertEquals(10000, $cost_2019light);
利用できる定数の一覧
class PlanFactory
{
const TARGET_ALL = 0;
/**
* 2016年6月からの料金プランのみ
* @var integer
*/
const TARGET_2016 = 10;
const PLAN2016FREE_ID = 11; // フリー
const PLAN2016BASIC_ID = 12; // ベーシック
const PLAN2016PRO_ID = 13; // プロ(月額21,600円(税込))
const PLAN2016PRO2_ID = 14; // プロ(月額32,400円(税込))
const PLAN2016DEVELOPER_ID = 19; // Developer Trial
/**
* 2019年春からの料金プランのみ
* @var integer
*/
const TARGET_2019 = 20;
const PLAN2019FREE_ID = 21; // フリー
const PLAN2019LIGHT_ID = 22; // ライト
const PLAN2019STANDARD_ID = 23; // スタンダード