1. 程式人生 > >【PHP原生】xml和數組互轉(微信支付簽名算法)

【PHP原生】xml和數組互轉(微信支付簽名算法)

互轉 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商戶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加密並轉換成大寫字母 }

【PHP原生】xml和數組互轉(微信支付簽名算法)