微信APP支付成功后,回调(C# .netcore)

时间:2024-02-24 19:16:42

微信APP支付成功后,回调(C# .netcore)

 

        [HttpPost]
        public async Task<string> GetNotify()
        {
            //获取回调POST过来的xml数据的代码
            Stream stream = HttpContext.Request.Body;
            byte[] buffer = new byte[HttpContext.Request.ContentLength.Value];
            await stream.ReadAsync(buffer, 0, buffer.Length); //.net core 3.1需要用ReadAsync才不会出错
            string xml = System.Text.Encoding.UTF8.GetString(buffer);

            //System.IO.File.WriteAllText(@"D:\notify.txt", xml);//将POST过来的xml数据写入TXT文件,用于postman测试

            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.LoadXml(xml);

            if (xmlDoc.DocumentElement.GetElementsByTagName("return_code")[0].InnerText == "SUCCESS")
            {
                string RechargeMoney = xmlDoc.DocumentElement.GetElementsByTagName("total_fee")[0].InnerText;  //充值金额
                string RechargeTime = xmlDoc.DocumentElement.GetElementsByTagName("time_end")[0].InnerText;  //充值时间
                string RechargeNo = xmlDoc.DocumentElement.GetElementsByTagName("out_trade_no")[0].InnerText;  //订单号
                string Result_Code = xmlDoc.DocumentElement.GetElementsByTagName("result_code")[0].InnerText;  //result_code
                string Return_Code = xmlDoc.DocumentElement.GetElementsByTagName("return_code")[0].InnerText;  //return_code
                string TransactionId = xmlDoc.DocumentElement.GetElementsByTagName("transaction_id")[0].InnerText;  //商户平台支付单号
                
          
         //这里是进行各种逻辑代码,最好对sign进行下验证
          
                return "<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>"; //回调成功返回给微信,避免重复回调
          return "<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[ERROR]]></return_msg></xml>"; //回调失败返回给微信
        } 
      }