Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Jquery AJAX进行条带支付?(仅限Javascript)_Javascript_Jquery_Ajax_Stripe Payments - Fatal编程技术网

使用Jquery AJAX进行条带支付?(仅限Javascript)

使用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

我正在尝试为Stripe制作一个定制的支付表单,我想手动对Stripe进行AJAX调用。(而不是提交事件)

然而,首先我很确定我把它贴错了地方。但我想不出我应该向哪个URL发出发帖请求

如果我使用的是正确的url。我收到一个
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);
        }
      })