Stripe Connect - 检索访问令牌

时间:2013-06-24 20:20:11

标签: ruby-on-rails curl stripe-payments

我正在尝试为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 '('

不确定导轨中是否存在错误的curl格式,或者是否需要使用其他内容。

3 个答案:

答案 0 :(得分: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代码周围使用反引号。它对我有用。

答案 1 :(得分: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']

答案 2 :(得分:0)

如果您使用的是omniauth stripe connect strategy,那么它会得到照顾,并被放置在您的omniauth回调控制器的request.env["omniauth.auth"]中。

无需做任何HTTParty,omniauth条带连接策略负责所有事情。美!