微信扫码支付后通知微信后台系统不再发送该单的支付通知

时间:2020-12-03 03:56:25
微信扫码支付成功后。要通知微信后台系统不再发送这个单的通知。但是我发送后还是收到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';
    //---开始处理数据库----
            }

4 个解决方案

#1


肯定是要查询是否重复的
直接输出  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 

#4


插入多条数据表示重复调用了,应该加个标记,执行过就不要再执行了。

#1


肯定是要查询是否重复的
直接输出  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 

#4


插入多条数据表示重复调用了,应该加个标记,执行过就不要再执行了。