在Ember.js应用程序中使用JSONP实现Stripe Connect

时间:2014-08-08 17:10:33

标签: javascript ajax ember.js jsonp stripe-payments

我目前正在将 Stripe Connect Ember.js 1.7.0-beta.4 应用程序(支持查询参数)集成。每Stripe documentation我需要在我的Ember.js应用程序中从Stripe接收GET重定向,并使用查询参数来发出最终的POST请求

到目前为止,我已经捕获了查询参数并尝试从同一个控制器进行AJAX POST,但是AJAX POST返回错误,因为显然Stripe的API不再支持CORS - despite a 2-year-old Stripe blog entry saying otherwise

XMLHttpRequest无法加载https://connect.stripe.com/oauth/token。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许原点访问。

当前的Stripe文档说使用JSONP,在同一篇博文中指出“因为JSONP只支持GET请求,但是我们的API使用了各种请求方法,我们必须实现HTTP方法覆盖支持_method查询参数。“

不幸的是,我不知道如何将JSONP方法集成到Ember.js应用程序中。

Stripe的文档告诉我“将此脚本标记添加到您的页面以开始使用Stripe.js。”

<script type="text/javascript" src="https://js.stripe.com/v2/"></script>

我是否只是将其逐字粘贴到Handlebars.js模板中?那么如何使用查询参数生成所需的POST请求?在哪里?

结论:如何在我的Ember.js应用程序中集成Stripe的JSON方法来启用Stripe Connect?

2 个答案:

答案 0 :(得分:0)

我没有用条纹测试它,但我会将你的问题分成3个部分,尝试来回答每个部分。

1)脚本标签放在哪里?
脚本标签将放在标题

<script type="text/javascript" src="https://js.stripe.com/v2/"></script>

2)如何发出JSONP请求?
您可以使用$.getJSON发出请求请求,只需确保包含?callback=?包含:http://api.jquery.com/jquery.getjson/#jsonp

3)如何使用_method覆盖方法来执行GET请求 你会做类似

的事情
$.getJSON('http://connect.stripe.com/whatever-the-correct-url-is?callback=?', {
  _method: 'POST'
})

如果您提出了类似的请求,则服务器应将其作为POST进行处理


要将它们组合在一起,您应该像在步骤3中那样做,但也要添加条纹所需的其余参数。

答案 1 :(得分:0)

您可以在服务器端执行此操作,无需将其用于Ember。

工作流程是您使用客户端ID将用户重定向到条带服务器。它使用代码将用户重定向回服务器上的端点。您使用该代码调用条带以获取令牌。之后(或期间,如果您想要冷静和异步),您将用户重定向回适当的ember端点。对于这部分,条纹js文件根本不是必需的。

https://stripe.com/docs/connect/oauth#token-request