在Spree Store中添加Braintree Drop-in UI时,选择付款方式时出现问题

当客户选择Braintree作为付款方式时,我正在尝试实施扩展以适应braintree的插入式UI。 如果我将braintree js代码添加到_gateway.html.erb中,那么所有其他付款方式都会停止工作。 如果我选择除braintree之外的任何其他方法并单击“保存并继续”,则没有任何反应。 “保存并继续”按钮被禁用。

我已经覆盖了spree / frontend / app / views / spree / checkout / _gateway.html.erb。

 
'credit-card-image', :class => 'pull-right', :width => '170', :height => '28' %>

* 'form-control required'} %>

* 'off'} : {} %> 'card_number', :class => 'form-control required cardNumber', :size => 19, :maxlength => 19, :autocomplete => "off") %>   ( )

* 'card_expiry', :class => "form-control required cardExpiry", :placeholder => "MM / YY" %>
* 'card_code', :class => 'form-control required cardCode', :size => 5) %> '_blank', "data-hook" => "cvv_link", :id => "cvv_link" %>
"cc_type", :class => 'ccType' %>
braintree.setup("", 'dropin', { container: 'dropin' });

我在布伦特里工作。 如果未在braintree.setup调用中指定form选项,则braintree.js会将其行为附加到最近的父表单元素。 由于看起来你的braintree容器的父表单与其他结帐流程使用的表单相同,braintree.js确实会劫持提交按钮所做的调用(无论使用的付款流程如何)。 我建议创建两个单独的表单元素,并将braintree使用的id传递给braintree.setup调用。

 braintree.setup("<%=@client_token%>", 'dropin', { container: 'dropin', form: 'braintree_checkout' });