以下是一个处理微信退款通知的PHP示例代码:
<?php
// 获取微信退款通知的原始数据
$xmlData = file_get_contents('php://input');
$data = simplexml_load_string($xmlData, 'SimpleXMLElement', LIBXML_NOCDATA);
// 验证签名
$sign = $data->sign;
unset($data->sign);
$sortedData = [];
foreach ($data as $key => $value) {
$sortedData[$key] = (string)$value;
}
ksort($sortedData);
$sortedData['key'] = 'YOUR_MERCHANT_KEY'; // 替换为你的商户密钥
$signature = strtoupper(md5(urldecode(http_build_query($sortedData))));
if ($signature != $sign) {
// 签名验证失败,可以记录日志等操作
exit('FAIL');
}
// 验证通过,处理退款通知
// 根据退款通知的内容,执行相应的逻辑操作,例如更新订单状态、退款金额等
// 返回处理结果给微信服务器
$result = [
'return_code' => 'SUCCESS',
'return_msg' => 'OK',
];
echo arrayToXml($result);
// 将数组转换为XML格式
function arrayToXml($data)
{
$xml = new SimpleXMLElement('<xml></xml>');
foreach ($data as $key => $value) {
if (is_numeric($value)) {
$xml->addChild($key, $value);
} else {
$xml->addChild($key)->addCData($value);
}
}
return $xml->asXML();
}
?>
请注意,上述代码中的YOUR_MERCHANT_KEY
需要替换为你的商户密钥。此外,你还需要将该代码部署到能够接收微信退款通知的服务器上,并将该服务器的地址配置到微信商户平台的退款通知URL中。
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站