Help us understand the problem. What is going on with this article?

LINE@料金計算パッケージを公開しました

More than 1 year has passed since last update.

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; // スタンダード
fullkawa
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away