在交易结束后,银联系统通过后台通知将交易结果发给商户或机构。后台通知以标准的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>
第一次通知失败后,会通过退避策略进行通知重发,最多发送五次。由于网络等原因,商户会收到重复的后台通知。我查看了后台通知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>
不是呢,一楼我贴的文字是官方文档里的,不是被动的,是主动异步通知商户
支付宝是付款成功后,支付宝根据你post的notify_url的地址发送通知,你这边验证成功之后便会echo 'success'
至于你说的返回码200,你可以去百度一下http的状态码,200代表服务器成功处理请求,这个是并不需要PHP文件post什么的
你返回给他 不是你再去POST 什么 返回这个状态或者 代码就可以了 他请求你的回调数据
像这样Map<String, String> respParam = getAllRequestParam(request);
还是用他们提供的SDKUtil包里面的DKUtil.convertResultStringToMap()这个方法去解析返回的报文数据?
我现在在做这个,看他们给的文档和给的具体demo已经搞糊涂了,demo里面是用的request但是文档里面又说是用给的方法解析报文