$xml = isset($GLOBALS["HTTP_RAW_POST_DATA"]) ? $GLOBALS['HTTP_RAW_POST_DATA'] : file_get_contents("php://input"); $data = xmlToArray($xml); errorLog('回调数据:',var_export($data,true)); if($data['return_code'] == 'SUCCESS' && $data['result_code'] == 'SUCCESS'){ if(checkSign($data)) { $transaction_id = $data['transaction_id']; //微信支付订单号 $out_trade_no = $data['out_trade_no']; //商家订单号 $money = $data['total_fee']; //交易金额 errorLog('微信支付返回结果,微信支付订单号:'.$transaction_id.',商家订单号:'.$out_trade_no,[]); 这里可以做你想做的事情了,比如修改支付状态等各种逻辑 } else { errorLog('微信支付返回结果签名验证失败',$data); } }else{ errorLog('微信支付返回结果',$data); } /* * 验证签名 * @params array $result : 微信支付成功返回的结果数组 * return bool $ret : 成功true,失败false * */ function checkSign(array $data) { $str = ''; ksort($data); foreach ($data as $k => $v) { if($k != 'sign') $str .= $k.'='.$v.'&'; } $temp = $str . 'key=你的商户密钥'; //key:商户支付密钥 $sign = strtoupper(md5($temp)); return $sign == $data['sign'] ? true : false; } function errorLog($msg,$ret) { //$path = dirname(dirname(dirname(dirname(dirname(__FILE__))))); //echo $path;die; file_put_contents($_SERVER['DOCUMENT_ROOT'].'/log/'.date('Y-m-d').'.log', "[" . date('Y-m-d H:i:s') . "] ".$msg."," .json_encode($ret).PHP_EOL, FILE_APPEND); } /* * XML转array * @params xml $xml : xml 数据 * return array $data : 转义后的array数组 */ function xmlToArray($xml) { libxml_disable_entity_loader(true); $xmlstring = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA); $val = json_decode(json_encode($xmlstring),true); return $val; }
微信支付回调
最新推荐文章于 2022-11-20 14:05:38 发布