Braintree-подобная "корзина" реализация в приложении rails / поиск предыдущих параметров - PullRequest
2 голосов
/ 26 декабря 2010

Я пытаюсь интегрировать 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 теперь является идентификатором транзакции Braintree, а не идентификатором депозита (первичным ключом). Так что, конечно, Deposit.find(params[:id]) не может быть найдено. Каков наилучший способ реализовать это? Стоит ли как-то сохранить предыдущий идентификатор или получить его другим способом? Должен ли я использовать другой контроллер? Спасибо!

1 Ответ

1 голос
/ 26 декабря 2010

Короткий ответ: вы должны использовать модель корзины, подключенную к этой модели депозита из того, что я могу собрать здесь.Однако, исходя из других вопросов, это чувство может измениться.

Итак, основываясь исключительно на том, что вы написали выше:

Если мы следуем подходу RESTful, вы должны создать Deposit#new длявсе новые депозиты.

В вашем Deposit#create вы затем поместите всю свою логику в файл модели deposit.rb.эта логика включает в себя переход к Брейнтри и т. д.

Вы говорите, что работаете с уже имеющимися депозитами, в этом случае они должны обрабатываться методом Deposit#edit.

Далеевопросы, которые я хотел бы задать вам в этой связи, используете ли вы ActiveMerchant?Если нет, то почему?

...