Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何正确验证worldpay';s回调响应_Php_Callback_E Commerce_Response_Worldpay - Fatal编程技术网

Php 如何正确验证worldpay';s回调响应

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

我无法验证WorldPay对电子商务网站的回调

根据WorldPay的说法,对于成功的交易,应该发布一个名为“transStatus”的参数,其值为“Y”

这似乎很简单,因此我编写了一个简单的验证函数来查找此值:

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”