4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

LINEBot&ClovaAdvent Calendar 2018

Day 24

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

Posted at

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; // スタンダード
4
0
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
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?