2

BraintreeをRailsアプリに統合しようとしています。このアプリには、すでにデポジットコントローラー、モデル、ビューがあります。現在、基本的に金額を指定できますが、ステータスを「保留中」に設定しています。ユーザーがそのようなデポジットを行うことができるようにしたいのですが、Braintree(ショッピングカート)を使用していつでも支払うことができます。これを行うには、別のコントローラーやモデルを作成する必要がありますか?(たとえば、私が見たすべてのBraintreeの例では、すぐに支払いが必要です)。

具体的には、私はすでに持っている「預金」を使って作業しようとしています。入金の「表示」ページと確認ボタンに、ユーザー名やクレジットカード情報などのフォームを入れました。これは、すべてのフィールドが検証を満たしている場合は正常に機能しているように見えますが、エラーが発生して表示ページを再度レンダリングする場合は機能しません。DepositsController.rb内:

 def confirm
  @deposit = Deposit.find(params[:id])
  @result = Braintree::TransparentRedirect.confirm(request.query_string)
  if @result.success?
    render :action => "confirm"
  else
    render :action => "show"
   end
 end

問題は:id、預金ID(主キー)ではなく、BraintreeトランザクションIDになっていることです。だからもちろんDeposit.find(params[:id])見つかりません。これを実装するための最良の方法は何ですか?以前のIDを何らかの方法で保存する必要がありますか、それとも別の方法で取得する必要がありますか?別のコントローラーを使用する必要がありますか?ありがとう!

4

1 に答える 1

1

簡単な答えは、ここで収集できるものからこの預金モデルに接続されたカートモデルを使用する必要があるということです。ただし、他の質問に基づいて、その気持ちは変わる可能性があります。

したがって、上で書いたことのみに基づいて:

RESTful アプローチに従う場合、Deposit#newすべての新しい預金に対して を作成する必要があります。

では、Deposit#createすべてのロジックをdeposit.rbモデル ファイルに入れます。このロジックには、Braintree への移動などが含まれます。

あなたは、すでに持っている預金で作業していると言っています。その場合、それらはDeposit#editメソッドで処理する必要があります。

この点に関して、さらにお尋ねしたいのですが、ActiveMerchant を使用していますか? そうでない場合、なぜですか?

于 2010-12-26T15:04:34.697 に答える