2024年3月26日发(作者:)

* @将Dictionary转成xml

* @return 经转换得到的xml串

* @throws WxPayException

**/

public string ToXml()

{

//数据为空时不能转化为xml格式

if (0 == m_)

{

throw new WxPayException("WxPayData数据为空!");

}

string xml = "";

foreach (KeyValuePair pair in m_values)

{

//字段值不能为null,会影响后续流程

if ( == null)

{

throw new WxPayException("WxPayData内部含有值为null的字段!");

}

if (e() == typeof(int) || e() == typeof(float))

{

xml += "<" + + ">" + + "";

}

else if (e() == typeof(string))

{

xml += "<" + + ">" + "";

}

else//除了string和int类型不能含有其他数据类型

{

throw new WxPayException("WxPayData字段数据类型错误!");

}

}

xml += "";

return xml;

}

/**

* @将xml转为WxPayData对象并返回对象内部的数据

* @param string 待转换的xml串

* @return 经转换得到的Dictionary

* @throws WxPayException

*/

public SortedDictionary FromXml(string xml)

{

if (OrEmpty(xml))

{

throw new WxPayException("将空的xml串转换为WxPayData不合法!");

}

SafeXmlDocument xmlDoc = new SafeXmlDocument();

l(xml);

XmlNode xmlNode = hild;//获取到根节点

XmlNodeList nodes = odes;

foreach (XmlNode xn in nodes)

{

XmlElement xe = (XmlElement)xn;

m_values[] = ext;//获取xml的键值对到WxPayData内部的数据中

}

try

{

if (m_values["return_code"] + "" != "SUCCESS")

{

return m_values;

}

CheckSign();//验证签名,不通过会抛异常

}

catch (WxPayException ex)

{

throw new WxPayException(e);

}

return m_values;

}

/**

* @Dictionary格式转化成url参数格式

* @ return url格式串, 该串不包含sign字段值

*/

public string ToUrl()

{