Как передать идентификатор в полосу перенаправить URI - PullRequest
0 голосов
/ 12 июня 2019

Я хочу, чтобы URI перенаправления вернулся к пути отправки для конкретной задачи, но я не знаю, как отправить идентификатор в URI перенаправления чередования.

В настоящее время я установил Uri перенаправления вhttp://localhost:3000/stripe/connect. Но я хочу иметь возможность отправлять через идентификатор задачи в действие подключения полосы, чтобы я мог перенаправить на конкретный путь отправки задачи

Submissions / new.html.erb:

<% if current_user.stripe_user_id %>
  <h2>Submit</h2>
  <%= form_for [:task, @submission] do |f| %>
    <%= f.text_area :description, placeholder: "File description"    %>
    <%= f.file_field :files, multiple: true %>
    <%= f.submit "Submit", class: "btn button" %>
  <% end %>
<% else %>
  <h6> To Accept Payments for Tasks:</h6>
  <%= link_to image_tag("light-on-dark.png"), stripe_button_link,   :data => {:task_id => @task.id} %>
<% end %>

Помощник пользователя:

def stripe_button_link
  stripe_url = "https://connect.stripe.com/oauth/authorize"
  redirect_uri = stripe_connect_url
  client_id = ENV["STRIPE_CLIENT_ID"]

  "#{stripe_url}?response_type=code&redirect_uri=#   {redirect_uri}&client_id=#{client_id}&scope=read_write"
end

Контроллер полосы:

def connect
  response = HTTParty.post("https://connect.stripe.com/oauth/token",
    query: {
      client_secret: ENV["STRIPE_SECRET_KEY"],
      code: params[:code],
      grant_type: "authorization_code"
    }
  )
  @task = Task.find(params[:task_id])
  if response.parsed_response.key?("error")
    redirect_to new_task_submission_path(@task),
      notice: response.parsed_response["error_description"]
  else
    stripe_user_id = response.parsed_response["stripe_user_id"]
    current_user.update_attribute(:stripe_user_id, stripe_user_id)

    redirect_to new_task_submission_path(@task),
      notice: 'User successfully connected with Stripe!'
  end
end

Маршруты конфигурации:

get "stripe/connect", to: "stripe#connect", as: :stripe_connect

Ответы [ 2 ]

1 голос
/ 13 июня 2019

Передайте параметр state как часть вашей ссылки /oauth/authorize.

Из ссылки Stripe :

Произвольное строковое значение, которое мы передадимобратно к вам, полезно для защиты от CSRF.

Затем он будет включен в строку запроса, когда Stripe перенаправит на ваш redirect_uri, и вы сможете использовать его для дальнейшего перенаправления или обработки в вашем приложении.

0 голосов
/ 12 июня 2019

Если я правильно понял, вы хотите отправить task_id в качестве параметра для чередования и получить его обратно из ответа.Вы пробовали Метаданные в вашем запросе?Вы можете разобрать ответ, чтобы найти их.

...