把稳:同样的关照可能会多次发送给商户系统。商户系统必须能够精确处理重复的关照。
推举的做法是,当收到关照进行处理时,首先检讨对应业务数据的状态,判断该关照是否已经处理过,如果没有处理过再进行处理,如果处理过则直接返回结果成功。在对业务数据进行状态检讨和处理之前,要采取数据锁进行并发掌握,以避免函数重入造成的数据混乱。特殊提醒:商户系统对付支付结果关照的内容一定要做署名验证,防止数据透露导致涌现“假关照”,造成资金丢失。
用户在微信客户端完成支付后(提示已经成功付费),微信会发送给第三方做事器XML格式的数据关照包,在返回的参数中可以看到,用户发送的数据会原样返回,如订单号(out_rade_no)等,用户可以根据此参数值定位到自己系统里面的订单进行处理。同时,也返回了微信交易订单号(transaction_id),可以通过它进行数据精确性的核对。

在index()方法的统一下单接口中设置的notify_url为:
http://域名/wxpay/index.php/wechat/pay/wxnotify
新增wxnotify()方法,增加以下代码:
在数据库中新增db_logs表,数据表仅有id(int4)主键和content(text)两个字段,方便记录吸收到的要求信息。
在方法中,首先,获取微信下发的数据信息(XML格式,POST类型):
$xml=$GLOBALS['HTTP_RAW_POST_DATA'];
其次,把XML格式的数据转换为数组类型,并记录到数据库logs表中,然后,对吸收到的数据进行验证:
接着,对验证结果进行匹配比拟:
末了,构建相应参数并发送给微信关照接口: