Php 如何正确验证worldpay';s回调响应
我无法验证WorldPay对电子商务网站的回调 根据WorldPay的说法,对于成功的交易,应该发布一个名为“transStatus”的参数,其值为“Y” 这似乎很简单,因此我编写了一个简单的验证函数来查找此值:Php 如何正确验证worldpay';s回调响应,php,callback,e-commerce,response,worldpay,Php,Callback,E Commerce,Response,Worldpay,我无法验证WorldPay对电子商务网站的回调 根据WorldPay的说法,对于成功的交易,应该发布一个名为“transStatus”的参数,其值为“Y” 这似乎很简单,因此我编写了一个简单的验证函数来查找此值: private function validateRequest() { if ($_POST['transStatus'] == "Y"){ return true; } else { throw new Exc
private function validateRequest() {
if ($_POST['transStatus'] == "Y"){
return true;
} else {
throw new Exception("Transaction failed");
die();
}
}
}
当运行回调页时,将通过如下方式调用此函数:
try {$this->validateRequest()}
catch (Exception $e) {
mail("email@address.com", $e->getMessage(), $e->getTraceAsString());
throw new Exception("Could not validate payment.")
die();
}
不幸的是,当我测试此WorldPay时,它成功地处理了付款,但我的其余代码没有完成订单。我已检查了日志文件,但看不到任何异常或错误
从这里开始,最好的方法是什么?我应该如何着手解决这个问题?以下是我如何解决这个问题,以防将来有人遇到类似的问题并偶然发现这个问题: 当我检查$u POST的内容时,我意识到它收到的是“Y\n”,而不是它所期望的简单的“Y”。下面是我用的代码
if (strpos($_POST['transStatus'], 'Y') !== FALSE) { /* Order is verified */ } else { /* Order is not verified */ }
正如您所能做的,现在代码检查响应中是否有“Y”。这是因为worldpay只会发送三种可能的响应:“Y”、“N”、“C”