決済 API Komoju を使って決済してみる
Tweetこの記事は Payment Advent Calendar 2015 の 17 日目です。
今日は弊社 Degica で開発している Komoju という決済 API とその使い方を紹介します。
Komoju とは
Komoju は複数の支払い方法に対応している決済ゲートウェイサービスです。
現時点で対応している支払い方法は全部で 5 種類です。
使い方にもいくつかの方法がありますが、この記事では REST API を使った決済を試してみます。
API ドキュメント
この記事では紹介しきれない機能もあるので、知りたい方はAPIドキュメントを参照してください。
アカウント作成
まず、サインアップのページでテスト用のアカウントを作りましょう。
準備
API キーの確認
API を実行するには API キーが必要です。ログインして、「クライアントアカウント」のページから「Secret キー」を確認してください
Webhookの作成
Komoju は決済に関するステータスの変化が発生したときに Webhook を指定した URL に送信します。今回は Webhook の中身だけ確認できればよいので、 RequestBin を使います。 「クライアントアカウント」→「Webhook」→「新規WEBHOOK」に移動して Webhook を作成します。
まず、requestb.in の URL を設定して、シークレットキーを適当に入力してください。このシークレットキーは Webhook の送信者が Komoju であることを証明するものなので、今回は適当でよいです。
受信したい webhook イベントの種類を選べるので、今回はとりあえず payment.*
を全部有効にします。
API の実行
以上でセットアップは完了です。さっそく curl
を使って API を実行してみましょう
クレジットカード決済を実施する
[your secret key]
には先程確認した「Secret キー」を使ってください
curl -u [your secret key]: -XPOST https://sandbox.komoju.jp/api/v1/payments \
-d "amount=1000" \
-d "currency=JPY" \
-d "payment_details[type]=credit_card" \
-d "payment_details[family_name]=Yamada" \
-d "payment_details[given_name]=Taro" \
-d "payment_details[month]=01" \
-d "payment_details[year]=2016" \
-d "payment_details[number]=4111111111111111" \
-d "payment_details[verification_value]=123"
amount
と currency
はすべての支払い方法で共通のパラメータで支払方法ごとに固有のパラメータは payment_details
オブジェクトの中に入れます。
今回はクレジットカードの支払いなので payment_details[type]
に credit_card
を設定しています。
パラメータに関する詳しい情報はドキュメントの Create Payment API と ペイメントの詳細 を参照してください。
さて、上記の curl
コマンドを実行すると、次のようなレスポンスが返ってきます。(jq
で整形してます)
{
"id": "29ttr6noadghk5uysfdj1ierw",
"resource": "payment",
"status": "captured",
"amount": 1000,
"tax": 80,
"customer": null,
"payment_deadline": null,
"payment_details": {
"type": "credit_card",
"email": null,
"brand": "visa",
"last_four_digits": "1111",
"month": 1,
"year": 2016
},
"payment_method_fee": 0,
"total": 1080,
"currency": "JPY",
"description": null,
"subscription": null,
"captured_at": "2015-12-17T02:33:37Z",
"external_order_num": null,
"metadata": {},
"created_at": "2015-12-17T02:33:37Z",
"amount_refunded": 0,
"refunds": []
}
決済の確認
管理画面の 取引ページ に行くと、先ほど実行した決済が作成されていることが確認できます。
また、この情報はList Payments APIで JSON データを取得することもできます。
$ curl -u [your secret key]: https://sandbox.komoju.jp/api/v1/payments | jq .
{
"resource": "list",
"total": 1,
"page": 1,
"per_page": 30,
"last_page": 1,
"data": [
{
"id": "29ttr6noadghk5uysfdj1ierw",
"resource": "payment",
"status": "captured",
"amount": 1000,
"tax": 80,
"customer": null,
"payment_deadline": null,
"payment_details": {
"type": "credit_card",
"email": null,
"brand": "visa",
"last_four_digits": "1111",
"month": 1,
"year": 2016
},
"payment_method_fee": 0,
"total": 1080,
"currency": "JPY",
"description": null,
"subscription": null,
"captured_at": "2015-12-17T02:33:37Z",
"external_order_num": null,
"metadata": {},
"created_at": "2015-12-17T02:33:37Z",
"amount_refunded": 0,
"refunds": []
}
]
}
Webhook の確認
先ほど設定した requestb.in に行って確認してみると、次のような Webhook が送信されていることが確認できます(jq
で整形してます)
ちなみに、この記事を書くのに使ったrequestb.inは http://requestb.in/120sewg1?inspect です。
{
"id": "3x2zofq2zwtv0woecshqokl4r",
"type": "payment.captured",
"resource": "event",
"data": {
"id": "29ttr6noadghk5uysfdj1ierw",
"resource": "payment",
"status": "captured",
"amount": 1000,
"tax": 80,
"customer": null,
"payment_deadline": null,
"payment_details": {
"type": "credit_card",
"email": null,
"brand": "visa",
"last_four_digits": "1111",
"month": 1,
"year": 2016
},
"payment_method_fee": 0,
"total": 1080,
"currency": "JPY",
"description": null,
"subscription": null,
"captured_at": "2015-12-17T02:33:37Z",
"external_order_num": null,
"metadata": {},
"created_at": "2015-12-17T02:33:37Z",
"amount_refunded": 0,
"refunds": []
},
"created_at": "2015-12-17T02:33:37Z"
}
その他の決済
payment_details
の中身を変更すると、クレジットカード以外の決済を実施できます。例えばコンビニ決済だと、次のようなリクエストになります。
curl -u [your secret key] -XPOST https://sandbox.komoju.jp/api/v1/payments \
-d "amount=1000" \
-d "currency=JPY" \
-d "payment_details[type]=konbini" \
-d "payment_details[email]=test@example.com" \
-d "payment_details[phone]=090-1111-2222" \
-d "payment_details[store]=lawson"
まとめ
Komoju API の始め方を簡単に紹介しました。 繰り返しになりますが詳細な情報については API ドキュメントを参照してください。
管理画面の右下にカスタマーサポートチャットがありますので、何か質問があればお気軽にお問い合わせください。
明日は弊社 Chris です。