【PHP原生】xml和数组互转(微信支付签名算法)
时间:2018-10-16 13:54:51
收藏:0
阅读:999
数组转XML
publicfunction arrayToXml($arr) { $xml ="<xml>"; foreach($arr as $key => $val){ if(is_numeric($val)){ $xml .="<". $key .">". $val ."</". $key .">"; }else $xml .="<". $key ."><![CDATA[". $val ."]]></". $key .">"; } $xml .="</xml>"; return $xml; }
XML转数组
publicfunction xmltoarray($xml) { //禁止引用外部xml实体 libxml_disable_entity_loader(true); $xmlstring = simplexml_load_string($xml,‘SimpleXMLElement‘, LIBXML_NOCDATA); $val = json_decode(json_encode($xmlstring),true); return $val; }
微信支付签名sign算法
//生成签名 //$data参与签名的关联数组,$key商户appkey publicfunction createSign(array $data,string $key) { ksort($data); //参与签名的数组重新按升序排列 $str =‘‘; foreach($data as $k => $v){ $str .= $k .‘=‘. $v .‘&‘; //数组转换成URL参数形式 } $str .=‘key=‘. $key; //拼接商户秘钥 return strtoupper(md5($str)); //MD5加密并转换成大写字母 }
评论(0)