我正在开发一个付款确认模块。当买家成功确认付款后,网关会将他/她重定向到我的成功网址,如下所示:
http://mysite.com/success.php?oid=P01&amt=100&refId=TXN3456
网关可以使用其交易验证 URL 来验证当前交易,如下所示:
https://paymentgateway.com/epay/transverify.php?oid=P01&amt=100&refId=TXN3456
此 url 接受 POST/GET 请求并返回 xml 响应为
<response>
<status>Success</status>
</response>
或者
<response>
<status>Failed</status>
</response>
现在我的问题是如何在不离开我的站点的情况下将确认请求发送到网关,以便我可以在成功验证响应时更新我的订单付款状态。作为一种解决方案,我尝试向支付网关发送 ajax 请求,但可能是由于跨域请求限制,我无法这样做。他们是否有任何其他方法来发送此请求并获得响应?
好的,根据建议,我使用 cURL 成功获得响应,:)
我的代码:
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://paymentgateway.com/epay/transverify.php");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
$data = array(
'oid' => 'P01',
'amt' => '100',
'rid' => 'TXN3456'
);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$contents = curl_exec($ch);
curl_close($ch);
echo $contents;
?>
我现在只需要简单的东西,如何比较成功或失败的结果?由于返回的结果($contents)是一个xml数据?谢谢!