使用Jquery AJAX进行Stripe付款? (仅限Javascript)

我正在尝试为Stripe创建一个自定义付款表单,我想手动对Stripe进行AJAX调用。 (而不是提交事件)

但是,首先我很确定我将它发布到错误的地方。 但我无法弄清楚我应该发布这个post请求的URL。

如果我使用正确的url。 我得到了405 not allowed回复。 没有关于我的请求有什么问题的信息。

这是我得到的:

 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文件似乎有点奇怪。 这就是为什么我假设我得到了错误的url。

任何人都可以帮我弄清楚如何为Stripe付款提出手动发布请求吗?

您需要POST$.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应该具有类似Stripe PHP绑定的 require() d使用Stripe支付API,并且该PHP文件应该看起来像这样,从这个SO问题 :

  2000, // amount in cents, again "currency" => "usd", "card" => $tokenid, "description" => "payinguser@example.com") ); echo 'success'; } catch(Stripe_CardError $e) { // The card has been declined echo $tokenid; } ?> 

有关更多信息,请参阅Github的README以及Stripe文档 。

免责声明:这是有效的,但它是可怕的做法。 不要将它用于实际项目。 我需要它才能用于前端测试环境。 正如本页上的其他用户指出的那样,您应该在后端执行此操作!

我终于找到了一些有用的文档: https : //stripe.com/docs/api#create_charge

因为我怀疑我使用的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); } })