отправка запроса POST в конечную точку API для получения stripe_user_id - PullRequest
0 голосов
/ 17 апреля 2019

После того как пользователь зарегистрирует учетную запись Stripe в моем приложении, они будут перенаправлены на мой локальный хост, и к URL добавится authorization_code.Затем я должен сделать запрос POST с моими client_secret и authorization_code к их конечной точке API.Код, предоставленный документами, говорит, что нужно сделать что-то вроде этого:

curl https://connect.stripe.com/oauth/token \
 -d client_secret=blahblah \
 -d code="{AUTHORIZATION_CODE}" \
 -d grant_type=authorization_code

Но ... где я это делаю, точно?В контроллере?Как это?

def post_to_endpoint(endpoint)
 require 'json'

 begin
  uri = URI.parse(endpoint)

  post_params = {
    client_secret: "client_secret",
    code: "{AUTHORIZATION_CODE}",
    grant_type: authorization_code
  }

  req = Net::HTTP::Post.new(uri.path)
  req.body = JSON.generate(post_params)
  req["Content-Type"] = "application/json"
  http = Net::HTTP.new(uri.host, uri.port)
  response = http.start { |htt| htt.request(req) }
 rescue => e
  puts "failed #{e}"
 end
end

Пользователь перенаправляется на маршрут GET в моем приложении в конце шага 3, а затем мое приложение должно выполнить POST к конечной точке Stripe.Нужно ли настроить маршрут?Можно ли выполнить это действие в фоновом режиме?

Ответы [ 2 ]

1 голос
/ 17 апреля 2019

Звонок на /oauth/token - это то, что вы делаете на бэкэнде / контроллере, чтобы получить токен авторизации от Stripe, который вам понадобится для совершения звонка от имени подключенной учетной записи. Ваш пользователь вообще не должен участвовать в этом вызове, если он авторизовал вашу платформу для подключения к своей учетной записи.

Поскольку вы используете Ruby, я бы рекомендовал использовать stripe-ruby (официальная библиотека). Имеет встроенные методы для использования Oauth с Stripe Connect.

0 голосов
/ 20 апреля 2019

решение! напишите это как модуль. это не должно быть сохранено в БД. Также полезно было использовать stripe ruby ​​library

я написал stripe_oauth.rb, который выглядит так:

module StripeOauth
 def self.connect(code)
  Stripe.api_key = ENV["STRIPE_SECRET_KEY"]
  Stripe::OAuth.token( {code: code, grant_type: "authorization_code" } )
 end
end

и затем я вызвал это из действия контроллера. Stripe перенаправил меня на:

def welcome
 StripeOauth.connect(params[:code])
end

params[:code] отправляется как часть URL, поэтому

...