Worldpay响应检查MAC值

问题描述

我正在开发一个小型PHP应用程序,允许用户使用worldpay hosted integration在我的网站上付款。

我正在使用https://secure-test.worldpay.com/jsp/merchant/xml/paymentService.jsp的worldpay测试环境,也正在使用test cards

我在网站上的/index.php上有一个表单,提交后它会将表单值(金额/ cartId /货币/电子邮件/等...)发布到/xml.php,在其中捕获值并插入他们到我的XML。使用cURL,我将此XML发送给worldpay,然后将用户重定向到worldpay付款页面以完成购买。到目前为止一切正常。

我有the docs中所述的设置自定义结果URL。

$successURL = urlencode( "/callback.php?paymentStatus=success");
$failureURL = urlencode( "/callback.php?paymentStatus=failure" );
$pendingURL = urlencode( "/callback.php?paymentStatus=pending" );
$errorURL = urlencode( "/callback.php?paymentStatus=error" );

在我的callback.php中,我正在检查$_GET['paymentStatus']并使用index.php重定向到$_SESSION['paymentStatus']。像这样的东西

$paymentStatus = $_GET['paymentStatus'];

if( $_SESSION['paymentStatus'] = 'success'; ){
    header('Location: index.php');
    exit();
}
// etc

在我的index.php中,我正在检查$_SESSION['paymentStatus']并相应地显示一条消息。

到目前为止,在我的测试过程中,所有功能似乎都可以正常工作,但是我对securing payments with the MAC感到困惑。 worldpay管理员已为我分配了一个MAC Secret值,但不确定如何使用它。

我知道我需要将worldpay响应中发送的MAC值与我提供的MAC值进行比较,以确保它是真实的。问题是我不知道在哪里检查their MAC response

当我在测试环境中提交(成功)付款时,我将被重定向回到索引页面,并显示我的自定义成功消息。当我查看控制台并检查“网络”选项卡时,我可以看到带有响应标头的各种文件,但是它们都没有包含示例的内容;

https://www.mymerchant.com/Success.jsp?orderKey=MYADMINCODE^MYMERCHANT^T0211010&paymentStatus=AUTHORISED&paymentAmount=1400&paymentCurrency=GBP&mac2=fdbdbc16fbe8d8e56159fc332a5293e32b3d6aea61f10849da5c28819ff56711

我在“网络”标签中看到的某些文件是

https://hpp-sandbox.worldpay.com/app/hpp/62-0/payment/result?validInputs=true&ajax=true

https://example.com/callback.php?paymentStatus=success

ddc.html

index.php

process

根据their docs;

Worldpay到结果URL的重定向消息中包含许多 参数包括:

orderKey,paymentAmount,paymentCurrency,paymentStatus

我已经在我的callback.php中添加了以下内容;

print_r($_GET);
die();

这就是我所看到的;

Array ( [paymentStatus] => success )

关于应该在哪里检查这些参数的任何想法?是不是我在使用测试环境而不是实时环境,也许这些值不是在测试环境中发送的?

他们的文档到处都是...

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...