c#XMLデータの読み出し


1.まずインタフェースを呼び出し、指定したurlにpostデータを返し、データを返す関数を指定します.
    protected string PostXmlToUrl(string url, string postData)

    {

        string returnmsg = "";

        using (System.Net.WebClient wc = new System.Net.WebClient())

        {

            returnmsg = wc.UploadString(url, "POST", postData);

        }

        return returnmsg;

    }

postのデータフォーマットは
urlのパラメータフォーマット(a=1&b=2&c=3....)
xmlフォーマット(....)
返されるデータフォーマットは、インタフェースによって決定されます.
2.メソッド呼び出し:
        post_data = wxPayBaseHelper.UnifiedPayOrder(wxobPay, key);



        requestData = PostXmlToUrl("https://api.mch.weixin.qq.com/pay/unifiedorder", post_data);

ここでpost_dataはxml文字列です.
<xml>

   <appid>wx2421b1c4370ec43b</appid>

   <attach>    </attach>

   <body>JSAPI    </body>

   <mch_id>10000100</mch_id>

   <nonce_str>1add1a30ac87aa2db72f57a2375d8fec</nonce_str>

   <notify_url>http://wxpay.weixin.qq.com/pub_v2/pay/notify.v2.php</notify_url>

   <openid>oUpF8uMuAJO_M2pxb1Q9zNjWeS6o</openid>

   <out_trade_no>1415659990</out_trade_no>

   <spbill_create_ip>14.23.150.211</spbill_create_ip>

   <total_fee>1</total_fee>

   <trade_type>JSAPI</trade_type>

   <sign>0CB01533B8C1EF103065174F50BCA001</sign>

</xml> 

返されたrequestDataもxml文字列です.
 
<xml>

   <return_code><![CDATA[SUCCESS]]></return_code>

   <return_msg><![CDATA[OK]]></return_msg>

   <appid><![CDATA[wx2421b1c4370ec43b]]></appid>

   <mch_id><![CDATA[10000100]]></mch_id>

   <nonce_str><![CDATA[IITRi8Iabbblz1Jc]]></nonce_str>

   <sign><![CDATA[7921E432F65EB8ED0CE9755F0E86D72F]]></sign>

   <result_code><![CDATA[SUCCESS]]></result_code>

   <prepay_id><![CDATA[wx201411101639507cbf6ffd8b0779950874]]></prepay_id>

   <trade_type><![CDATA[JSAPI]]></trade_type>

</xml> 

 
このインタフェースを呼び出すのはprepay_を取得するためです.id、インタフェースから返された結果にはprepayが含まれています.id、次にそれを取り出し、xml文字列をSortedDictionaryタイプに変換する関数を1つください.
        /// <summary>

        ///  XML     SortedDictionary<string, string>  

        /// </summary>

        /// <param name="strxml"></param>

        /// <returns></returns>

        public SortedDictionary<string, string> GetInfoFromXml(string xmlstring)

        {

            SortedDictionary<string, string> sParams = new SortedDictionary<string, string>();

            try

            {

                XmlDocument doc = new XmlDocument();

                doc.LoadXml(xmlstring);

                XmlElement root = doc.DocumentElement;

                int len = root.ChildNodes.Count;

                for (int i = 0; i < len; i++)

                {

                    string name = root.ChildNodes[i].Name;

                    if (!sParams.ContainsKey(name))

                    {

                        sParams.Add(name.Trim(), root.ChildNodes[i].InnerText.Trim());

                    }

                }

            }

            catch (Exception ex)

            {

                //LxCommomHelper.Commom.TraceLog.LogWrite(ex.ToString(), LxCommomHelper.Commom.LogEnum.Pay);

            }

            return sParams;

        }

次にメソッドを呼び出します.
        SortedDictionary<string, string> requestXML = wxPayBaseHelper.GetInfoFromXml(requestData);

        foreach (KeyValuePair<string, string> k in requestXML)

        {

            if (k.Key == "prepay_id")

            {

                prepay_id = k.Value;

                break;

            }

        }

OK、またprepayを手に入れたid、最後に微信支払いを開始しました.続きます.