微信支付支付结果通知接口接收到的数据是空的。
1.已经通过postman测试过接口外网正常可以访问:2021-03-17 21:54:33:notifyYH100:POST{"test":"dsdvsd"}
2.使用的V2版本微信支付,前端支付正常,就是支付结果通知有问题,日志记录接收到的数据是空的:2021-03-17 21:32:48:notifyYH100:POST[]
3.APP支付、jsapi支付和nactive支付都一样的问题
4.微信支付上的支付目录和回调域名都已配置好
请问各路大神,这个问题如何解决?或者告知问题原因
以下仅供参考:
1、V2的通知是xml格式
2、xml的数据不会保存在body里,而是保存在raw-body里,看看你们的后台语言是该如何处理raw-body的。
$xml = file_get_contents("php://input");
libxml_disable_entity_loader(true);
$data = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
有2021-03-17 21:32:48:notifyYH100日志,说明已经被触达,v2的通知是xml格式的,不是json,要排查一下你处理通知的逻辑,是不是有问题。
$xml = file_get_contents("php://input");
libxml_disable_entity_loader(true);
$data = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
function xml2array($xml) {
$array = array();
$tmp = null;
try{
$tmp = (array) simplexml_load_string($xml);
}catch(Exception $e){}
if($tmp && is_array($tmp)){
foreach ( $tmp as $k => $v) {
$array[$k] = (string) $v;
}
}
return $array;
}
}