gpt4 book ai didi

jquery - Stripe 卡元素在表单上不可见

转载 作者:行者123 更新时间:2023-11-28 04:09:25 24 4
gpt4 key购买 nike

我是 angularjs 的新手,只是想在我的 angular 应用程序中集成版本 3 的 stripe api。我试图按照 Stripe 网站中给出的步骤进行操作。现在的问题是,在 stripe 站点中,整个代码都是基于纯 js 或 jquery 的。我试图将整个 js 代码从 stripe 放入我的 Angular Controller 并且它加载正常,但问题是卡元素在 ui 形式中保持空白,而且我在控制台上没有收到任何类型的错误。

这是我的 Controller 代码和 html 代码:

myapp.controller('paymentCtrl', ['$scope', function($scope) 
{
var stripe = Stripe('abcdedfght');
var elements = stripe.elements();
var card = elements.create('card',
{
hidePostalCode: true,
style: {
base: {
iconColor: '#F99A52',
color: '#32315E',
lineHeight: '48px',
fontWeight: 400,
fontFamily: '"Helvetica Neue", "Helvetica", sans-serif',
fontSize: '15px',
'::placeholder': {
color: '#CFD7DF',
}
},
}
});
card.mount('#card-element');

function setOutcome(result)
{
var successElement = document.querySelector('.success');
var errorElement = document.querySelector('.error');
successElement.classList.remove('visible');
errorElement.classList.remove('visible');
if (result.token)
{
// Use the token to create a charge or a customer
// https://stripe.com/docs/charges
successElement.querySelector('.token').textContent = result.token.id;
successElement.classList.add('visible');
}
else if (result.error)
{
errorElement.textContent = result.error.message;
errorElement.classList.add('visible');
}
}

card.on('change', function(event)
{
setOutcome(event);
});

document.querySelector('form').addEventListener('submit', function(e)
{
e.preventDefault();
var form = document.querySelector('form');
var extraDetails = {
name: form.querySelector('input[name=cardholder-name]').value,
address_zip: form.querySelector('input[name=address-zip]').value
};
stripe.createToken(card, extraDetails).then(setOutcome);
});

}]);

angularjs 状态的 HTML 文件:

<div ng-controller='paymentCtrl'>
<form>
<div class="group">
<label>
<span>Name</span>
<input name="cardholder-name" class="field" placeholder="Jane Doe" />
</label>
<label>
<span>Phone</span>
<input class="field" placeholder="(123) 456-7890" type="tel" />
</label>
</div>
<div class="group">
<label>
<span>Card</span>
<div id="card-element" class="field"></div>
</label>
</div>
<button type="submit">Pay $25</button>
<div class="outcome">
<div class="error" role="alert"></div>
</div>
</form>
</div>

我也尝试过将此表单更改为指令,但仍然无效。

注意:加载到名为 main.html 的文件中,该文件基本上是我的 angularjs 应用程序的入口点。

编辑:经过多次尝试后,我发现卡片安装正确并且在我发帖时发送了卡片输入,所以问题是我在卡片输入上输入的任何内容都没有显示。

是不是因为我在本地主机上,而 https 不存在?

最佳答案

它应该可以在 http 下使用您的测试 key 正常工作,只有在您的生产系统上 https 是强制性的。

我也使用 angular (4) 并且我遇到了类似的问题,卡输入没有显示。事实证明,就我而言,这只是一个样式问题。通过尝试样式,我得到了卡片输入字段。最后,我添加了这些样式元素(为清楚起见内联显示):

  <div>
<div style="width: 30em" #stripecardelement id="card-element"></div>
</div>
<div>
<!-- Used to display Element errors -->
<span style="width: 30em; height: 2em; letter-spacing: 0em" id="card-errors" role="alert"></span>
</div>

关于jquery - Stripe 卡元素在表单上不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45509210/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com