微信扫码支付成功后。要通知微信后台系统不再发送这个单的通知。但是我发送后还是收到3-5条通知。结果数据库里重复写入了数据。请问这是怎么回事要怎么解决?难道是要自已查询数据库是否写入了重复数据?
代码如下:
 $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';
    //---开始处理数据库----
            }

解决方案 »

  1.   

    肯定是要查询是否重复的
    直接输出  echo $xml; 就可以了
    好像指输出 SUCCESS 也是可以的
      

  2.   

    可是为什么就是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