【php】微信退款数据解析

private function decodeReqInfo($req_info){
        $key = md5(Config::get("weixin_mch_key"));
        $data = base64_decode($req_info);
        $re = openssl_decrypt($data,'AES-256-ECB',$key,OPENSSL_NO_PADDING);
        if($re == false)
            throw new SystemInternalError('info decryption failed!');

        $len = strlen($re);
        $pad = ord($re[$len - 1]);
        if ($pad < 1 || $pad > 32)
            $pad = 0;
        $xml = substr($re, 0, $len - $pad);
        return $this->xmlToArray($xml);
    }

public function xmlToArray($string)
    {
        $xml = simplexml_load_string($string, 'SimpleXMLElement', LIBXML_NOCDATA);
        $array = json_decode(json_encode($xml), TRUE);
        return $array;
    }

public function arrayToXml($data, $root = true){
        $str="";
        if($root)$str .= "<xml>";
        foreach($data as $key => $val){
            if(is_array($val)){
                $child = $this->arrayToXml($val, false);
                $str .= "<$key>$child</$key>";
            }else{
                $str.= "<$key><![CDATA[$val]]></$key>";
            }
        }
        if($root)$str .= "</xml>";
        return $str;
    }

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
微信退款通知中,微信会将通知以POST请求方式发送到您在商户平台设置的回调URL上。接收到退款通知后,您需要使用PHP代码解析和处理通知数据,并对重要数据进行解密。 以下是一个使用PHP处理微信退款通知并解密重要数据的示例代码: ```php <?php // 获取POST请求的原始数据 $xmlData = file_get_contents("php://input"); // 将XML数据转换为关联数组 $data = simplexml_load_string($xmlData, 'SimpleXMLElement', LIBXML_NOCDATA); $data = json_decode(json_encode($data), true); // 解密加密的重要数据 $encryptedData = $data['req_info']; // 加密的数据 $apiKey = '商户API密钥'; // 商户API密钥,需要替换为实际的密钥 // 使用AES-256-ECB算法进行解密 $decryptedData = openssl_decrypt(base64_decode($encryptedData), 'AES-256-ECB', md5($apiKey), OPENSSL_RAW_DATA); // 将解密后的数据转换为关联数组 $refundData = simplexml_load_string($decryptedData, 'SimpleXMLElement', LIBXML_NOCDATA); $refundData = json_decode(json_encode($refundData), true); // 在这里可以根据需求处理退款通知数据,比如更新订单状态、记录日志等 // 返回成功响应给微信服务器 echo '<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>'; ?> ``` 请注意将代码中的`商户API密钥`替换为您自己的商户API密钥。此外,您还需要针对实际的业务需求进行相应的处理,比如更新订单状态、记录日志等。 重要提示:确保您的服务器使用HTTPS协议来接收和处理微信退款通知,以确保数据的安全性,同时也是微信支付服务的要求。 希望以上代码能帮助您解决问题。如果有任何进一步的疑问,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值