IBM Cloud PublicのAPI Connectで課金機能を使ってみる


## やりたいこと
API Connectでは決済サービスである[Stripe](https://stripe.com/jp)と連携する課金機能が提供されています。その機能を使って、課金プランの設定と、支払いがどのように行われるのかを、確認してみたいと思います。

## 前提事項
今回の環境は、IBM Cloud Public版のAPI Connectを利用しています。（2018年3月28日時点）
IBM Cloud Public版のAPI Connectを利用する場合、Enterprise Editionでなければ課金機能を利用することができないのでご注意ください。
また、API Connectのバージョンが異なる場合やテストする時期によっては、当記事の内容との差分が発生する可能性がありますので、あらかじめご了承ください。

## 参考マニュアル
+ [IBM API Connect v5.0 Knowledge Center : 製品の使用に対する請求](https://www.ibm.com/support/knowledgecenter/ja/SSFS6T/com.ibm.apic.apionprem.doc/capim_product_billing.html#capim_product_billing)
+ [IBM API Connect v5.0 Knowledge Center : [チュートリアル] 価格設定を伴うプランのサブスクライブ](https://www.ibm.com/support/knowledgecenter/ja/SSFS6T/com.ibm.apic.devportal.doc/tutorial_portal_sub_paid_plan.html#tutorial_portal_sub_paid_plan)


## 手順

### Stripeのアカウント作成
[Stripeアカウントの作成サイト](https://dashboard.stripe.com/register)で、メールアドレス、名前、パスワードなどを入力して、アカウントを作成します。
![Kobito.kcNU8t.png](https://qiita-image-store.s3.amazonaws.com/0/122053/789f54f8-f806-2329-51bf-4da8a76fbe24.png "Kobito.kcNU8t.png")

携帯電話のリカバリ番号の登録画面では、とりあえずスキップしておきました。
![Kobito.IPvOzz.png](https://qiita-image-store.s3.amazonaws.com/0/122053/c50b0dfa-84df-356d-6779-4b0d0aa2f59a.png "Kobito.IPvOzz.png")

Stripeのトップページが表示されました。
![Kobito.j66msM.png](https://qiita-image-store.s3.amazonaws.com/0/122053/7b31e1d6-9274-ade6-b187-8b9689d3f08f.png "Kobito.j66msM.png")

左上の「名称未設定のアカウント」をクリックし、「新規アカウント」選択して、アカウントを新規に登録します。
![Kobito.BFwfMc.png](https://qiita-image-store.s3.amazonaws.com/0/122053/3e763481-3fe3-a792-fc82-214d5d68b336.png "Kobito.BFwfMc.png")

![Kobito.ZlEDK1.png](https://qiita-image-store.s3.amazonaws.com/0/122053/71d6e9a1-8470-98ba-4571-818f907f1f75.png "Kobito.ZlEDK1.png")

左側メニューから「開発者」を展開して「APIキー」を選択し、公開キーとシークレットキーを取得します。
![Kobito.hE56hu.png](https://qiita-image-store.s3.amazonaws.com/0/122053/675fb505-e11f-460d-cfe3-d6f3fcaebcf8.png "Kobito.hE56hu.png")

### API ConnectでのStripeとの連携の設定
APIマネージャーのメニューから、「管理」を開き、「請求」タブで「追加」ボタンから「Stripe統合」を選択します。
![Kobito.mepvuz.png](https://qiita-image-store.s3.amazonaws.com/0/122053/b55c5e25-1a48-a5cb-5217-73ddb337ce78.png "Kobito.mepvuz.png")

![Kobito.AYEMOm.png](https://qiita-image-store.s3.amazonaws.com/0/122053/3e4e5e82-4b7b-967a-7a92-eeead1335af6.png "Kobito.AYEMOm.png")

![Kobito.4vrXIg.png](https://qiita-image-store.s3.amazonaws.com/0/122053/1b007017-0645-bf57-d2f3-8d31b3511892.png "Kobito.4vrXIg.png")

Stripeで取得した、公開鍵と秘密鍵を入力して「作成」をクリックします。
![Kobito.VboViV.png](https://qiita-image-store.s3.amazonaws.com/0/122053/f8afaad1-9105-3622-c2ec-75d6d3982f5a.png "Kobito.VboViV.png")

接続済みの状態でStripeとの連携設定が完了します。
![Kobito.en1ONC.png](https://qiita-image-store.s3.amazonaws.com/0/122053/fa4ae41a-9207-4fb1-64b3-7a107a1475ec.png "Kobito.en1ONC.png")

### API Connectでのカタログの設定

API製品を公開するカタログの設定で、「開発モード」をオフにしておきます。課金設定をしたプランが含まれる製品は、「開発モード」がオンのカタログには公開できない仕様となっているためです。
APIマネージャーのメニューから「ダッシュボード」を選択し、公開先のカタログ（今回の場合はサンドボックス）を選択します。
「設定」タブで「開発モード」をオフにして、保存します。

![Kobito.mepvuz.png](https://qiita-image-store.s3.amazonaws.com/0/122053/b55c5e25-1a48-a5cb-5217-73ddb337ce78.png "Kobito.mepvuz.png")

![Kobito.Oqok3s.png](https://qiita-image-store.s3.amazonaws.com/0/122053/eeca8ab9-879c-d289-8524-5a75b3980791.png "Kobito.Oqok3s.png")

![Kobito.VOc5TG.png](https://qiita-image-store.s3.amazonaws.com/0/122053/03e9c2db-00a9-95ab-2824-cd44d05f6341.png "Kobito.VOc5TG.png")

### API Connectでの課金プランの設定と公開
		
新規製品を作成して、APIを追加して、課金設定されたプランを作ります。今回は課金機能のテストなので、APIはダミーのAPI定義でも構いません。
![Kobito.ybKyKT.png](https://qiita-image-store.s3.amazonaws.com/0/122053/8bf5a241-a255-1230-7f94-323ece600e6a.png "Kobito.ybKyKT.png")


製品をステージングして公開します。

### API Connectでテスト用の開発者組織の追加
支払いのテストを行うために、お金を支払うテスト用のユーザーを開発者組織のオーナーとして登録します。
APIマネージャーの対象のカタログの「コミュニティー」タブから、「追加」をクリックして、開発者組織を追加します。
![Kobito.mYUVE6.png](https://qiita-image-store.s3.amazonaws.com/0/122053/e0b18f88-18b7-e06e-7974-76628f529b1f.png "Kobito.mYUVE6.png")

開発者組織の名前をつけて、新規ユーザーを登録します。ここで指定するメールアドレスはテスト用なので、自分でメールが確認可能なメールアドレスとしてください。

開発者組織を追加すると指定したメールアドレス宛にアクティベーションリンクが届くので、リンクをクリックして、パスワード設定などを行い、アカウントを有効化します。

### 開発者ポータルでテスト用クレジットカードを利用した支払いのテスト
テスト用クレジットカードを利用した支払いのテストを行います。
前の手順で追加した開発者組織のユーザーで開発者ポータルにログインします。
ポータル右上のアカウント名をクリックして、「自分の組織」をクリックします。
![Kobito.SYfkFJ.png](https://qiita-image-store.s3.amazonaws.com/0/122053/60cd7cd7-f6c1-262d-6abb-c427f0dc7d81.png "Kobito.SYfkFJ.png")

「Billing」タブに移動し、「更新」ボタンをクリックして、メールアドレスや氏名、住所などを入力して、「決済情報入力へ」をクリックします。
<注意>ここで、氏名、住所などにはダブルバイト文字を入力しないようにしてください。製品の問題で保存ができない可能性があります。
![Kobito.u9RocM.png](https://qiita-image-store.s3.amazonaws.com/0/122053/41df531b-9957-60ce-adce-3623e737fbe3.png "Kobito.u9RocM.png")

![Kobito.y8BzSC.png](https://qiita-image-store.s3.amazonaws.com/0/122053/392f092f-34df-dd4b-424c-d53cf933db3a.png "Kobito.y8BzSC.png")

[Stripeで用意されているテスト用のクレジットカード情報](https://stripe.com/docs/testing#cards)から、VISA、Master、AMEXのいずれかのカード情報を入力して、「Update Billing Details」をクリックします。カード番号以外の項目はテストの場合、任意の値で問題ありません。
![Kobito.r62Bwz.png](https://qiita-image-store.s3.amazonaws.com/0/122053/6cd57985-2015-1128-b8f9-0b42d71dba76.png "Kobito.r62Bwz.png")

支払いのテストを行います。
「アプリケーション」タブに移動し、新規アプリケーションを登録します。

「API製品」タブに移動し、課金プランを設定した製品を選択します。
設定した課金プランが表示されるので、「配信登録」をクリックします。表示された画面で登録したアプリケーションにチェックを入れて「配信登録」をクリックします。
![Kobito.ZLbDQc.png](https://qiita-image-store.s3.amazonaws.com/0/122053/6fc2375f-d888-cb95-5f9e-4ce08a726ae1.png "Kobito.ZLbDQc.png")

![Kobito.r9y6ZE.png](https://qiita-image-store.s3.amazonaws.com/0/122053/e0039a69-9d30-7480-0817-09d5c3d683e9.png "Kobito.r9y6ZE.png")

これでテスト用クレジットカードでの支払いが行われたはずです。

今回は、無料期間を指定していないので、配信登録するとすぐに支払いが行われます。以降毎月1回支払いが行われます。支払いを止める場合は、プランの登録解除を行う必要があります。

### Stripe側で支払い状況を確認
Stripeで支払い情報を確認します。[Stripeのダッシュボード](https://dashboard.stripe.com/)の左側のメニューで「支払い」をクリックすると支払いが行われていることが確認できます。
![Kobito.Uo2fvW.png](https://qiita-image-store.s3.amazonaws.com/0/122053/c31bcde6-88d4-1760-1220-cf1379e95c9b.png "Kobito.Uo2fvW.png")



以上、API ConnectのStripeと連携した課金機能を使ってみました。テスト用のクレジットカードが用意されているので、安心してテストすることができます。
ぜひ試してみてください。