「注文を確定する」ボタンを押すと商品が購入さていることが分かる画面を開けるようにしたいです。
「注文を確定する」ボタンを押すとエラー画面が表示されて「stripe._error.CardError: Request req_Chi9SGXrLGe8MK: Your charge was declined due to the Japan 3DS mandate. You should migrate to the Payment Intents API to complete the transaction. https://support.stripe.com/questions/3ds-mandate-in-japan」といった、メッセージが出る。
コードについては「DjangoECサイトシステム構築」の「02 準備」ページから「12 決済システム(Stripe)」ページまで全てページに記載されているコードを記載通りに入力しています。
これは以前、「はる@フルスタックチャンネル」様が2021.11.12に更新した「DjangoECサイトシステム構築」にて一通り作成を進めました。
恐らく、原因としては今年の4月以降に義務化された3Dセキュアに関する事ではないかと思われます。
3Dセキュアの問題を解決して支払い完了画面が表示されるようにしたいです。
解決方法が分からなくてもやもやしている為なるべく早く解決したいと思っています。
ご連絡ありがとうございます。
今回発生したエラーの原因と解決方法についてご説明いたします。
■エラーの原因
2024年より3Dセキュア認証が義務化されており、従来のStripe Charges APIでは対応できなくなりました。
エラーメッセージ「Japan 3DS mandate」はこの要件によるもので、新しいPayment Intents APIへの移行が必要でした。
■解決方法
stripe.Charge.createからstripe.PaymentIntent.createに変更し、3Dセキュア認証に対応しました。
■主な変更点
修正内容は下記を参考に修正をお願いします。
https://github.com/haruyasu/django-ecommerce/pull/1/files
よろしくお願いたします。
修正内容を確認して修正しました。
動作を確認した所、意図通りの動作をする事が確認出来ました。
対応頂きまして誠にありがとうございました。