getRootPath().'public/log/wxnotify.log'; $xmlData = $request->getInput(); if(empty($xmlData)){ return false; } // $weixinConfig = (new SysModel)->getWeixinConfig(); // file_put_contents($logfile, PHP_EOL.date("Y-m-d H:i:s").PHP_EOL.$xmlData.PHP_EOL,FILE_APPEND | LOCK_EX); $wxpay = new wxpayApi(); // $wxpay = new wxpayApi($weixinConfig); //回调验签 $res = $wxpay->notifyCheckSign($xmlData); if(!$res || empty($res["data"])){ return false; } $result=$res["data"]; //验证返回信息 if(empty($result["return_code"]) || $result["return_code"]!="SUCCESS"){ return false; } //验证支付信息 if(empty($result["result_code"]) || $result["result_code"]!="SUCCESS"){ return false; } //查询订单 $out_trade_no = $result["out_trade_no"]; $data = $wxpay->searchOrderQuery($out_trade_no); if(empty($data)){ return false; } //支付成功 if($data["trade_state"]=="SUCCESS"){ $payDataInfo = [ 'totalMoney' =>empty($data["total_fee"]) ? "未返回" : $data["total_fee"]/100, 'payMoney' =>empty($data["cash_fee"]) ? "未返回" : $data["cash_fee"]/100, 'payTradeNo' =>empty($data["transaction_id"]) ? "未返回" : $data["transaction_id"], 'outTradeNo' =>empty($data["out_trade_no"]) ? "未返回" : $data["out_trade_no"], "tradeStatus"=>empty($data["trade_state"]) ? "未返回" : $data["trade_state"], "payTime" =>empty($data["time_end"]) ? "未返回" : $data["time_end"], "attach" =>empty($data["attach"]) ? "未返回" : $data["attach"], ]; $pay_json = json_encode($payDataInfo); (new OrderLib)->orderPay($out_trade_no, $pay_json); } } /** * 微信支付V3异步反馈 * @param Request $request * @return boolean */ public function wxpayNotifyV3(Request $request){ $post = UtilService::getMore([ ['id', ''], ['create_time', ''], ['event_type',''], ['resource_type', ''], ['resource',[]], ['summary', ''], ], $request); if(empty($post["event_type"]) || $post["event_type"] != "TRANSACTION.SUCCESS"){ return false; } if(empty($post["resource_type"]) || $post["resource_type"]!="encrypt-resource"){ return false; } if(empty($post["resource"])){ return false; } $wxpay = new wxpayApiV3(); $result = $wxpay->aesGcmDecrypt([ "associated_data"=>$post["resource"]["associated_data"], "nonce"=>$post["resource"]["nonce"], "ciphertext"=>$post["resource"]["ciphertext"], ]); if(!$result){ return false; } //商家内部订单号 $out_trade_no = $result["out_trade_no"]; $res = $wxpay->searchOrder($out_trade_no); if(!$res){ return false; } $data = json_decode($res,true); //支付成功 if($data["trade_state"]=="SUCCESS"){ $payDataInfo = [ 'totalMoney' =>(empty($data["amount"]) || empty($data["amount"]["total"])) ?"未返回":$data["amount"]["total"]/100, 'payMoney' =>(empty($data["amount"]) || empty($data["amount"]["payer_total"]))?"未返回":$data["amount"]["payer_total"]/100, 'payTradeNo' =>empty($data["transaction_id"]) ? "未返回" : $data["transaction_id"], 'outTradeNo' =>empty($data["out_trade_no"]) ? "未返回" : $data["out_trade_no"], "tradeStatus"=>empty($data["trade_state"]) ? "未返回" : $data["trade_state"], "payTime" =>empty($data["success_time"]) ? "未返回" : $data["success_time"], ]; $pay_json = json_encode($payDataInfo); (new OrderLib)->orderPay($out_trade_no, $pay_json); } } }