微信官方文檔非人類,在此整理
支付結果通用通知微信是xml的形式發送給你的,但貌似必須要用這個接收
$returnResult = $GLOBALS['HTTP_RAW_POST_DATA'];
使用$_POST接收不了,要問為何,百度腦補
接收到的數據與官方提供的字段無區別
官方demo 提供了解析方法 - 以下是我簡化后的
public function FromXml($xml) { libxml_disable_entity_loader(true); return json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true); }
解析后則是以下格式
array( 'appid':'xxxxx', .... );
所有數據通過自己的邏輯保存后需要告訴微信一聲,這時候需要再將代碼組成xml發送給微信,微信給定了固定格式和字段
<xml> <return_code><![CDATA[SUCCESS]]></return_code> <return_msg><![CDATA[OK]]></return_msg> </xml>
還是內部提供的xml組成的方法
public function ToXml($data) { $xml = "<xml>"; foreach ($data as $key=>$val) { if (is_numeric($val)){ $xml.="<".$key.">".$val."</".$key.">"; }else{ $xml.="<".$key."><![CDATA[".$val."]]></".$key.">"; } } $xml.="</xml>"; return $xml; }
有問題下方留言~