Laravel出现Stripe.js错误
Stripe.js error with Laravel
我似乎对Stripe.js有问题,我正在使用Laravel作为出纳的框架。
我使用stripe.js,这样我就不会通过服务器传递和信用卡数据,也不会存储任何数据。到目前为止,浏览器似乎出现了问题。让我进一步解释一下,Chrome可以工作,Firefox和Internet Explorer不可以。
在Chrome上:当前提交字段时,表单的行为与预期一致。当您按下提交按钮时,它将显示卡片错误。例如,卡号、过期月份等(它会验证它)。
在Firefox和IE上:该表格不会进行验证,而是说:
A network error has occurred, and you have not been charged. Please try again.
并且会自动提交表格,而不会告知卡号是否被接受等。此外,当你提交表格时,它会直接进入Laravel错误页面,上面写着:
Missing required param: card
我认为这意味着stripe.js没有被完全使用,也许表单没有注意到自定义js。
Stripe.js
$(document).ready(function() {
Stripe.setPublishableKey('pk_test_HdoLAxfuWl53vjchF01fMphS');
$('#subscription-form button').on('click', function() {
var form = $('#subscription-form');
var submit = form.find('button');
var submitInitialText = submit.text();
submit.attr('disabled', 'disabled').text('Just one moment...');
Stripe.card.createToken(form, function(status, response) {
var token;
if(response.error) {
form.find('.stripe-errors').text(response.error.message).show();
submit.removeAttr('disabled');
submit.text(submitInitialText);
return false;
} else {
token = response.id;
form.append($('<input type="hidden" name="token">').val(token));
form.submit();
}
});
});
});
你可以在上试用该应用程序http://account.mcjoin.us最好告诉我可能的问题。永远,谢谢你的帮助!
我的问题的解决方案非常明显;Internet Explorer和Firefox没有贬值e.preventDefault();
这可能令人困惑,但让我解释一下。在Chrome上,e.preventDefault()是不必要的,它所做的是阻止默认的表单函数。在Internet Explorer或Firefox上,如果不存在,Javascript将无法"劫持"表单并执行它需要执行的操作。因此,添加e.preventDefault()将使表单没有默认交互。
现在让我们进一步研究代码,这里是stripe.js:
$(document).ready(function() {
Stripe.setPublishableKey('pk_live_DdMQOXgak0v4yS0yH7vnsHqu');
$('#subscription-form button').on('click', function(e) {
var form = $('#subscription-form');
var submit = form.find('button');
var submitInitialText = submit.text();
submit.attr('disabled', 'disabled').text('Just one moment...');
e.preventDefault();
Stripe.card.createToken(form, function(status, response) {
var token;
if(response.error) {
form.find('.stripe-errors').text(response.error.message).show();
submit.removeAttr('disabled');
submit.text(submitInitialText);
} else {
token = response.id;
form.append($('<input type="hidden" name="token">').val(token));
form.submit();
}
});
});
});
就是这样!就这么简单!
我看了一下您的页面,但它需要身份验证。我怀疑你得到这个结果是因为有一个只发生在Firefox和IE上的JavaScript错误,阻止了Stripe.js代码的工作。我会查看错误控制台。删除页面上可能存在的所有其他JavaScript并重新测试也将证实这一理论。
我还会更新你的服务器端代码,这样在没有代币的情况下就不会进行收费尝试。
干杯,拉里
PS我在Stripe从事支持工作。
- Node.js v6.2.0类扩展不是函数错误
- 同样,同样的错误'ahorcado.js:26未捕获类型错误:无法读取属性'beginPath'
- RxJS:在循环中处理错误.js自定义驱动程序
- 如何在快递中抛出 404 错误.js
- 如何捕获服务器错误 JS
- 帆的“500”错误.js“测试项目”
- 快递中的会话未定义错误.js
- jquery.validate 中的错误.js“javaScript 运行时错误:无法获取未定义或空引用的属性'
- 角度动画中的奇怪错误.js
- 如何删除“对象在节点中没有方法'forEach'错误.js”
- 错误 JS 将发布数据发送到控制器 -CodeIgniter
- 使用摩卡在节点上测试错误.js函数
- 为什么 Magento js/varien/form.js IE 中的错误 - js fiddle
- 检测导致冻结等问题的错误 JS
- 三中的错误.js:相机不是三的实例.照相机
- 编译错误js.72.未处理的错误
- PHP停止表单重新加载显示错误Js
- 节点中的套接字挂断错误.js使用 https 时
- 纹理加载错误(JS动画)
- jasmineNodeOpts:执行量角器时出现意外的标识符错误.js