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