如何计算付款表单的哈希值?

时间:2015-05-09 11:51:07

标签: ruby-on-rails ruby ruby-on-rails-4 hash

我正在尝试计算付款表单的哈希,但我收到错误:

  

没有将Fixnum隐式转换为String

所以我解释这个我正在尝试对什么是文本进行数学计算。但是我应该如何纠正我的代码?

付款商家的说明是:

  

hash = SHA1(salt +“|”+ description +“|”+ amount +“|”+ currency +   “|” + transaction_type)

所以在我的控制器里我有:

jsHalf

在初始化程序中,我定义了jsQuarter(以及我在结帐视图中发布到商家的表单中使用的merchant_id)。

3 个答案:

答案 0 :(得分:2)

写这个会更好。

 hash = SHA1([salt, description, amount.to_s, currency,transaction_type].join("|"))

答案 1 :(得分:0)

错误表示您正在为字符串添加数字,我认为问题是“amount”是您要添加到字符串的数字。你只需改变它:

 @hash = SHA1(SALT + "|" + description + "|" + amount.to_s + "|" + currency + "|" + transaction_type)

:to_s方法会将金额转换为字符串。 (如果还有其他数字也是如此。)

或者你可以用字符串插值来做到这一点:

 @hash = SHA1("#{SALT}|#{description}|#{amount}|#{currency}|#{transaction_type}")

答案 2 :(得分:0)

你错误地解释了它,反之亦然。您正在尝试将数字用作字符串。

尝试明确地将数字转换为字符串,如下所示:

@hash = SHA1(SALT + "|" + description + "|" + amount.to_s + "|" + currency + "|" + transaction_type)

由于我不知道所有变量的类型是什么,您可能需要将另一个to_s添加到非字符串中。