当サイトに設置しているクレジットカード決済プログラムはStripeという決済代行会社の仕組みを利用しています。
オンライン上に用意されているドキュメント(説明書)もわかりやすく、私のスキルでもなんとか読めるため、とても助かっています。
2017年に制作し、現在に至るまで問題なく稼働し続けてくれています。
2025年3月末以降、3Dセキュア認証の導入が事業者に義務付けられるらしい
しかし、去年(2023年)の11月末に以下のようなメールがStripeから届きました。
どうもクレジットカード決済に「3Dセキュア認証」というのが導入されるため、それに対応させなければいけないらしい。
それには現在使用中の「Charges API」ではダメで、「PaymentIntents API」方式に変更する必要があるらしい。
前述のとおり私がこのプログラムを制作したのは2017年なので、その当時一般的だった(と思われる)Charges APIを使用しています。これが今となっては古いらしい。
というような感じで、インターネットの世界はセキュリティ上の理由から仕様が変化していくものなので、プログラム側のアップデートが必要になることがたまにあるのです。(スマホのOSやアプリがアップデートされていくのと同じ)
「Charges API」と「PaymentIntents API」の最大の違い
説明ページを何度も読み、提供されているサンプルコードでテストしたところ、Charges APIとPaymentIntents APIの最大の違いは、
- ・Charges APIはサーバー側の処理で決済が完了する。
- ・PaymentIntents APIはクライアント側の処理で決済が完了する。
という点のようです。
料金を払ってもらってそれで完了。というような単純な支払い形式の場合は上記の違いは問題にはなりませんが、このサイトのように、
- 料金を支払ってもらって、
- その後に該当の商品ファイルをダウンロード。
という支払い形式の場合は、クライアント側の処理で決済が完了するのは技術的な面で非常に都合が悪い。
なぜなら、上記1の次に「支払いが成功したかどうかを確認し、成功のときのみ上記2へ移行する」という処理が必要になるのですが、その決済処理がクライアント側で行われるということは偽装することができてしまうからです。
かなり時間がかかりましたが完成しました
色々試行錯誤をし、かなり時間がかかりましたが上記の問題は解決し、無事に完成しました。
幸い私のサイトでは良いお客さんが多いため、偽装して送信をしようとするような不審な動きをする人はいませんが(そういう人は見つけ次第すぐにアクセス拒否します)、どちらにしても脆弱性のないものが完成して安心しております。ぜひ何か買ってください。(笑)