//字典排序拼接字符串function getWxPaySignature($arr){ ksort($arr); $str = ''; foreach ($arr as $k=>$a){ $str .= $k; $str .= '='.$a.'&'; } $str = trim($str,'&'); return $str;}//微信回调验证function weCallbackCheck($xml){ $sign = $xml->sign; $appid = $xml->appid; $bank_type = $xml->bank_type; $cash_fee = $xml->cash_fee; $fee_type = $xml->fee_type; $is_subscribe = $xml->is_subscribe; $mch_id = $xml->mch_id; $nonce_str = $xml->nonce_str; $openid = $xml->openid; $out_trade_no = $xml->out_trade_no; $result_code = $xml->result_code; $return_code = $xml->return_code; $time_end = $xml->time_end; $total_fee = $xml->total_fee; $trade_type = $xml->trade_type; $transaction_id = $xml->transaction_id; $device_info = $xml->device_info; $signArr = array( 'appid' => "$appid", 'bank_type' => "$bank_type", 'cash_fee' => "$cash_fee", 'device_info' => "$device_info", 'fee_type' => "$fee_type", 'is_subscribe' => "$is_subscribe", 'mch_id' => "$mch_id", 'nonce_str' => "$nonce_str", 'openid' => "$openid", 'out_trade_no' => "$out_trade_no", 'result_code' => "$result_code", 'return_code' => "$return_code", 'time_end' => "$time_end", 'total_fee' => "$total_fee", 'trade_type' => "$trade_type", 'transaction_id' => "$transaction_id" ); foreach ($signArr as $key => $value) { if($value == ''){ unset($signArr[$key]); } } $stringA = getWxPaySignature($signArr);//数组字典排序拼接字符串 $stringSignTemp = $stringA.'&key=???';//设置的key $signValue = md5($stringSignTemp); $signValue = strtoupper($signValue); if($signValue == $sign){ return 'success';//支付成功 }else{ file_put_contents('failure.txt',json_encode($signArr).PHP_EOL,FILE_APPEND); return 'failure'; }}$xmlstr = file_get_contents("php://input");$xml=simplexml_load_string($xmlstr, 'SimpleXMLElement', LIBXML_NOCDATA);if(weCallbackCheck($xml)=="success"){ echo "支付成功";}