〈 HULFT Square 技術コラム【つないでみた編】 〉

HULFT Square 技術コラム【つないでみた編】一覧

技術コラム一覧

Vol.20
Zuoraにつないでみた ~HULFT Squareでサブスクリプションビジネス~

はじめに

何かものを購入するというときに、「所有する」のではなく「一定の期間だけ借りる」という形にお金を払うことが一般的になってきました。「サブスクリプション」と言われる販売形式で、個人で購入できるものではNetflixなどが代表的なサービスです。Netflixは映画を「所有する」のではなく、映画を見る権利を「一定の期間だけ借りる」ことを顧客に提供しています。
この傾向はWebサービスの世界でも広まっていて、Office 365やAWSなどビジネスの世界でも一般的になっています。Office 365はMicrosoftのオフィス製品の利用権を、AWSはAmazonのサーバーリソースの利用権を、契約期間の間だけ顧客に提供しているサービスです。

この傾向に合わせて、自社で開発したWebサービスをサブスクリプションで販売しようとすると、価格設定と売上の集計を手組のシステムで実現することがハードルになります。下記にあげられるように、サブスクリプションでは価格や契約内容に変動要素が多いからです。

  • 柔軟に変更できる契約ライセンス数と契約期間
  • サービス解約に伴う手続き
  • 契約に追加するオプションや、サービス利用量に応じた従量課金への対応

今回はHULFT Squareでサブスクリプションビジネスを実現するために、上記の複雑な価格設定から売上の集計までを提供するクラウドサービスである「Zuora」と連携させてみたいと思います。Zuoraで集計された請求情報を会計システムやWeb決済代行サービスに渡す簡単な請求処理のフローを作ってみました。

Zuoraとは

Zuoraではサブスクリプション契約を実現するための機能を下記のようなカテゴライズで提供しています。

  • サブスクリプション契約メニューの管理と請求書の自動作成(Zuora Billing)
  • サブスクリプション契約に対応したSalesforceからの見積の作成(Zuora CPQ)
  • 発注書や請求書を取り込んでの収益報告レポートの作成(Zuora Revenue)
  • サブスクリプション契約で発生した売掛金の回収(Zuora Collect)
  • オリジナルのビジネスプロセスに対応するための独自ワークフローの開発(Zuora Central Platform)

今回はHULFT Square でサブスクリプションの課金システムを構築するために、Zuora の Billing機能を会計システムやWeb決済代行サービスと下図のように連携させます。

  • Zuora上で設定されたサブスクリプションの契約メニューを元にエンドユーザーがWebサービス上で契約をし、実際の利用量がZuoraに連携されます。
  • Zuoraが登録された契約内容から発生する費用を自動で計算して、請求情報を作成します。
  • Zuoraが売掛金の回収作業のトリガーをキックします。上図では、実際の回収作業は別のWeb決済代行サービスに委託しています。
  • ZuoraとWeb決済代行サービス・社内会計システムの間をHULFT Squareがデータ連携します。

検証内容

今回はHULFT Squareを活用して、以下の処理が実行できることを確認していきます。

  • Zuoraが算出した請求書の請求金額の取得(上図の④と⑤の操作に該当します)

右上アカウントメニューから「管理者」をクリックします。

「ユーザーの管理」をクリックします。
ユーザーの一覧が表示されるので、OAuthクライアントを追加したいユーザーをクリックします。ユーザー設定画面の下部に、下記のようなOAuthクライアントの作成場所がありますので、クライアント名を入力して「作成」をクリックします。

  • 「作成」をクリックするとクライアントIDとクライントシークレット(「クライアントの秘密」と表記されていますが…)が表示されます。後でHULFT Squareの設定で使用するので保存しておいてください。特にクライアントシークレットは後から確認ができませんのでご注意ください。

HULFT Square設定方法

ZuoraのOAuth認証に成功して、請求書の請求金額を取得するまでのスクリプトをHULFT Squareで作成してみましょう。
HULFT Squareは標準的なOAuth認証に対応していますが、ZuoraのOAuth認証に成功するためには、スクリプト内でアクセストークンを取得して適用する必要があります。

コネクション設定

コネクタの種類は「REST接続」を選択します。

名前:任意。今回は「REST接続_zuora_test」と入力しました。
ワークスペース:任意

URL:ZuoraのURLを入力します。利用可能なURLの一覧は下記ページをご確認ください。
https://www.zuora.com/developer/api-references/api/overview/#section/Introduction/Access-to-the-API

今回は試験用のURL「https://rest.sandbox.eu.zuora.com」を入力しています。

プロファイル:任意

コネクション設定ができましたら、スクリプトの作成に入ります。
今回作成するスクリプトは、下記のようなスクリプトになります。

  • 「create_access_token」でZuoraのOAutn認証に成功するためのアクセストークンを取得
  • 「get_invoice」でZuoraの請求書データを取得

create_access_tokenの設定方法

Zuoraのアクセストークンを取得するために、以下のスクリプト変数を新規に作成します。

  • client_id

初期値:Zuoraのユーザー設定で確認したクライアントIDを入力します。

  • client_secret

初期値:Zuoraのユーザー設定で確認したクライアントシークレットを入力します。

  • grant_type

初期値:「client_credentials」と入力します。

  • access_token

初期値:入力しません。後でスクリプトで取得した値を代入します。

  • invoice_id
  • このスクリプト変数は「get_invoice」でどの請求書を取得するかを指定するために使用します。

初期値:任意。試験用に、Zuoraの特定の請求書番号を入力してみてください。

変数の準備が終わりましたら、HTTPリクエストの設定をしていきます。
キャンバス右側の「ツールパレット」から「ネットワーク」>「REST」>「POST実行」を選択してキャンバス内にドラッグします。

必須設定タブ

  • 名前:任意。今回は「create_access_token」と入力しています。
  • 接続先:コネクション設定で作成した設定を選択します。
  • パス:oauth/token
    OAuthのアクセストークンを発行するためのパスになります。
    このパスの詳細については下記ページをご確認ください。
    https://www.zuora.com/developer/api-references/api/operation/createToken/
  • エンコード:UTF-8

リクエスト設定タブ

  • データ入力元:データ
  • データ形式:フォーム
  • フォーム設定:client_id,client_secret,grant_typeを追加

レスポンス設定タブ

  • データ形式:JSON

出力スキーマに設定するJSONファイルは、下記ページのResponse Samplesからコピーして作成してください。
https://www.zuora.com/developer/api-references/api/operation/createToken/

ここまで作成したら、「完了」をクリックして「create_access_token」の設定を終えます。

次に、「create_access_token」の前に配置するmappingの設定を作成します。

「ツールパレット」の「変換」>「基本」>「マッピング」を「craete_access_token」の前に配置してください。
マッピング設定は下記のようになります。

スクリプト変数として準備していた「client_id」「client_secret」「grant_type」を「create_access_token」のリクエストデータとしてマッピングしています。

さらに、「create_access_token」で取得したアクセストークンの値をスクリプト変数「access_token」に保存するために「ツールパレット」の「基本」>「処理」>「変数代入」を選択して「create_access_token」の後ろに配置してください。

変数代入の設定は下記のようになります。

「create_access_token」が取得した「access_token」の値をスクリプト変数の「access_token」に連携しています。

最後に、「get_invoice」を作成していきます。
キャンバス右側の「ツールパレット」から「ネットワーク」>「REST」>「GET実行」を選択してキャンバス内にドラッグします。

必須設定タブ

名前:任意。今回は「get_invoice」と入力しています。

  • 接続先:コネクション設定で作成した設定を選択します。
  • パス:/v2/invoices/${invoice_id}
    事前に作成していたスクリプト変数「invoice_id」の値がパスとして入力されます。
    このパスに対してGETリクエストすることで、指定した請求書番号のデータがJSON形式で返され、請求金額もその中に含まれます。
    このパスの詳細については下記ページをご確認ください。
    https://www.zuora.com/developer/api-references/quickstart-api/operation/getInvoice/
  • エンコード:UTF-8

レスポンス設定タブ

  • データ出力先:ファイル。今回はHULFT Squareのストレージ上に請求書のデータファイルをそのまま生成します。

ヘッダ設定タブ

  • リクエストヘッダ:「Authorization」ヘッダとして値「Bearer ${access_token}」を追加します。「create_access_token」で取得してスクリプト変数「access_token」に保存した値がここで使用されます。

以上で、下記スクリプトが完成しているはずです。
実行して、「invoice_id」で指定した請求書番号の請求書データがHULFT Squareのストレージ上に生成されることを確認してみましょう。

おわりに

今回はZuoraで算出された請求金額を取得する方法をご紹介しました。
Zuoraでは他操作もAPI上で受け付けており、公式のAPIリファレンスはこちらになります。
https://www.zuora.com/developer/api-references/api/overview/
また、主なAPIの利用例の一覧も同ページで紹介されています。
https://www.zuora.com/developer/quickstart-api/tutorial/create-products-and-prices/

本記事がサブスクリプションビジネスのための HULFT Square 活用の一助になりましたら幸いです。

HULFT Square 技術コラム【つないでみた編】一覧

技術コラム一覧

Change Location

Are you visiting HULFT.com (Japanese language) outside Japan ?
When connecting "HULFT" to Japan from overseas, please select "HULFT8".

日本国外からHULFT.com(日本語)にアクセスされようとしています。
海外から日本の「HULFT」と接続する製品をお探しの場合、「HULFT8」をお選びください。