繁体   English   中英

向API端点发送POST请求以接收stripe_user_id

[英]sending POST request to API endpoint to receive stripe_user_id

用户在使用我的应用程序注册Stripe帐户后,他们将被重定向到我的本地主机,并且将authorization_code添加到URL。 然后,我应该使用client_secretauthorization_code向其API端点发出POST请求。 docs提供的代码说要做这样的事情:

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

在第3步结束时,用户将重定向到我的应用程序上的GET路由,然后应该将我的应用程序发布到Stripe端点。 我需要设置路线吗? 我可以在后台执行此操作吗?

您需要在后端/控制器上对/oauth/token调用,以从Stripe获取授权令牌,以代表连接的帐户进行调用。 一旦您的用户授权您的平台连接到他们的帐户,就完全不需要参与该呼叫。

由于您使用的是Ruby,因此建议您使用stripe-ruby (官方库)。 这具有将Oauth与Stripe Connect结合使用的内置方法

解! 将其编写为模块。 它不需要持久化到数据库。 使用条纹红宝石库也很有帮助

我写了一个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的一部分发送,所以

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM