我正在一个简单的站点中设置 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 学习阶段。所以问题是,如何更改变量或向隐藏字段标签添加函数?我也可以制作 :amount => "variable-set-by-javascript",但未能做到这一点。
最佳答案
我在布伦特里工作。我们错过了这个问题,但希望您联系support或者找出你的问题。
Braintree::TransparentRedirect.transaction_data
方法在呈现表单之前在服务器上运行,因此它需要一个实际金额,而不是稍后将评估并返回金额的字符串。
此外,您通常不能/不应在客户端/transaction_data
之外设置金额。这将允许某人更改浏览器中的金额并提交他们想要的任何金额的交易 - 这是您想要避免的,因为它可能会花费您金钱。
自从您发布此问题后,我们已启动 Braintree.js这将允许您将整个表单发布到您的服务器,并验证该金额是否有效 before submitting the form to Braintree 。我建议对任何新集成使用该集成方法,或者如果您需要对付款流程进行其他更改,则升级到该方法。
关于javascript - 调用rails内的javascript函数hidden_field_tag,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13941085/