我正在使用 json_decode 函数进行解码(并验证来自支付处理器的回发)。收到的 json 对象如下所示
{
"notification":{
"version":6.0,
"attemptCount":0,
"role":"VENDOR",
.....
"lineItems":[
{
"itemNo":"1",
"productTitle":"A passed in title",
"shippable":false,
"recurring":false,
"customerProductAmount":1.00,
"customerTaxAmount":0.00
}
]
},
"verification":"9F6E504D"
}
验证工作如下,获取通知节点并附加一个密钥。此字符串的 SHA1 哈希的前八个字符应与验证节点的内容匹配。
但是,我注意到在使用 json_decode 时,双精度值 6.0、0.00 等被截断为整数(6、0 等)。这会弄乱字符串(就它没有生成正确的 SHA1 哈希而言)。请注意,我不能使用深度限制来阻止通知分支的解码,因为我需要支持 PHP 5.0。我该如何解决这个问题。我写的(缺陷)验证代码是:
public function IPN_Check(){
$o = (json_decode($this->test_ipn));
$validation_string = json_encode($o->notification);
}