在我们做微信开发过程中,使用微信支付的回调处理业务逻辑时,会遇到模板消息被反复发送的问题,有时连着发七八条或者更多。
其原因在于我们没有进行相应的逻辑判断,没有告诉微信,不需要反复回调了。
我前面开发的一个项目,客户充了一次钱(1000元),反复回调后,给客户连着发了十条消息,客户的充值余额剩余11000多。吓死宝宝了!!!
好歹是做测试,要不这可玩大了。
那么我们如何处理这种情况呢?
最主要的就是对业务的逻辑进行处理。也就是对订单的支付状态进行判断。如果订单支付状态为已支付,则die掉。
直接上代码吧!TP开发的。
$payInfo = D("Payrecord")->where("payrecord_receipt = '$out_trade_no'")->find();
$payrecord_status = $payInfo['payrecord_status'];
if($payrecord_status=='已支付'){
die;
}
然后问题就解决了。并不是什么网上说的,微信服务器响应的问题,找腾讯去吧之类的。
开发过程中的业务逻辑、严密性,还是很重要的。