PHPからStripeを利用する〜もっとも単純な課金処理の実装〜

Stripeを利用すると非常に簡単にサービスにクレジットカードによる決済機能を導入する事ができます。
 

Stripe は、あらゆる規模のビジネスに対応したオンライン・対面支払いの処理と金融のソリューションを提供しています。豊富な API とコード不要のツールで、決済の受け付け、入金、財務プロセスの自動化を行うことができます。

 

全てはトークンの取得から

Stripeによるクレジットカード決済では何よりも”トークン”を取得する事が重要となります。

サービス提供者側では直接クレジットカードの情報を取得・管理する必要はなく、Stripe側でそれらを全て管理してくれます。
その際、Stripeが取得したクレジットカード情報を操作する為に実用となるのがこの”トークン”となります。

単発の決済であれば決済する際にクレジットカード情報をStrip経由で取得し、その取得した”トークン”に対して課金処理を行う事で実現します。
一方で定期的な課金を行う場合、取得した”トークン”情報を”顧客(Customer)”に結びつけ、その”顧客(Customer)”に対して課金処理を行う事で実現する事ができます。

このように、Stripeでクレジットカード決済を実装する場合、何よりもこの”トークン”の取得と管理について理解する必要があります。

もっとも単純な課金処理の実装

PHPからStripeを利用するにあたり、もっとも単純な課金処理を実装します。

処理の全体の流れとしては以下のような流れとなります。

  1. 決済ボタンを配置し、トークンを取得する為のStripeのフォームを表示する。
  2. 表示されたStripeのフォーム上で顧客がクレジットカード情報を入力し情報を送信すると、予め設定されたフォーム経由で情報がプログラム(charge.php)に送信される。
  3. プログラム(charge.php)側ではフォーム経由で送信された内容からトークン情報を取得し、そのトークン情報に決済情報を付加して課金処理を実行する。

以上のような流れとなります。
 

実際の実装結果(動作)を確認する場合はコチラから確認できます
 

“トークン”を取得する為の決済ボタンの実装

トークンを取得する為の決済ボタンは、所定のスクリプトをリンクさせる事で簡単に実装する事が可能です。
もっとも単純な方法は次のようなコードとなります。
 

 
“Pay with Card”と表示されたボタンをクリックするとStripeのクレジットカード入力フォームが表示されます。
今回は最小限のオプションのみ指定している為かなり簡素な表示となっていますが、その他にもフォーム名や補足事項、ボタンの表示文言などは全てオプションで指定しカスタマイズする事が可能です。

“トークン”を受け取り課金処理を行うプログラム(charge.php)の実装

“トークン”を受け取り課金処理を行うプログラムも非常に簡単に実装できます。

実装にあたってはStripeが準備しているライブラリを利用する為、事前にcomposer等を利用して導入を行います。
なおcomposerで導入する場合は、例えば以下のようなコマンドで導入を行う事が可能です。
 

composer require stripe/stripe-php:4.*

 
実際の”charge.php”は次のようなコードとなります。
 

 
– 3行目でStripeのライブラリを参照
– 5行目のsetApiKeyではアカウントで確認できるSecretKey(原則TESTの方)を設定する
– 7行目でフォームから送信されるトークンを取得
– 15〜20行目で取得したトークンを利用し実際の課金処理を実行
– 29〜30行目で処理が正常に終了した場合、決済毎に割り振られる識別IDを表示して終了

以上の流れで課金処理を実現できます。

流れを追ってみるとわかるように、Stripeの画面で入力されたカード情報は実際には処理では一切使用していません。
便宜上フォームから引き渡されたパラメータとしてトークンのみ利用していますが、その他にも幾つか情報は引き渡されるものの、その中にもカード情報は原則含まれていません。
その為、昨今発生しているようなカード情報の漏洩などについても対処済みとなります。

但し、末尾4桁のみ取得する事は可能。
これは該当処理で使用されたカードを特定するなどに利用する為です。

間違ってはいけないのは、あくまでも課金処理が行われているのは”charge.php”内部での処理である為、Stripeのフォーム表示時に指定している”data-amount”パラメータと決済時に指定している”amount”パラメータが相違していても処理は正常に終了します。
その為金額を表示する場合は、双方の値が正しく表示されるように注意する必要があります。


このように非常に簡単に課金処理を実装する事ができます。

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください