この記事は社内ブログを外部向けに書き換えたものです
多くのWebサービスには有料プランの契約機能があり、そこでクライアントとクレジットカード情報のやりとりをします。ここで、安全にクレジットカードの情報をやりとりするにはどうすればいいでしょうか?
ここでは、Webサービスでクレジットカードを利用する際に使用するOmiseサービスについて説明します
Omiseサービスについて
Omiseの概要
ECサイトやウェブサービスのサーバで直接クレジットカード情報を取り扱うと、情報漏洩時のリスクが増大してしまいます。
ここではOmiseというサービスを用い、直接クレジットカード情報に触れずにカード情報を取り扱うことでこの問題を解決します。
PHP製WebサービスでOmiseを利用するには、Omise.js(クライアントサイド)とOmise-PHP(サーバーサイド)を使用します。
Omiseを用いた決済処理の流れ
Omise.jsで用意される、クレジットカード情報入力フォームに情報を入力させ、Omise.jsがこれをもとにOmiseサーバと通信し、トークンを取得します。Webサーバ側では、このトークンとOmise-PHPを利用して、OmiseサーバとREST通信を行います。これにより、安全に決済の処理を実行することができます。
図1 Omiseを用いた決済のフロー
使用するライブラリについて
-
Omise.jsは、クレジットカード入力フォームや、そのフォーム送信により取得したトークンの提供などをします
-
Omiseサーバとの通信にはREST通信を用いますが、Omise-PHPを用いることによって、これを簡単に行うことができるようになります。
Omise-PHPの構造について
Omise-PHPライブラリの構成を見ると、面白い構造になっていることに気がつくと思います。ここではOmise-PHPのクラス構成について説明します。
ライブラリ内にはOmiseAccount, OmiseCharge, OmiseCustomerなど"Omise~"で始まるクラスが幾つかありますが、これらはそれぞれOmiseで操作できる物(アカウント、課金、スケジュールなど)にそのまま対応しており、基本的にはこれらのクラスの静的メソッドを呼び出してAPIを利用します。これらのオブジェクトには、以下のように検索、作成などの共通のオペレーションを使うことができます。
OmiseAccout::retrive(); //サーバー管理者のOmiseアカウント情報の取得
OmiseCharge::retrive(); //課金リストの取得
OmiseSchedule::retrieve(); //全てのスケジュールのリストを取得
Omise-PHPのAPIの例を幾つか説明します。
OmiseAccount
サーバー管理者のOmiseアカウントを表現するオブジェクトです。
OmiseAccount::retrive(); //課金リストの取得
OmiseCharge
クレジットカードへ課金をするためのAPIです。
//課金リストの取得
OmiseCharge::retrive();
//トークンを使い、新しい課金を作成する
OmiseCharge::create(array(
'amount' => 100000,
'currency' => 'thb',
'card' => 'tokn_test_4xs9408a642a1htto8z'
));
//課金情報の取得
OmiseCharge::retrieve("chrg_test_4xso2s8ivdej29pqnhz");
//定期課金を作成
OmiseCharge::schedule(array(
'customer' => 'cust_test_58e7b94d2wfmfn6p2x1',
'card' => 'card_test_58eeofcdwl5clmhtyf0',
'amount' => 100000,
'description' => 'Membership fee'
));
詳細は、公式リファレンスをご覧ください。