ASP.NET CORE微信支付回撥示例程式碼

牛腩發表於2024-08-08
ASP.NET CORE微信支付回撥示例程式碼
       /// <summary>
       /// 接收微信支付非同步通知 
       /// </summary>
       /// <returns></returns>
       public async Task<ActionResult> NotifyUrl() {
           // 讀取請求體中的資料
           /*
            <xml>
               <appid><![CDATA[wxd64fd8b6cee248db]]></appid>
               <bank_type><![CDATA[OTHERS]]></bank_type>
               <cash_fee><![CDATA[1]]></cash_fee>
               <fee_type><![CDATA[CNY]]></fee_type>
               <is_subscribe><![CDATA[N]]></is_subscribe>
               <mch_id><![CDATA[1628692716]]></mch_id>
               <nonce_str><![CDATA[776c2f5829eb4656ba7c7d9113e952e0]]></nonce_str>
               <openid><![CDATA[oOGeG6xoflRianAWRn8UpyCgyZiM]]></openid>
               <out_trade_no><![CDATA[20240808105415f1f6]]></out_trade_no>
               <result_code><![CDATA[SUCCESS]]></result_code>
               <return_code><![CDATA[SUCCESS]]></return_code>
               <sign><![CDATA[31EEED7D5D8F220856F4A961673D5B58]]></sign>
               <time_end><![CDATA[20240808105434]]></time_end>
               <total_fee>1</total_fee>
               <trade_type><![CDATA[JSAPI]]></trade_type>
               <transaction_id><![CDATA[4200002339202408086696010804]]></transaction_id>
            </xml>
            */
           using (StreamReader reader = new StreamReader(Request.Body, Encoding.UTF8))
           {
               string body = await reader.ReadToEndAsync();

               _logger.LogInformation($"收到微信支付非同步通知:{body}");

               // 這裡可以新增更多的邏輯,比如驗證簽名、更新資料庫等

               // 返回成功響應給微信支付伺服器
               return Ok("success");
           }
       }

相關文章