記入日:2023-06-26 編集日:2023-06-26
Stripeを使用したWebアプリケーションでの決済→DB登録処理を解説してみようと思います。
この記事を読むと(約5分)
Stripeを使用したWebアプリケーションでの決済→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化のディレクションなどを行っています。