PayU 网络结账 - 校验和失败

PayU web checkout - checksum failed

我在尝试与 PayU 集成时不断收到 Checksum failed 错误。从我在文档中看到的内容来看,集成应该很简单,但我认为我弄乱了哈希生成。特别是,我不确定如何处理 udf 字段。

这是我计算哈希值的方式:

$seq = "xxxxxxxx|11aa|400.00|Cleaning|Ankush|ankush@gmail.com|||||||||||xxxxxx";
$hash = strtolower(hash("sha512", $seq));

我已经验证了键值和盐值,但 ||||||||||| 部分对我来说看起来很可疑。我没有任何用户定义的字段;这是应该怎么做吗?

此错误仅在表单中的值和

中发生
$seq = "xxxxxxxx|11aa|400.00|Cleaning|Ankush|ankush@gmail.com|||||||||||xxxxxx";

不匹配所以比较你肯定会发现不同的东西,并且会纠正以消除这个错误。

在此要指出两点官方文档中可能没有的内容:

  1. 包含金额的字符串应该以“.00”结尾。如果您必须手动执行,请添加它们。
  2. 这是大多数人必须通过艰难的方式弄清楚的一个: 您只能使用 11 个 UDF(用户定义的字段)。要么你应该有像 udf1|udf2|udf3 这样的值,要么有管道而不是像 | 这样的值。否则校验和将失败。如果您没有传递任何 udfs,请添加 11 个管道。

只需将散列转换为小写

我个人花了几个小时试图解决 checksum failed 问题,这要归功于 payumoney 糟糕的文档。