/** * 微信异步通知 * @author 王柯 <wangke.email@foxmail.com> * @return void */ public function WxPayNotify() { require_once EXTEND_PATH.'/wxpay/lib/WxPay.Data.php'; $wxpay = new \WxPayDataBase(); Db::startTrans(); try{ //接收微信返回的数据数据,返回的xml格式 $xmlData = file_get_contents('php://input'); //$result = \WxPayResults::Init($xmlData); //将xml格式转换为数组 $data = $wxpay->FromXml($xmlData); if($data['sign'] == $wxpay->getSign($data)){ if ($data['result_code'] == 'SUCCESS'){ //这儿会记录多次数据信息 回调多次 Log::write(json_encode($request)."\r\n"); //中间逻辑代码就不贴上来了 Db::commit(); //这儿返回数据给微信试了无数个办法还是不行 //echo '<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>';exit; $return['return_code'] = 'SUCCESS'; $return['return_msg'] = 'OK'; $string = self::arrayToXml($return); echo $string; exit; }else{ Log::write("支付失败信息:".json_encode($data).date("Y-m-d H:i:s"),time()."\r\n"); } }else{ Log::write("签名验证失败:".json_encode($data).date("Y-m-d H:i:s"),time()."\r\n"); } }catch (\Exception $e){ Db::rollback(); Log::write($e->getMessage()."\r\n"."支付异常信息:".json_encode($data).date("Y-m-d H:i:s"),time()."\r\n"); } } /** * 数组转xml * @param array $arr 数组参数 *必传 * @author 王柯 <wangke.email@foxmail.com> * @return string */ public static function arrayToXml($arr){ $xml = "<xml>"; foreach($arr as $key => $val){ if(is_numeric($val)){ $xml.="<".$key.">".$val."</".$key.">"; }else{ $xml.="<".$key."><![CDATA[".$val."]]></".$key.">"; } } $xml.="</xml>"; return $xml; } /** * xml转数组 * @param string $xml xml数据 *必传 * @author 王柯 <wangke.email@foxmail.com> * @return array|bool|\mix|mixed|\stdClass|string */ public static function xmlToArray($xml){ $array_data = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true); return $array_data; }
微信APP支付一直回调问题 求解决
最新推荐文章于 2021-03-11 04:46:10 发布