PHPでStripeを実装する

PHP

ここ数年でこれまでと違った新しい決済サービスが出てきた。その代表例が注目のStripe

決済手数料は決して安いものではないが、高いセキュリティーの元、比較的簡単な設定で実装することが出来るのが特徴。

Stripeから提供される支払いフォームを使う「Checkout」と、Stripeから提供されるUIを使って自分でカード情報入力フォームを作る「Elements」の2種類。

今回は、簡単に実装できる「Checkout」の実装を順を追って説明します。

APIキーの取得

事前にSrtipeのアカウントを取得し、公開可能キーとシークレットキーで構成されるAPIキー(テストと本番用があるので適宜入れ替え)を準備しておく。

StripeDashboard

Stripe API ライブラリのインストール

APIライブラリのインストール方法は以下の2通り。

使用するプログラミング言語ごとにライブラリが用意されているので、使用言語に合わせたライブラリをインストールする。公式ドキュメント(API Libraries)

Composerでインストール

この方法を使うには事前にComposerをインストールしておく。Composerを導入したら、composer.jsonファイル(なければ作成する)にStripeのAPIライブラリを記載する。

{  "require": {
    "stripe/stripe-php": "6.*"
  }
}

composer.jsonを用意したら、ターミナルから以下コマンドを実行。

composer require stripe/stripe-php

PHPで読み込む。

require_once('/vendor/autoload.php');

手動でライブラリをアップロードする

最新版のAPIライブラリをダウンロード
フォルダ名をstripe-phpにして、FTPなどで稼働ディレクトリにアップロード。

PHPで読み込む。

require_once('/stripe-php/init.php');

 

オンライン決済Stripe Checkoutの使い方

前述の通りAPIキーは事前に取得。なお、本番モードではSSL化が必須(HTTPS)だがテストモードでは非SSL(HTTP)でも問題ない。

payment.php

<?php
// Stripeライブラリをロード
require_once('stripe-php/init.php');
// Secret API keyをセット
\Stripe\Stripe::setApiKey("sk_test_code");
$s=\Stripe\Checkout\Session::create([
'success_url' => 'https://example.com/success.php',
'cancel_url' => 'https://example.com/cancel.php',
'payment_method_types' => ['card'],
'line_items' => [[
'amount' => 500,
'currency' => 'usd',
'name' => 'sample商品',
'description' => 'Stripeのお試し',
'quantity' => 1,
]]
]);
$id=$s['id'];
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="https://js.stripe.com/v3/"></script>
</head>
<body>
<script>

以下、コードに関するワンポイント

Stripeライブラリのロード

Conponserでインストールした場合

require_once('/path/to/vendor/autoload.php');

手動でアップロードした場合

require_once('/stripe-php/init.php');

Checkout Session の作成

// Secret API keyをセット
\Stripe\Stripe::setApiKey("sk_test_code");
$s=\Stripe\Checkout\Session::create([
'success_url' => 'https://example.com/success.php',
'cancel_url' => 'https://example.com/cancel.php',
'payment_method_types' => ['card'],
'line_items' => [[
'amount' => 1500,
'currency' => 'usd',
'name' => 'サンプル商品',
'description' => 'Stripeテスト決済',
'quantity' => 1,
]]
]);

success_url : 支払いが成功した後に遷移するページ
cancel_url : キャンセルが行われた後に遷移するページ (必要に応じてキャンセルボタンを置く?)

"customer_email" パラメータをセットすると、支払いフォームのメールアドレスフィールドに自動的に入力される。Session に設定できるのパラメータ一覧

Checkout (支払いフォーム)設置

https://js.stripe.com から読み込み

<script src="https://js.stripe.com/v3/"></script>

必要に応じてIDを与える

stripe.redirectToCheckout({
  sessionId: '<?=$id?>'
}).then(function (result) {
     // エラー処理
     // `result.error.message`を使うと、ブラウザの言語に合わせたエラーメッセージを表示することができる
});

実際に、payment.phpにアクセスしてみる。

Stripe側が用意しているテストカード番号(といっても各カード会社が各々用意しているテスト決済用カード番号)を使い動作確認が出来る。テストカード一覧

3D Secure用のテストカード番号「4000 0000 0000 3063」を入れると、3D Secure Payment pageが現れます。こちらもお試しを。

コメント

タイトルとURLをコピーしました