我正在一个简单的站点中设置Braintree。 Braintree是一种付款平台。在他们的示例中,他们使用hiddel_field_tag如下:
<%= hidden_field_tag :tr_data, Braintree::TransparentRedirect.transaction_data(
:redirect_url => confirm_payment_url,
:transaction => {:type => "sale", :amount => @amount }
) %>
现在,就我而言,我想通过JavaScript函数设置交易金额,因为我只有三个选项,而不是通过服务器。我已经尝试了很多事情,例如
<%= hidden_field_tag :tr_data, Braintree::TransparentRedirect.transaction_data(
:redirect_url => confirm_payment_url,
:transaction => {:type => "sale", :amount => "return amountFunction();" }
) %>
哪里
function amountFunction()
{
var amount = $('input[name=optionsRadios]:radio:checked').val();
return amount;
}
但不起作用。如您所见,我仍在学习Rails。所以问题是,如何更改变量或将函数添加到hidden_field_tag?我也可以使用:amount =>“ variable-set-by-javascript”,但无法这样做。
最佳答案
我在Braintree工作。我们错过了这个问题,但希望您与support联系或确定您的问题。Braintree::TransparentRedirect.transaction_data
方法在呈现表单之前在服务器上运行,因此它需要实际的数量,而不是稍后将要求值并返回数量的字符串。
此外,通常您不能/不应该在transaction_data
之外设置客户端的金额。这将使某人可以更改浏览器中的金额并以他们想要的任何金额提交交易-您想要避免的事情,因为这可能会花费您很多钱。
自从您发布此问题以来,我们已经启动了Braintree.js,它允许您将整个表单发布到您的服务器上,并验证其中的金额是否有效。我建议对任何新的集成使用该集成方法,如果需要对付款流程进行其他更改,则建议将其升级。
关于javascript - 在rails内部调用javascript函数hidden_field_tag,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13941085/