使用Jquery AJAX进行条带支付?(仅限Javascript)
我正在尝试为Stripe制作一个定制的支付表单,我想手动对Stripe进行AJAX调用。(而不是提交事件) 然而,首先我很确定我把它贴错了地方。但我想不出我应该向哪个URL发出发帖请求 如果我使用的是正确的url。我收到一个使用Jquery AJAX进行条带支付?(仅限Javascript),javascript,jquery,ajax,stripe-payments,Javascript,Jquery,Ajax,Stripe Payments,我正在尝试为Stripe制作一个定制的支付表单,我想手动对Stripe进行AJAX调用。(而不是提交事件) 然而,首先我很确定我把它贴错了地方。但我想不出我应该向哪个URL发出发帖请求 如果我使用的是正确的url。我收到一个405不允许的响应。没有关于我的请求有什么问题的信息 以下是我得到的: Stripe.setPublishableKey('pk_test_12345'); Stripe.card.createToken({ number: ccNum, cv
405不允许的响应。没有关于我的请求有什么问题的信息
以下是我得到的:
Stripe.setPublishableKey('pk_test_12345');
Stripe.card.createToken({
number: ccNum,
cvc: ccCVC,
exp_month: ccMonth,
exp_year: ccYear
}, stripeResponseHandler);
这部分工作正常,给我一个200 OK状态,我从服务器得到了一个令牌
function stripeResponseHandler(status, response) {
console.log('card status: ', status);
console.log('token: ', response.id);
$.ajax({
type: 'POST',
url: 'https://checkout.stripe.com/checkout.js',
headers: {
stripeToken: response.id
},
data: {
number: ccNum,
cvc: ccCVC,
exp_month: ccMonth,
exp_year: ccYear
},
success: (response) => {
console.log('successful payment: ', response);
},
error: (response) => {
console.log('error payment: ', response);
}
})
}
然而,这给了我405不允许。我觉得端点是一个.js文件有点奇怪。这就是为什么我认为我得到了错误的网址
有人能帮我弄清楚如何为条带付款发出手动post请求吗?编辑:这是不安全的(而且过时了)!您不应该将用户的卡信息直接发送到自己的服务器。相反,您应该直接将其发送到Stripe。有一个最新的(使用意图等)示例
您需要在$.ajax()
函数中将发布到PHP文件中:
$.ajax({
type: 'POST',
url: './stripe-payment.php',
headers: {
stripeToken: response.id
},
data: {
number: ccNum,
cvc: ccCVC,
exp_month: ccMonth,
exp_year: ccYear
},
success: (response) => {
console.log('successful payment: ', response);
},
error: (response) => {
console.log('error payment: ', response);
}
})
您的PHP应该具有类似于require()
d的内容来使用条带支付API,并且该PHP文件应该类似于以下内容:
有关更多信息,请参阅Github的自述,以及。免责声明:这是可行的,但这是一种糟糕的做法。不要将此用于真正的项目。我需要它作为前端测试环境。正如本页上的其他用户所指出的,您应该在后端执行此操作
我终于在以下网站找到了一些有用的文档:
因为我怀疑我使用的URL是错误的
在获得正确的URL后,以下ajax调用将起作用:
希望这对其他人也有帮助!大多数答案是PHP或其他后端语言
$.ajax({
type: 'POST',
url: 'https://api.stripe.com/v1/charges',
headers: {
Authorization: 'Bearer sk_test_YourSecretKeyHere'
},
data: {
amount: 3000,
currency: 'usd',
source: response.id,
description: "Charge for madison.garcia@example.com"
},
success: (response) => {
console.log('successful payment: ', response);
},
error: (response) => {
console.log('error payment: ', response);
}
})
嗨,请检查一下。是一个javascript文件,应该通过HTML脚本标记加载到您的页面上。@MLyck:如果您直接从前端代码发布到API,您将向任何人透露您的密钥。您需要将令牌发送到后端,并从后端代码发送费用创建请求,正如另一个答案所建议的那样。@Ywain非常正确-我的第一个可能是更好的方法的评论是不正确的。请求必须在backend@Ywain我是一名前端学生,我的项目没有后端,因此要求只使用Javascript版本。但是感谢您澄清了为什么很难找到这个Javascript版本。前端和后端都是概念。代码所在的文件夹是后端,以及为代码提供服务的任何基础结构、环境和应用程序。您可能没有后者,但前者是后端的一部分;您可以非常轻松地在计算机上使用Apache服务器来运行PHP。一点也不复杂。安装XAMPP,单击按钮启动它,将index.html和其他文件粘贴到htdocs文件夹中,然后将index.html更改为index.php。您现在可以使用PHP-超级简单!请参阅此处:@MLyck有一些第三方集成(需要额外的成本)允许您仅使用前端代码接受付款,例如。但如果您对它感兴趣,正如Nick所说,后端开发并没有那么困难。因为您似乎已经熟悉JavaScript,所以可以查看Node.js以使用JavaScript服务器端。Stripe有一个官方藏书室。@TemporaryName:这并不过分——这是正确的方法。令牌必须发送到商户的后端服务器,在那里它将用于费用创建请求。如果您直接从前端请求将令牌发送到API,则会泄露机密API密钥。@TemporaryName是的,实际上再看一次,这正是您链接到的API所说的…@Ywain,你们都是对的,我是个白痴。我没有意识到令牌是一个秘密密钥。它可以工作,但不适合违反PCI规则将卡信息发送到服务器。stripe建议通过向stripe发送卡信息来生成源,然后将该源发送到后端并相应地处理付款。这在他们的文档中非常清楚。@YousafHassan您知道他们对重读您过去编写的代码的看法。你说得对!
$.ajax({
type: 'POST',
url: 'https://api.stripe.com/v1/charges',
headers: {
Authorization: 'Bearer sk_test_YourSecretKeyHere'
},
data: {
amount: 3000,
currency: 'usd',
source: response.id,
description: "Charge for madison.garcia@example.com"
},
success: (response) => {
console.log('successful payment: ', response);
},
error: (response) => {
console.log('error payment: ', response);
}
})