0

这是我第一次在我的 Rails 4 应用程序中使用 curl。我正在尝试将格子与条纹一起使用。我能够成功地将公共令牌交换为条带银行帐户令牌。

格纹 ACH 条纹

这是我的控制器动作。

    def create
      results = `curl https://tartan.plaid.com/exchange_token \
        -d client_id="CLIENT_ID" \
        -d secret="SECRET_KEY" \
        -d public_token="#{params[:public_token]}" \
        -d account_id="#{params[:meta][:account_id]}"`
    end

在带有 JSON.parse(results) 的终端中

{"account_id"=>"ACCOUNT_ID", "stripe_bank_account_token"=>"12345678abcd", "sandbox"=>true, "access_token"=>"test_citi"}

如何将 stripe_bank_account_token 放入控制器?

更新

我正在使用 Figaro Gem 隐藏参数/凭据..

results = 
`curl https://tartan.plaid.com/exchange_token \
  -d client_id="#{ ENV['PLAID_CLIENT_ID'] }" \
  -d secret="#{ ENV['PLAID_SECRET_KEY'] }" \
  -d public_token="#{params[:public_token]}" \
  -d account_id="#{params[:meta][:account_id]}"`

   # here's how I get the stripe_bank_account_token
    break_down = JSON.parse(results)
    x =  break_down.select { |key, val| key == "stripe_bank_account_token" }
4

2 回答 2

1

您不应该从 Ruby 代码中通过管道进行 curl,尤其是当它涉及用户输入时。

相反,您应该使用内置的 Ruby HTTP 客户端、RestClient 之类的 gem,或者更好的是 Plaid Ruby Gem。

gem install plaid

然后就

require 'Plaid'
Plaid.config do |p|
  p.client_id = '<<< Plaid provided client ID >>>'
  p.secret = '<<< Plaid provided secret key >>>'
  p.env = :tartan  # or :api for production
end

user = Plaid::User.exchange_token(params[:public_token], params[:meta][:account_id], product: :auth)
user.stripe_bank_account_token
于 2016-07-22T16:12:33.053 回答
0

只需为格子创建新方法,如下所示。

此外,很好使用 HTTP 客户端或 REST 客户端

HTTP 客户端

REST 客户端

def create
    res = plain_curl(params)
    puts res.inspect #there you will see your respond json obj in rails console.
end

private

def plain_curl(params)
  #it should return you json object, if not just add return before result.
  results = `curl https://tartan.plaid.com/exchange_token \
    -d client_id="CLIENT_ID" \
    -d secret="SECRET_KEY" \
    -d public_token="#{params[:public_token]}" \
    -d account_id="#{params[:meta][:account_id]}"`
end
于 2016-07-19T20:56:36.900 回答