勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

Stripe Checkoutにてクレジットカード決済の際に3Dセキュア対応にする方法

   2025/06/19  PHP

先日Stripe Checkoutを用いたクレジットカード決済機能についてメモしたが、3Dセキュアに対応しているのかどうか気になった。調べたところ先日の実装方法では3Dセキュア対応していなかったため、対応する方法と実際に3Dセキュアが施行されたかの確認方法をメモ。

 

対応方法

基本的には先日メモした内容と同様だが、checkout.phpのみ以下に変更すること。

checkout.php(決済処理)

<?php
require_once './vendor/autoload.php';
require_once 'secrets.php';

\Stripe\Stripe::setApiKey($stripeSecretKey);
header('Content-Type: application/json');

$domain = 'https://test.com/checkout';

$checkout_session = \Stripe\Checkout\Session::create([
    'payment_method_types' => ['card'],
    'payment_method_options' => ['card' => ['request_three_d_secure' => 'any']],
    'line_items' => [[
        'price_data' => [
            'currency' => 'JPY',
            'product_data' => [
                'name' => '商品名',
            ],
            'unit_amount' => 200,
        ],
        'quantity' => 1,
    ]],
    'mode' => 'payment',
    'success_url' => $domain . '/success.php?session_id={CHECKOUT_SESSION_ID}',
    'cancel_url' => $domain . '/error.php?session_id={CHECKOUT_SESSION_ID}',
]);

header("HTTP/1.1 303 See Other");
header("Location: " . $checkout_session->url);

解説等

12行目の以下部分が3Dセキュア対応のために必要となる。

'payment_method_options' => ['card' => ['request_three_d_secure' => 'any']],

リファレンスはこちら

 

確認方法

ダッシュボード→取引に進み、上記3Dセキュア対応のソースコードで決済した取引詳細を開くと以下のような表示になる筈。

3Dセキュアは施工されているもののサンドボックス状態のためかテストカードで決済したため、成功はしていない模様。この辺りは本番実装時に確認する必要あり。

 - PHP

  関連記事

【2025年版】PHPとStripeを用いてサイト内にクレカ決済及びキャンセル機能を実装する方法

5年ほど前にPHPとStripeを用いたクレカ決済機能をテスト実装したが最近試し ...

PHPとPAY.JPを用いてサイト内にクレカ決済及びキャンセル機能を実装する方法

先日PHPとStripeを用いてサイト内にクレカ決済及びキャンセル機能を実装する ...

Stripeでキャンセル処理を行う際に「$config must be a string ~」エラーが出る場合の対応方法

Stripeにて先日メモした内容でキャンセル(返金)処理をしようとしたところ1件 ...

PHPにてサイトにPayPay決済システム及び決済キャンセル機能を実装する方法

ここのところクレジットカード決済関連のメモを書いているが、他の決済方法についても ...

PHPとStripeで定額課金(サブスクリプション)実装する方法

PHPとStripeで1ヶ月ごとに500円でサイト内のサービスを使い放題、といっ ...