//回调校验
public function notify(){
//微信来的通知
$weixin = file_get_contents('php://input');
//$weixin ="<xml><appid><![CDATA[APPID]]></appid>\n<bank_type><![CDATA[OTHERS]]></bank_type>\n<cash_fee><![CDATA[1]]></cash_fee>\n<fee_type><![CDATA[CNY]]></fee_type>\n<is_subscribe><![CDATA[N]]></is_subscribe>\n<mch_id><![CDATA[MCHID]]></mch_id>\n<nonce_str><![CDATA[5f485f6a36efc]]></nonce_str>\n<openid><![CDATA[o6Yya076u3kY9ExdgIpi-SDXZOsc]]></openid>\n<out_trade_no><![CDATA[20200828093538226231]]></out_trade_no>\n<result_code><![CDATA[SUCCESS]]></result_code>\n<return_code><![CDATA[SUCCESS]]></return_code>\n<sign><![CDATA[1808F30039789D9B7A47E84C390AF304]]></sign>\n<time_end><![CDATA[20200828095549]]></time_end>\n<total_fee>1</total_fee>\n<trade_type><![CDATA[NATIVE]]></trade_type>\n<transaction_id><![CDATA[4200000719202008288009765782]]></transaction_id>\n</xml>";
//解析微信传来的参数
$obj = simplexml_load_string($weixin,"SimpleXMLElement", LIBXML_NOCDATA);
$data = json_decode(json_encode($obj),true);
//我收到通知了
$paydata=array();
if($data['return_code']=='SUCCESS'){
//我检查我的库有没有
$out_trade_no=$data['out_trade_no'];
$pay_count=D('pay_lists')->where(array('order_id'=>$out_trade_no))->find();
//原来我有此订单
if(count($pay_count)>0){
//我还要查询下订单 校验是否一致
$sign_check=$this->app->order->queryByOutTradeNumber($out_trade_no);
if($sign_check['result_code']=='SUCCESS'&&$data['result_code']=='SUCCESS'){
//金额校对结果
$amount =$pay_count['amount']*100; //订单的单位是元 而微信这里是分
if($data['total_fee']=$sign_check['total_fee']=$amount){
//三方校对都合法了 是时候改变业务数据的支付状态了
$paydata['pay_status'] = 1;
$paydata['pay_time'] = time();
$paydata['remark']=$sign_check['trade_state_desc'];
}else{
$paydata['pay_status'] = 2;
$paydata['remark']='支付失败:金额不一致';
}
}else{
$paydata['pay_status'] = 2;
$paydata['remark']='支付失败:返回失败状态';
}
//处理完业务告诉微信
$result=D('pay_lists')->where(array('order_id'=>$out_trade_no))->save($paydata);
if($result){
return true;
}else{
return false;
}
}else{
//没有这个订单了 不再发消息来了
return true;
}
}else{
return false; //没接收到 下次继续通知我
}
}