3

After the user registration page, web clients will come to this page, which contains only a proceed button. But I want to skip this page and proceed to the payment page. Is there any way to do this action completely in the controller?

<form method="post" action="https://www.ccavenue.com/shopzone/cc_details.jsp">
    <input type=hidden name=Merchant_Id value="<%= @Merchant_id %>">
    <input type=hidden name=Amount value="<%= @Amount %>">
    <input type=hidden name=Order_Id value="<%= @user_id %>">
    <input type=hidden name=Redirect_Url value="<%= @redirect_url %>">
    <input type=hidden name=Checksum value="<%= @checksum %>">
    <input type="submit" class="Register_button" value="Proceed to payment">
</form>
4

4 に答える 4

3

コントローラーからPOSTリクエストを行う必要があります。

uri = URI.parse("https://www.ccavenue.com/shopzone/cc_details.jsp")
http = Net::HTTP.new(uri.host, uri.port)

form_data = {
  "Merchant_Id" => @Merchant_id,
  "Amount" => @Amount,
  "Order_Id" => @user_id,
  "Redirect_Url" => @redirect_url,
  "Checksum" => @checksum
}

request = Net::HTTP::Post.new(uri.request_uri)
request.set_form_data(form_data)

response = http.request(request)

httparty gem を使用して投稿リクエストを行うことができます。

于 2012-05-16T08:33:05.120 に答える
1

いいえ、あなたが望んでいる方法ではありません。

他の人が言ったように、コントローラー内から POST して応答を受け取ることができますが、ブラウザーにリモートページへの投稿をさせたい場合は、フォームを介する必要があります。一般的な解決策は、ロード時に JavaScript を介してフォームを送信することです。例えば

<body onload="document.forms['myform'].submit();">
    <form id="myform">
        …
    </form>
</body>
于 2012-05-17T08:30:20.737 に答える
0

Ruby 標準ライブラリの uri と net/http を使用してコントローラーから投稿し、そこでサーバーからの応答を処理できない理由はありません。

net/http を使用する良い例がここにあります。https://github.com/augustl/net-http-cheat-sheet/blob/master/post_form.rb

それでも、おそらくこれを処理する最善の方法ではありません。

于 2012-05-16T08:33:19.460 に答える