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 を介して access_token を受け取る POST リクエストを作成します。

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 '('

レールのカールのフォーマットが間違っているのか、それとも何か他のものを使用する必要があるのか​​ はわかりません。

4

3 に答える 3

5

このレシピを試してください:

Rails アプリケーションに HTTParty gem をインストールします。

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

次に、curl コードの前後にバッククォートを使用しなくても、response['access_token'] にアクセスできるはずです。それは私のために働いた。

于 2014-01-29T23:03:33.220 に答える
3

私はそれをあまりにもうまく機能させましたが、おそらく最も美しい方法ではありません:

最初に学んだことは、curl コードをバッククォートで囲むと、curl がレール内で機能するということです。これにより、フォーマットする必要がある 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 に答える