public ActionResult Paid()
        {
            //============================================================
            // 说明:这个接口是由外部系统调用,GetApplicationId 和 DataSource 不起作用,
            // 在这里不能直接调用这两个方法。
            //============================================================
            Trace.WriteLine("ShoutTaoWeiXinPurchase at " + DateTime.Now);

            var orgId = Guid.Parse("7BBFA36C-8115-47AD-8D47-9E52B58E7EFD");

            Stream s = Request.InputStream;
            byte[] b = new byte[s.Length];
            s.Read(b, 0, (int)s.Length);
            //<xml><OpenId><![CDATA[o1Ux1uHZkxsST2_8Fiy_dJfziqbQ]]></OpenId><AppId><![CDATA[wxa22b9cfd8fdec01a]]></AppId><IsSubscribe>1</IsSubscribe><TimeStamp>1407418465</TimeStamp><NonceStr><![CDATA[3ZMKJpeLwA8IpMrQ]]></NonceStr><AppSignature><![CDATA[ad2f0146edf5b38248f8007e1fbdba7900d38feb]]></AppSignature><SignMethod><![CDATA[sha1]]></SignMethod></xml>
            var postStr = Encoding.UTF8.GetString(b);
            Trace.WriteLine(postStr);

            //==========================================
            // For Debug
            //                postStr = @"<xml><appid><![CDATA[wxe621f4e5e90b13cd]]></appid>
            //<bank_type><![CDATA[ICBC_DEBIT]]></bank_type>
            //<cash_fee><![CDATA[10]]></cash_fee>
            //<fee_type><![CDATA[CNY]]></fee_type>
            //<is_subscribe><![CDATA[Y]]></is_subscribe>
            //<mch_id><![CDATA[10035475]]></mch_id>
            //<nonce_str><![CDATA[51EF186E18DC00C2D31982567235C559]]></nonce_str>
            //<openid><![CDATA[o4mqUjm9hp5qZB0xh0lEkki0SfjU]]></openid>
            //<out_trade_no><![CDATA[1334a94f104a4106a67e43a6be564bf6]]></out_trade_no>
            //<result_code><![CDATA[SUCCESS]]></result_code>
            //<return_code><![CDATA[SUCCESS]]></return_code>
            //<sign><![CDATA[9B27F40620358ECCFB23041418F132CF]]></sign>
            //<time_end><![CDATA[20150302182000]]></time_end>
            //<total_fee>10</total_fee>
            //<trade_type><![CDATA[JSAPI]]></trade_type>
            //<transaction_id><![CDATA[1010010275201503020023832476]]></transaction_id>
            //</xml>";

            var doc = XDocument.Parse(postStr);
            var xml = doc.Root;
            var openId = xml.Elements("openid").Single().Value;
            var appId = xml.Element("appid").Value;
            var isSubscribe = xml.Element("is_subscribe").Value;
            var timeStamp = xml.Element("time_end").Value;
            var year = Convert.ToInt32(timeStamp.Substring(0, 4));
            var month = Convert.ToInt32(timeStamp.Substring(4, 2));
            var day = Convert.ToInt32(timeStamp.Substring(6, 2));

            var nonceStr = xml.Element("nonce_str").Value;
            var appSignature = xml.Element("sign").Value;
            var total_fee = Convert.ToInt32(xml.Element("total_fee").Value);
            var out_trade_no = xml.Element("out_trade_no").Value;
            var transaction_id = xml.Element("transaction_id").Value;
            var bank_type = xml.Element("bank_type").Value;
            var cash_fee = Convert.ToInt32(xml.Element("cash_fee").Value);
            var fee_type = xml.Element("fee_type").Value;
            var mch_id = xml.Element("mch_id").Value;

            var payment = new Payment
            {
                AppId = appId,
                AppSignature = appSignature,
                IsSubscribe = isSubscribe == "1",
                NonceStr = nonceStr,
                OpenId = openId,
                OutTradeNO = out_trade_no,
                TimeEnd = new DateTime(year, month, day),
                TotalFee = total_fee,
                TransactionId = transaction_id,
                BankType = bank_type,
                CashFee = cash_fee,
                FeeType = fee_type,
                MchId = mch_id
            };

            OnPaid(payment);
            Trace.WriteLine("Order purchse success.");
            var reslt =
@"<xml>
   <return_code><![CDATA[SUCCESS]]></return_code>
   <return_msg><![CDATA[OK]]></return_msg>
</xml>";
            return Content(reslt);
        }
        public void OnPaid(Payment payment)
        {

        }