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) { }