代码如下:
$postStr = file_get_contents('php://input');
if (! empty($postStr)) {
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$pay = new Pay();
$check_sign = $pay->checkSign($postObj, $postObj->sign);
if ($postObj->result_code == 'SUCCESS'&&$check_sign == 1)
{
//写日志
$file = 'log.txt';
$tstr = date("Y-m-d H:i:s");
$str = $tstr."callback success\n";
if($f = file_put_contents($file, $str,FILE_APPEND))
{
echo "写入成功。<br />";
}
//---返回微信数据?让微信停止发送?
$xml = "<xml>
<return_code><![CDATA[SUCCESS]]></return_code>
<return_msg><![CDATA[OK]]></return_msg>
</xml>";
echo $xml;
echo 'SUCCESS';
//---开始处理数据库----
}
4 个解决方案
#1
肯定是要查询是否重复的
直接输出 echo $xml; 就可以了
好像指输出 SUCCESS 也是可以的
直接输出 echo $xml; 就可以了
好像指输出 SUCCESS 也是可以的
#2
谢谢,第一次搞这个,因为微信会回复8次,以为输出了SUCCESS不用查询。但是结果是数据库里经常是重复写了三到五条数据
#3
可是为什么就是echo $xml; 后还是不停的收到微信发来的信息呢?是网络原因还是什么?
下面是我写的日志。
2017-09-21 16:44:45callback success //回调,这里处理了echo xml
2017-09-21 16:44:45OrderPayment status is0 //判断数据库是否处理
2017-09-21 16:44:45 type = 4 member recharge LinePay.
2017-09-21 16:44:45 member recharge_money.
2017-09-21 16:44:45 Status = 1 Out_trade_no=1505983461154 member recharge_money success .//处理数据库
2017-09-21 16:44:56callback success //再一次收到回调
2017-09-21 16:44:56OrderPayment status is1
2017-09-21 16:44:56OrderPayment status is1return
2017-09-21 16:45:13callback success //第三次收到回调
2017-09-21 16:45:13OrderPayment status is1
2017-09-21 16:45:13OrderPayment status is1return
下面是我写的日志。
2017-09-21 16:44:45callback success //回调,这里处理了echo xml
2017-09-21 16:44:45OrderPayment status is0 //判断数据库是否处理
2017-09-21 16:44:45 type = 4 member recharge LinePay.
2017-09-21 16:44:45 member recharge_money.
2017-09-21 16:44:45 Status = 1 Out_trade_no=1505983461154 member recharge_money success .//处理数据库
2017-09-21 16:44:56callback success //再一次收到回调
2017-09-21 16:44:56OrderPayment status is1
2017-09-21 16:44:56OrderPayment status is1return
2017-09-21 16:45:13callback success //第三次收到回调
2017-09-21 16:45:13OrderPayment status is1
2017-09-21 16:45:13OrderPayment status is1return
#4
插入多条数据表示重复调用了,应该加个标记,执行过就不要再执行了。
#1
肯定是要查询是否重复的
直接输出 echo $xml; 就可以了
好像指输出 SUCCESS 也是可以的
直接输出 echo $xml; 就可以了
好像指输出 SUCCESS 也是可以的
#2
谢谢,第一次搞这个,因为微信会回复8次,以为输出了SUCCESS不用查询。但是结果是数据库里经常是重复写了三到五条数据
#3
可是为什么就是echo $xml; 后还是不停的收到微信发来的信息呢?是网络原因还是什么?
下面是我写的日志。
2017-09-21 16:44:45callback success //回调,这里处理了echo xml
2017-09-21 16:44:45OrderPayment status is0 //判断数据库是否处理
2017-09-21 16:44:45 type = 4 member recharge LinePay.
2017-09-21 16:44:45 member recharge_money.
2017-09-21 16:44:45 Status = 1 Out_trade_no=1505983461154 member recharge_money success .//处理数据库
2017-09-21 16:44:56callback success //再一次收到回调
2017-09-21 16:44:56OrderPayment status is1
2017-09-21 16:44:56OrderPayment status is1return
2017-09-21 16:45:13callback success //第三次收到回调
2017-09-21 16:45:13OrderPayment status is1
2017-09-21 16:45:13OrderPayment status is1return
下面是我写的日志。
2017-09-21 16:44:45callback success //回调,这里处理了echo xml
2017-09-21 16:44:45OrderPayment status is0 //判断数据库是否处理
2017-09-21 16:44:45 type = 4 member recharge LinePay.
2017-09-21 16:44:45 member recharge_money.
2017-09-21 16:44:45 Status = 1 Out_trade_no=1505983461154 member recharge_money success .//处理数据库
2017-09-21 16:44:56callback success //再一次收到回调
2017-09-21 16:44:56OrderPayment status is1
2017-09-21 16:44:56OrderPayment status is1return
2017-09-21 16:45:13callback success //第三次收到回调
2017-09-21 16:45:13OrderPayment status is1
2017-09-21 16:45:13OrderPayment status is1return
#4
插入多条数据表示重复调用了,应该加个标记,执行过就不要再执行了。