質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Stripe

Stripeとは、米国のオンライン決済システム提供企業、及び同社が提供する決裁システムを指します。Webサイトやモバイルアプリにコードを組み込むことでクレジットカードなどの決済サービスが簡潔に追加できます。

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1684閲覧

Stripeの支払いのフォームが表示されない

sabotenn52388

総合スコア16

Stripe

Stripeとは、米国のオンライン決済システム提供企業、及び同社が提供する決裁システムを指します。Webサイトやモバイルアプリにコードを組み込むことでクレジットカードなどの決済サービスが簡潔に追加できます。

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2022/02/06 07:48

Stripe +DjangoでECサイトを作成しようとしていたのですがクレジットカード決済フォームを反映できずJavascriptコンソールでエラーが出力されます。

Javascriptコンソールのえらーは下記です。

(インデックス):1 Uncaught IntegrationError: The selector you specified (#card-element) applies to no DOM elements that are currently on the page. Make sure the element exists on the page before calling mount(). at n.<anonymous> ((インデックス):1:175380) at n.mount ((インデックス):1:73382) at stripe.js:17:6

コードは下記です。

html

1{% extends 'app/base.html' %}{% load static %} 2{% block content %} 3<div class="my-5"> 4 <h3>注文内容を確認する</h3> 5</div> 6<form method="POST" id="payment-form"> 7 <div class="row order"> 8 <div class="col-md-9"> 9 <div class="card px-4"> 10 <div class="card-body px-2 py3"> 11 <div class="row"> 12 <div class="col-md-6"> 13 <p class="font-weight-bold">お届け先住所</p> 14 <p>名前:{{ user_data.first_name }}{{ user_data.last_name }}</p> 15 <p>住所:{{ user_data.adderss }}</p> 16 <p>電話番号:{{ user_data.tel }}</p> 17 </div> 18 <div class="col-md-6"> 19 <p class="font-weight-bold">お支払い方法</p> 20 {% csrf_token %} 21 <div class="form-row"> 22 <label for="card-element"> 23 クレジット・デビットカード番号 24 </label> 25 <div class="card-element"><!-- Stripe Element がここに入ります。 --></div> 26 <div class="card-errors" role="alert"><!-- Element のエラーを入れます。 --></div> 27 </div> 28 </div> 29 </div> 30 </div> 31 </div> 32 </div> 33 <div class="col-md-3"> 34 <div class="card"> 35 <div class="card-body text-center px-2 py-3"> 36 <div class="mb-3"> 37 <button class="btn btn-warning" type="submit">注文を確定する</button> 38 </div> 39 <p class="font-weight-bold">注文内容</p> 40 <p>商品の小計:{{ order.get_total }}</p> 41 <p>配送料:後で記載する円</p> 42 <hr> 43 <p class="font-weight-bold text-danger">ご請求金額:{{ order.get_total }}円</p> 44 </div> 45 </div> 46 </div> 47 </div> 48</form> 49{% endblock %} 50{% block extra_js %} 51<script type="text/javascript" src="https://js.stripe.com/v3/"></script> 52<script type="text/javascript" src="{% static 'js/stripe.js' %}"></script> 53{% endblock %}

Javascript

1var stripe = Stripe('pk_test_51KM6HaFNqBsvkEpxtbb0vaRAIfpvLS3qfBKdLCL5uhk53lbB6W7mD4NLHCvlikaPfaHxpSyEJLm94T99OfHQzD5800r0beCYQB'); 2var elements = stripe.elements(); 3 4// Custom styling can be passed to options when creating an Element. 5var style = { 6 base: { 7 // Add your base input styles here. For example: 8 fontSize: '16px', 9 color: '#32325d', 10 }, 11}; 12 13// Create an instance of the card Element. 14var card = elements.create('card', {style: style}); 15 16// Add an instance of the card Element into the `card-element` <div>. 17card.mount('#card-element'); 18 19 20//トークン作成もしくはエラー表示 21var form = document.getElementById('payment-form'); 22form.addEventListener('submit', function(event) { 23 event.preventDefault(); 24 25 stripe.createToken(card).then(function(result) { 26 if (result.error) { 27 // エラー表示. 28 var errorElement = document.getElementById('card-errors'); 29 errorElement.textContent = result.error.message; 30 } else { 31 // トークンをサーバに送信 32 stripeTokenHandler(result.token); 33 } 34 }); 35}); 36 37function stripeTokenHandler(token) { 38 // tokenをフォームへ包含し送信 39 var form = document.getElementById('payment-form'); 40 var hiddenInput = document.createElement('input'); 41 hiddenInput.setAttribute('type', 'hidden'); 42 hiddenInput.setAttribute('name', 'stripeToken'); 43 hiddenInput.setAttribute('value', token.id); 44 form.appendChild(hiddenInput); 45 46 // Submit します 47 form.submit(); 48}

Stripe の手順
https://stripe.com/docs/payments/accept-a-payment-charges

参考動画
https://www.youtube.com/watch?v=lBUMlebS1-I

類似していると思われる記事
https://stackoverflow-com.translate.goog/questions/43024883/stripe-payment-example-is-not-displaying?_x_tr_sl=en&_x_tr_tl=ja&_x_tr_hl=ja&_x_tr_pto=sc

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

https://stripe.com/docs/payments/accept-a-payment-charges?platform=web#web-create-payment-form
ドキュメントにも記載がありますが、 card-elementidにする必要がありそうです。

html

1<div id="card-element"> 2 <!-- A Stripe Element will be inserted here. --> 3</div>

投稿2022/02/06 12:07

gtakat

総合スコア206

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sabotenn52388

2022/02/06 15:57

すいません回答ありがとうございます。 ドキュメントの確認とソースコードの見直しが足りないことが分かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問