【PHP原生】xml和數組互轉(微信支付簽名算法)
阿新 • • 發佈:2018-10-16
互轉 amp 字母 ble md5加密 clas toarray sig val
數組轉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商戶appkeypublicfunction 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加密並轉換成大寫字母 }
【PHP原生】xml和數組互轉(微信支付簽名算法)