UI設計したり、ウェブシステムを開発したりします。 

SQL見るだけクエリ#169 Stripeを使用したWebアプリケーションでの決済→DB登録処理

記入日:2023-06-26 編集日:2023-06-26

Stripeを使用したWebアプリケーションでの決済→DB登録処理を解説してみようと思います。

この記事を読むと(約5分)
Stripeを使用したWebアプリケーションでの決済→DB登録処理をイメージできます。

Stripe決済→DB登録処理

以下のコードは、Stripeを利用してWebアプリケーション内で決済処理後DB登録を行うためのPHPコード例です。


コードの概要と各部分の役割を説明します。

1. 必要なライブラリと設定ファイルの読み込み:
StripeのPHPライブラリとデータベースの設定ファイルをrequire_once関数を使って読み込みます。

2. StripeのAPIキーの設定:
Stripeのシークレットキーを変数$stripeSecretKeyに設定します。setApiKeyメソッドを使ってStripeのAPIキーをセットします。

3. POSTデータの取得:
WebフォームなどからPOSTリクエストで送信されたデータ(商品名、単価、数量、ユーザーIDなど)を変数に格納します。

4. Stripe Checkout Sessionの作成:
createメソッドを使ってStripe Checkout Sessionを作成します。支払い方法としてカードを指定し、商品の詳細情報や価格情報、数量などを設定します。成功時のリダイレクトURLとキャンセル時のURLも指定されており、ユーザーIDなどのメタデータも追加されます。

5. データベースへの登録処理:
new PDOを使ってデータベースに接続します。決済情報をデータベースに登録するためのSQL文を準備し、プレースホルダーに値をバインドして実行します。

6. リダイレクト:
header関数を使ってチェックアウトセッションのURLにリダイレクトします。

7. エラーハンドリング:
try-catchブロック内でStripeのAPIエラーをキャッチし、エラーメッセージを表示します。

このコードを使用することで、Stripeを組み込んだWebアプリケーション内で、ユーザーが商品を購入する際のスムーズな決済処理が実現できます。

require_once('vendor/autoload.php'); // StripeのPHPライブラリの読み込み
require_once('config.php'); // データベースの設定ファイルの読み込み

$stripeSecretKey = 'your_stripe_secret_key'; // Stripeのシークレットキーを設定

\Stripe\Stripe::setApiKey($stripeSecretKey);

// POSTで受け取るデータを取得
$productName = $_POST['product_name'];
$unitPrice = $_POST['unit_price'];
$quantity = $_POST['quantity'];
$userID = $_POST['user_id'];

try {
  // Stripe Checkout Sessionを作成
  $checkoutSession = \Stripe\Checkout\Session::create([
    'payment_method_types' => ['card'],
    'line_items' => [[
      'price_data' => [
        'currency' => 'JPY',
        'product_data' => [
          'name' => $productName,
        ],
        'unit_amount' => $unitPrice,
      ],
      'quantity' => $quantity,
    ]],
    'mode' => 'payment',
    'success_url' => $YOUR_DOMAIN . 'success.php?session_id={CHECKOUT_SESSION_ID}',
    'cancel_url' => $YOUR_DOMAIN . 'cancel.html',
    'metadata' => [
      'user_id' => $userID, // ユーザーIDをメタデータとして追加
    ],
  ]);

  // データベースへの登録処理
  $db = new PDO($dsn, $db_user, $db_pass); // データベースに接続

  // データベースに決済情報を登録
  $sql = "INSERT INTO payments (payment_id, amount, user_id) VALUES (:payment_id, :amount, :user_id)";
  $stmt = $db->prepare($sql);
  $stmt->bindValue(':payment_id', $checkoutSession->id);
  $stmt->bindValue(':amount', $checkoutSession->amount_total);
  $stmt->bindValue(':user_id', $userID);
  $stmt->execute();

  // チェックアウトセッションのURLにリダイレクト
  header('Location: ' . $checkoutSession->url);
  exit();
} catch (\Stripe\Exception\ApiErrorException $e) {
  // エラーハンドリング
  echo '決済処理中にエラーが発生しました: ' . $e->getMessage();
}

SQLの使いどころ

サイトに大量の情報を掲載することは、ユーザーにとってとても便利なことです。しかし、情報が多すぎると、目的の情報を見つけるのが困難になります。そのため、SQLを使用することで、情報を効率的に管理することができます。

SQLを使用することで、データベース内の情報を検索したり、フィルタリングしたりすることができます。これにより、ユーザーは目的の情報をスムーズかつ簡単に見つけることができます。

また、SQLを使用することで、データを集計したり、統合したりすることもできます。これにより、ユーザーはさまざまな視点から情報を分析することができます。つまり、サイトに多くの情報を掲載することが重要である一方で、その情報を効率的かつ簡単に管理することが求められる場合には、SQLが不可欠であるといえます。

KK

機械工学を専攻。工業デザイナーとして、国内及び海外の自動車・搬送ラインの設計などに従事した後、2003年にウェブシステム会社を設立。UI設計やウェブシステムの開発、DX化のディレクションなどを行っています。