1

我正在一个简单的站点中设置 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",但没能做到。

4

1 回答 1

0

我在布伦特里工作。我们错过了这个问题,但希望您联系支持或找出您的问题。

Braintree::TransparentRedirect.transaction_data方法在呈现表单之前在服务器上运行,因此它需要一个实际金额,而不是稍后将评估并返回金额的字符串。

此外,您通常不能/不应该在transaction_data. 这将允许某人更改浏览器中的金额并提交他们想要的任何金额的交易——这是您想要避免的事情,因为这可能会花费您金钱。

由于您发布了这个问题,我们已经启动了Braintree.js,它允许您将整个表单发布到您的服务器,并在将表单提交到 Braintree 之前验证金额是否有效。我建议对任何新的集成使用该集成方法,或者如果您需要对付款流程进行其他更改,则升级到它。

于 2013-04-02T15:02:02.520 回答