0

新しいイベントを作成するフォームがあります。新しいイベントを作成した後、フォーム情報を PayPal PayFlow に投稿し、ユーザーを PayPal Web サイトに送って支払いを完了させたいと考えています。私の経験の浅い推測では、 after_create コールバックを作成して別のビューをレンダリングし、ペイパルのペイフロー フォーム情報を投稿することです。しかし、それは正しい解決策ではないようです。

これを行うための「Rails の方法」を提案できますか?

PayPal Payflow プロセスの詳細は次のとおりです。いくつかのパラメーターを渡します。

`curl https://pilot-payflowpro.paypal.com -kd "TRXTYPE=S&AMT=23.45&CURRENCY=USD&CREATESECURETOKEN=Y&SECURETOKENID=9a9ea8208de1413abc3d60c86cb1f4c5"`

安全なトークンを受け取る RESULT=0&RESPMSG=Approved&SECURETOKEN[25]=Fj+1AFUWft0+I0CUFOKh5WA==&SECURETOKENID=9a9ea8208de1413abc3d60c86cb1f4c5

次に、次のように値をペイパルに投稿できます。

<body>
  <form method="post" action="https://payflowlink.paypal.com">
    <input type=hidden value="Fj+1AFUWft0+I0CUFOKh5WA==" name=SECURETOKEN/>
    <input type=hidden value="9a9ea8208de1413abc3d60c86cb1f4c5" name=SECURETOKENID/>
  </form>
</body>
4

1 に答える 1

0

このリンクで答えを見つけました: Rails, How to submit PayPal requests from controller, instead of a form, URL encoding

Payflow を使用しているため、セキュア トークンを使用するためのコードをもう少し追加しました。

events_controller.rb

def create
    @event = Event.new(params[:event])

    respond_to do |format|
        if @event.save!
            format.html { redirect_to @event.send_to_paypal }
            format.json { render json: @event, status: :created, location: @event }
        else
            format.html { render action: "new" }
            format.json { render json: @event.errors, status: :unprocessable_entity }
        end
    end
end

event.rb

def send_to_paypal
    token = UUIDTools::UUID.random_create.to_s
    response = Rack::Utils.parse_nested_query(`curl https://pilot-payflowpro.paypal.com -kd "#{GATEWAY.to_param}&TRXTYPE=S&AMT=23.45&CURRENCY=USD&CREATESECURETOKEN=Y&SECURETOKENID=#{token}"`)

    if response['SECURETOKENID'] != token || response['RESULT'] != "0" || response['SECURETOKEN'].blank?
        raise StandardError, response['RESPMSG']
    else
        URI.encode("https://pilot-payflowlink.paypal.com?MODE=test&SECURETOKENID=#{token}&SECURETOKEN=#{response['SECURETOKEN']}")
    end
end

GATEWAY は、私のペイフロー ゲートウェイ パラメータ (.

最初に、payflowlink.paypal.com でテスト データを送信するときに漠然としたエラーが発生しました。このリンクと同様に、PayPal の Payflow Gateway SDK Example not workingで PARMLIST を渡すことが原因でしたURI.encode(...)。PARMLIST を取り出して追加するとMODE=test、すべてが期待どおりに機能しました。うまくいけば、これは Payflow を使用している他の人々に役立ちます。

于 2013-01-03T17:34:40.780 に答える