我正在尝试计算付款表单的哈希,但我收到错误:
没有将Fixnum隐式转换为String
所以我解释这个我正在尝试对什么是文本进行数学计算。但是我应该如何纠正我的代码?
付款商家的说明是:
hash = SHA1(salt +“|”+ description +“|”+ amount +“|”+ currency + “|” + transaction_type)
所以在我的控制器里我有:
jsHalf
在初始化程序中,我定义了jsQuarter
(以及我在结帐视图中发布到商家的表单中使用的merchant_id)。
答案 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
添加到非字符串中。