在交易结束后,银联系统通过后台通知将交易结果发给商户或机构。后台通知以标准的HTTP协议的POST方法向商户的后台通知URL发送,并设置一个超时计时器,通常设置为10s。商户在收到通知,解析后应立即返回应答报文。仅当POST返回码为200时,才认为商户已经成功收到并且能正确解析后台通知,其他返回码则被认为通知失败。如果计时器超时,没有收到应答报文,也被认为通知失败。
第一次通知失败后,会通过退避策略进行通知重发,最多发送五次。由于网络等原因,商户会收到重复的后台通知。我查看了后台通知URL的源代码,没有发现是如何post这个返回码的,有高手能告知否?也就是如何应答报文的?<?php
include_once $_SERVER ['DOCUMENT_ROOT'] . '/upacp_sdk_php/gbk/func/common.php';
include_once $_SERVER ['DOCUMENT_ROOT'] . '/upacp_sdk_php/gbk/func/secureUtil.php';
?>
<!DOCTYPE unspecified PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
<title>响应页面</title><style type="text/css">
body table tr td {
font-size: 14px;
word-wrap: break-word;
word-break: break-all;
empty-cells: show;
}
</style>
</head>
<body>
<table width="800px" border="1" align="center">
<tr>
<th colspan="2" align="center">响应结果</th>
</tr>

<?php
foreach ( $_POST as $key => $val ) {
?>
<tr>
<td width='30%'><?php echo isset($mpi_arr[$key]) ?$mpi_arr[$key] : $key ;?></td>
<td><?php echo $val ;?></td>
</tr>
<?php }?>
<tr>
<td width='30%'>验证签名</td>
<td><?php
if (isset ( $_POST ['signature'] )) {

echo verify ( $_POST ) ? '验签成功' : '验签失败';
} else {
echo '签名为空';
}
?></td>
</tr> </table></body></html>

解决方案 »

  1.   

    to luojxun:
    不是呢,一楼我贴的文字是官方文档里的,不是被动的,是主动异步通知商户
      

  2.   

    用户支付成功,银联会返回交易数据给用户,具体可查看银行api文档。
      

  3.   

    没用过银联,但应该和支付宝的流程差不多.
    支付宝是付款成功后,支付宝根据你post的notify_url的地址发送通知,你这边验证成功之后便会echo 'success'
    至于你说的返回码200,你可以去百度一下http的状态码,200代表服务器成功处理请求,这个是并不需要PHP文件post什么的
      

  4.   

    銀聯會回調你服務器上一個地址的。仔細看看API文檔。
      

  5.   

    状态码就是 输出状态 200  如果仅仅是 要200  那就 echo  200.
    你返回给他 不是你再去POST 什么 返回这个状态或者 代码就可以了 他请求你的回调数据
      

  6.   

    楼主我想请教下你,你在获取银联的主动通知的时候如何获取他们返回给我们的报文数据呢?直接用request取出来就可以了吗?
    像这样Map<String, String> respParam = getAllRequestParam(request);
    还是用他们提供的SDKUtil包里面的DKUtil.convertResultStringToMap()这个方法去解析返回的报文数据?
    我现在在做这个,看他们给的文档和给的具体demo已经搞糊涂了,demo里面是用的request但是文档里面又说是用给的方法解析报文
      

  7.   

    仅当POST返回码为200时,才认为商户已经成功收到并且能正确解析后台通知这不是很明白了吗?返回码为200应该说的是HTTP的状态码为200,也就是说,你这个页面没报错,那就代表通知成功了