No estoy convencido de que mi solución para enviar una transacción de braintree a través de Rails UJS y Ajax sea correcta, la razón es que estoy viendo dos llamadas ajax en lugar de una al enviar.
Por ejemplo, cuando se desactiva el ajax (por lo tanto, eliminar el control remoto: verdadero) el envío de un formulario parece esperar por un informe antes de enviar el pago (creo que braintree asume el evento de envío)
Parameters: {"utf8"=>"✓", "authenticity_token"=>"token_here", "first_name"=>"", "last_name"=>"", "payment_method_nonce"=>"nonce_here_populated"}
Pero al enviar con remoto: verdadero habilitado, la primera llamada es
Parameters: {"utf8"=>"✓", "authenticity_token"=>"token_here=", "first_name"=>"", "last_name"=>""}
Así que leí que onPaymentMethodRecieved
esperar a que nonce use la función de callback onPaymentMethodRecieved
, adjuntar el nonce al formulario y luego enviar
braintree.setup(gon.client_token, 'dropin', { container: 'dropin-container', onPaymentMethodReceived: function (paymentMethod) { $('#braintree-transaction-form').append(""); $("#braintree-transaction-form input[type='submit']").submit(); } });
Esto resulta en dos llamadas que se hacen
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"}
El único problema es que tengo esto en mi controlador que no creo que sea correcto
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
Mi preocupación, supongo, son las dos llamadas que se están realizando y el código de mi controlador.
¿Alguien tiene alguna experiencia con las llamadas de Ajax con Braintree y Rails?
Gracias
Revelación completa: trabajo en Braintree. Si tiene más preguntas, no dude en ponerse en contacto con el servicio de asistencia .
Es posible que tenga un problema con el comportamiento predeterminado de su botón de envío, que es algo que podría intentar deshabilitar . Sin embargo, no hay nada aquí para pensar que ese es el problema. Lo más probable es que haya un problema en otra parte de su configuración. Realmente recomendaría ponerse en contacto con el servicio de asistencia de Braintree con sus ejemplos de código completo para ayudarles a resolver su problema.