微信官方文档非人类,在此整理
支付结果通用通知微信是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;
}
有问题下方留言~
原创文章,作者:CrazyCodes,如若转载,请注明出处:https://blog.fastrun.cn/2016/07/11/1-47/