昔の Ruby On Rails のブログ

注意! RoR2 とかの話です。今は更新していません。昔、はてなダイアリーで書いていたブログを移行しました。

申込み内容を一旦保存して、カード決済のサイトへ

備忘録です。他の人がこのパターンに合致するかは分かりません。
あと、Paypal じゃないよ。

「確認画面 ⇒ カード情報入力な別サイト ⇒ ThankYou画面」の流れがわかった。
別サイト遷移直前に

1) モデル保存。その際、session に id 保存
2) 別サイトフォームを表示。ただし、Javascript で自動POST
3) ThankYou画面に戻ってきたら保存した session を load

def create
  ...
  if @order.save
    redirect_to :action => :my_delegate, :id => @order.id
  else
  ...
end

def my_delegate
  @order = Order.find(params[:id])
  session[:order_id] = @order.id
end

def done
  @order = Order.find(session[:id])
end

view

<form name="hoge" method="post" action="http://othersite.example.jp/...">
  ...
  <%= submit_tag '画面が自動的に切り替わらない場合はクリック' %>
</form>

<% javascript_tag do %>
  document.hoge.submit();
<% end %>

入力内容を保存するタイミングでずっと悩んでいました。
本来は create アクションで保存後に別サイトに POST する事ができれば良いのですが、
一発ではできないようなので、このような案となりました。