Я не уверен, что мое решение отправить транзакцию braintree через Rails UJS и Ajax правильное, причина в том, что я вижу два вызова ajax, а не один при отправке.Ajax Отправить вопрос - Rails
Например при повороте Аякса выключения (поэтому удаление удаленное: правда) представление формы, кажется, ждать нонса перед отправкой платежа (я считаю Брэйнтри перенимает отправить событие)
Parameters: {"utf8"=>"✓", "authenticity_token"=>"token_here", "first_name"=>"", "last_name"=>"", "payment_method_nonce"=>"nonce_here_populated"}
Но при подаче с пульта дистанционного управления: правда включен первый вызов
Parameters: {"utf8"=>"✓", "authenticity_token"=>"token_here=", "first_name"=>"", "last_name"=>""}
Так я читал, что я должен ждать этого одноразового номера с использованием функции обратного вызова onPaymentMethodRecieved
, добавьте случайное слово в форме, а затем представить
braintree.setup(gon.client_token, 'dropin', {
container: 'dropin-container',
onPaymentMethodReceived: function (paymentMethod) {
$('#braintree-transaction-form').append("<input id='p_nonce' type='hidden' name='payment_method_nonce' value='" + paymentMethod.nonce + "'></input>");
$("#braintree-transaction-form input[type='submit']").submit();
}
});
В результате двух вызовов делаются
1)
Parameters: {"utf8"=>"✓", "authenticity_token"=>"token_here=", "first_name"=>"", "last_name"=>""}
2)
Parameters: {"utf8"=>"✓", "authenticity_token"=>"token_here", "first_name"=>"", "last_name"=>"", "payment_method_nonce"=>"nonce_here_populated"}
Только проблема в том, у меня есть это в мой контроллер, который не думаю, что это правильно
def create
nonce = params[:payment_method_nonce]
render action: :new and return unless nonce # Is this the way to wait for the nonce
@result = Braintree::Transaction.sale(
amount: 2500,
payment_method_nonce: nonce,
customer: {
first_name: params[:first_name],
last_name: params[:last_name]
}
)
end
моя озабоченность, я думаю, это два звонка и мой код контроллера.
Кто-нибудь есть опыт работы с Ajax звонки с Braintree и Rails
Благодаря