5

我正在尝试为 rails 3.2.13 应用程序设置 Stripe Connect。我已将用户定向到 Stripe,并从 Stripe 收到了授权码:

HTTP/1.1 302 Found
Location: http://localhost:3000/yourshop/stripe?scope=read_write&state=1234&code=AUTHORIZATION_CODE

根据 Stripe 文档,下一步涉及通过 access_token_url 发出 POST 请求以接收 access_token:

curl -X POST https://connect.stripe.com/oauth/token \
  -d client_secret=sk_test_code \
  -d code=AUTHORIZATION_CODE \
  -d grant_type=authorization_code

我对 curl 是一个 rails 应用程序没有任何经验,我在 Stripe API 中找不到任何似乎这个 POST 请求包含在 Stripe Gem 中的内容:

宝石文件:

gem 'omniauth-stripe-connect'
gem 'stripe'

模型

def save_with_stripe_account
  code = self.stripe_code
  customer = curl -X POST https://connect.stripe.com/oauth/token \
    -d "client_secret=ENV['STRIPE_SECRET_KEY']" \
    -d "code=code" \
    -d "grant_type=authorization_code"
  raise customer.inspect  
end

错误:

syntax error, unexpected tCONSTANT, expecting keyword_do or '{' or '('

不确定是否只是rails中curl的错误格式或是否需要使用其他东西。

4

3 回答 3

5

试试这个食谱:

在 Rails 应用程序中安装 HTTParty gem

response = HTTParty.post(" https://connect.stripe.com/oauth/token ", :query => { client_secret: "#{ENV['STRIPE_SECRET_KEY']}", 代码: response_code, grant_type: "authorization_code" })

然后您应该能够访问 response['access_token'] 而不必在 curl 代码周围使用反引号。它对我有用。

于 2014-01-29T23:03:33.220 回答
3

我也得到了它,可能不是最漂亮的方式:

我学到的第一件事是,如果你在 curl 代码周围加上反引号,curl 可以在 rails 内工作。这将返回只需要格式化的 JSON。我最终在我的模型中得到以下结果:

customer = ActiveSupport::JSON.decode(`curl -X POST https://connect.stripe.com/oauth/token -d client_secret=#{ENV['STRIPE_SECRET_KEY']} -d code=#{self.stripe_code} -d grant_type=authorization_code`)

然后我可以从客户哈希中提取数据,例如“access_token”:

customer['access_token']
于 2013-06-26T22:15:02.660 回答
0

如果您使用omniauth 条带连接策略,那么它会为您处理好并放置在request.env["omniauth.auth"]您的omniauth 回调控制器中。

不需要做任何 HTTParty,omniauth 条带连接策略会处理所有事情。美丽!

于 2014-02-11T22:31:31.983 回答