3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

G's ACADEMY【技術記事書いてみた編】Advent Calendar 2024

Day 3

君は対応したか、Stripeの3Dセキュア必須化問題(for Laravel)

Last updated at Posted at 2024-12-01

はじめに

この記事は G's ACADEMY Advent Calendar 2024 3日目の記事です(予定)。
書いている人はLAB7卒、現在G's ACADEMY FUKUOKAにお世話になっている棚という者です。

記事の要約

  • Stripeの決済処理について、2025年1月15日から3Dセキュア認証が段階的に適用されるよ
  • 2025年3月末までに3Dセキュア導入が義務付けられているので、何もしないと止まるよ(参考:
    ECサイトへの導入が義務化!3Dセキュア2.0(本人認証)とは?
  • 嘘、私のアプリ止まっちゃう……???この記事はそんなあなたのための記事です(ただしLaravel Cashier利用前提)。

経緯

2024年11月中旬ごろ、Stripeから以下のようなメールが届きました。

Screenshot 2024-12-01 at 13.46.23.png

へぇ3Dセキュア導入が必須になるんだなぁ……えっアプリ側の改修が必要になるの?1月15日まで?冬季休暇前までには終わらせないとダメなやつでしょこれ!?と慌てて対策したのが現在です。

対策方法

Laravel Cashierを導入している場合は対策は容易です。

以下のようにchargeメソッドで決済を行っている部分があるとします。

$charge = $user->charge(
    $price,
    $paymentMethodId, [
        "description" => $description,
        "currency" => $currency,
]);

これを次のように書き換えてあげればよろしい訳です。

try {
    $charge = $user->charge(
        $price,
        $paymentMethodId, [
            "description" => $description,
            "currency" => $currency,
    ]);
} catch (IncompletePayment $exception) {
    return redirect()->route(
        'cashier.payment',
        [$exception->payment->id, 'redirect' => route('home')]
    );
}

これは公式ドキュメントのHandling Failed Paymentsの項目を読んでいただくと分かるのですが、要は決済中にIncompletePayment例外(=不完全な支払いの例外)が発生した場合、Cashierが用意した専用の支払い確認ページに飛ばすという処理の追加を行っています。

この専用支払い確認ページでは別途3Dセキュア認証確認のための追加アクションを実行することができ、こちらが完了すると無事決済が通ります。

穏やかなテスト

上記を組み込んだ後、Stripeの方で3Dセキュア認証テストのために用意している番号4000000000003220を利用し、一連の決済フローを流してみましょう。Stripe管理画面で決済が完了したか確認できれば、ひとまずの対応は済んだと言えるでしょう。

よかった、これで解決ですね……

よくないわよ

実はこれだけだとダメです。

実装すればわかるのですが、「Cashierが用意した専用の支払い確認ページ」というのが曲者で、全て英語です。

また決済に成功しようが中断しようがトップページに飛ぶという処理なのでUI的には最悪、お客さんから大量の苦情が寄せられることでしょう。

次回はその辺りの解消方法を書きたいと思います。このAdvent Calendarの枠が残っていれば……

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?