Ste*_*eve 5 curl ruby-on-rails stripe-payments
我正在尝试为rails 3.2.13 app设置Stripe Connect.我已将用户定向到Stripe并从Stripe接收了授权代码:
HTTP/1.1 302 Found
Location: http://localhost:3000/yourshop/stripe?scope=read_write&state=1234&code=AUTHORIZATION_CODE
Run Code Online (Sandbox Code Playgroud)
下一步是根据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
Run Code Online (Sandbox Code Playgroud)
我对curl没有任何经验是一个rails应用程序,我在Stripe API中找不到任何似乎这个POST请求包含在Stripe Gem中的内容:
宝石文件:
gem 'omniauth-stripe-connect'
gem 'stripe'
Run Code Online (Sandbox Code Playgroud)
模型
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
Run Code Online (Sandbox Code Playgroud)
错误:
syntax error, unexpected tCONSTANT, expecting keyword_do or '{' or '('
Run Code Online (Sandbox Code Playgroud)
不确定是否只是错误的格式为rails中的curl或者是否需要使用其他东西.
小智 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" })
然后你应该能够访问响应['access_token'],而不必在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`)
Run Code Online (Sandbox Code Playgroud)
然后,我可以从客户哈希中提取数据,例如“access_token”:
customer['access_token']
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2891 次 |
| 最近记录: |