javascript - 需要帮助将 Stripe 内联 Javascript 移动到项目的 .js 文件
问题描述
我只是在将我所有的 javascript 移到我项目中它自己的文件的过程中。我已经移动了所有脚本,但由于某种原因,Stripe 出现了问题。当我在拥有其他所有内容时移动该功能时,结帐不会像往常一样加载。
这是我的代码,因为它是内联的 buy.html -
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<button class="w3-button w3-center w3-blue w3-padding-large" type="button" id="checkout-button">
{% csrf_token %}Buy Now
</button>
..........
<script type="text/javascript">
const csrftoken = document.querySelector('[name=csrfmiddlewaretoken').value;
// Create an instance of the Stripe object with your publishable API key
var stripe = Stripe("{{ STRIPE_PUBLIC_KEY }}");
var checkoutButton = document.getElementById("checkout-button");
checkoutButton.addEventListener("click", function () {
fetch("{% url 'create-checkout-session' product.id %}", {
method: "POST",
headers: {
'X-CSRFToken': csrftoken
}
})
.then(function (response) {
return response.json();
})
.then(function (session) {
return stripe.redirectToCheckout({ sessionId: session.id });
})
.then(function (result) {
// If redirectToCheckout fails due to a browser or network
// error, you should display the localized error message to your
// customer using error.message.
if (result.error) {
alert(result.error.message);
}
})
.catch(function (error) {
console.error("Error:", error);
});
});
</script>
我试图像这样拆分它,但它不起作用 -
购买.html
<body onload="payment()">
<script src = "{% static 'vendors/js/base.js' %}"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<button class="w3-button w3-center w3-blue w3-padding-large" type="button" id="checkout-button">
{% csrf_token %}Buy Now
</button>
脚本.js -
function payment() {
const csrftoken = document.querySelector('[name=csrfmiddlewaretoken').value;
var stripe = Stripe("{{ STRIPE_PUBLIC_KEY }}");
var checkoutButton = document.getElementById("checkout-button");
checkoutButton.addEventListener("click", function () {
fetch("{% url 'create-checkout-session' product.id %}", {
method: "POST",
headers: {
'X-CSRFToken': csrftoken
}
})
.then(function (response) {
return response.json();
})
.then(function (session) {
return stripe.redirectToCheckout({ sessionId: session.id });
})
.then(function (result) {
if (result.error) {
alert(result.error.message);
}
})
.catch(function (error) {
console.error("Error:", error);
});
};
有人可以告诉我哪里出错了吗?
解决方案
推荐阅读
- c# - 从 SQLite 数据库中获取列中具有相同最小值的所有原始数据
- java - 如何从 Java 中的 post 请求中获取 XML
- sql - 当我使用变量时,SQL 服务器上的 DATEDIFF 函数返回空值
- javascript - 在切换按钮中将我的内部 div 切换到另一侧
- ffmpeg - FFMPEG 和 AVCONV 混合音频文件降低音量
- google-apps-script - 谷歌表格脚本,在 30 多秒后超时
- charts - Jmeter - 将 MyValues 附加到仪表板报告
- sapui5 - 翻译无法正确显示非 ASCII 字符
- php - 如何以可折叠的方式显示产品波段和模型
- angular - 如何从数组值中删除小数点值?