PHP
JavaScript
omise

安全にクレジットカード処理を行うライブラリ、Omiseについて

この記事は社内ブログを外部向けに書き換えたものです

多くの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通信を行います。これにより、安全に決済の処理を実行することができます。

small_token@2x.jpg

図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'
)); 

詳細は、公式リファレンスをご覧ください。