问题描述
我正在开发一个小型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://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 (将#修改为@)