微信扫码支付成功后。要通知微信后台系统不再发送这个单的通知。但是我发送后还是收到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';
//---开始处理数据库----
}
代码如下:
$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';
//---开始处理数据库----
}
直接输出 echo $xml; 就可以了
好像指输出 SUCCESS 也是可以的
下面是我写的日志。
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