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

Implementing Stripe Connect using JSONP in an Ember.js app

本文关键字:JSONP 实现 Stripe Connect Ember js 应用      更新时间:2023-09-26

我目前正在集成Stripe ConnectEmber.js 1.7.0-beta。4应用程序(支持查询参数)。根据Stripe文档,我需要在Ember.js应用程序中接收来自Stripe的GET重定向,并使用查询参数进行最后的POST请求

到目前为止,我已经捕获了查询参数,并试图从同一个控制器进行AJAX POST,但是AJAX POST返回一个错误,因为显然Stripe的API不再支持CORS -尽管一个2岁的Stripe博客条目另有说明:

XMLHttpRequest无法加载https://connect.stripe.com/oauth/token。请求的资源上没有'Access-Control-Allow-Origin'标头。因此不允许访问Origin。

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

不幸的是,我不知道如何将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 ?

我还没有测试过,但我会把你的问题分成3部分,试着回答每一部分。

1)在哪里放脚本标签?
script标签会出现在header

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

2)如何发出JSONP请求?
您将使用$.getJSON发出常规请求,您需要做的就是确保包含?callback=?(参见:http://api.jquery.com/jquery.getjson/#jsonp

)。

3)如何使用_method来重写方法。
你可以这样写

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

如果您发出这样的请求,服务器应该将其作为POST处理


要将它们连接在一起,您应该需要做类似于步骤3的事情,但还要添加stripe所需的其余参数。

你可以在服务器端完成这一切,不需要在Ember中工作。

的工作流程是你重定向用户到条带服务器与您的客户端id。它用代码将用户重定向到服务器上的端点。您使用该代码呼叫stripe以获得令牌。在此之后(或者在此期间,如果您想要酷和异步),您将用户重定向到适当的ember端点。这部分根本不需要Stripe js文件。

https://stripe.com/docs/connect/oauth的令牌请求