最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#?微信支付回調(diào)驗(yàn)簽處理的實(shí)現(xiàn)

 更新時(shí)間:2021年12月07日 15:01:12   作者:conan5566  
在微信支付中,當(dāng)用戶支付成功后,微信會(huì)把相關(guān)支付結(jié)果和用戶信息發(fā)送給商戶,本文就詳細(xì)的介紹了C#?微信支付回調(diào)驗(yàn)簽處理,具有一定的參考價(jià)值,感興趣的可以了解一下

概述

在微信支付中,當(dāng)用戶支付成功后,微信會(huì)把相關(guān)支付結(jié)果和用戶信息發(fā)送給商戶,商戶需要接收處理,并返回應(yīng)答。接收微信支付異步通知回調(diào)地址也是有要求:通知url必須為直接可訪問的url,不能攜帶參數(shù)。

示例:notify_url:“https://pay.weixin.qq.com/wxpay/pay.action”

在微信支付開發(fā),支付結(jié)果通用通知介紹說(shuō)明頁(yè)面→https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_7&index=3。

說(shuō)明了:支付完成后,微信會(huì)把相關(guān)支付結(jié)果和用戶信息發(fā)送給商戶,商戶需要接收處理,并返回應(yīng)答。

c#方法

微信支付完成后會(huì)有一個(gè)支付回調(diào)頁(yè)面,處理支付完成后的事件,V3支付回調(diào)的數(shù)據(jù)形式為XML格式。

1、定義一個(gè)model類,處理一般構(gòu)造函數(shù),用于解析XML對(duì)象;

   #region  WeiXin APP
                    // Log.Info(this.GetType().ToString(), "Native pay mode 2 url is producing...");
                    WxPayData data = new WxPayData();
                    //data.SetValue("attach", model.Dowhere);//附加數(shù)據(jù)
                    data.SetValue("body", model.Title);//商品描述
                    data.SetValue("out_trade_no", model.LocalTransationNo);// WxPayApi.GenerateOutTradeNo());//隨機(jī)字符串
                    data.SetValue("total_fee", Convert.ToInt32(model.Amount * 100));//總金額
                    data.SetValue("time_start", DateTime.Now.ToString("yyyyMMddHHmmss"));//交易起始時(shí)間
                    data.SetValue("time_expire", DateTime.Now.AddMinutes(10).ToString("yyyyMMddHHmmss"));//交易結(jié)束時(shí)間                                                                              //data.SetValue("goods_tag", "goods_tag");//商品標(biāo)記
                    data.SetValue("trade_type", "APP");//交易類型
                                                       //data.SetValue("product_id", model.ProductId);//商品ID
                    WxPayData r = WxPayApi.UnifiedOrder(data);//調(diào)用統(tǒng)一下單接口
                    string prepay_id = r.GetValue("prepay_id").ToString();

                    WxPayData da2 = new WxPayData();
                    da2.SetValue("appid", WxPayConfig.APPID);//公眾賬號(hào)ID
                    da2.SetValue("noncestr", WxPayApi.GenerateNonceStr());//商戶號(hào)
                    da2.SetValue("package", "Sign=WXPay");//商品描述
                    da2.SetValue("partnerid", WxPayConfig.MCHID);// WxPayApi.GenerateOutTradeNo());//隨機(jī)字符串
                    da2.SetValue("prepayid", prepay_id);//總金額
                    da2.SetValue("timestamp", WxPayApi.GenerateTimeStamp());//交易起始時(shí)間

                    #endregion

2、檢查支付結(jié)果中transaction_id是否存在

  //https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_7

            WxPayData notifyData = (new Com.WeiXin.Notify(this.HttpContext)).GetNotifyData();

            //檢查支付結(jié)果中transaction_id是否存在
            if (!notifyData.IsSet("transaction_id"))
            {
                //若transaction_id不存在,則立即返回結(jié)果給微信支付后臺(tái)
                WxPayData res = new WxPayData();
                res.SetValue("return_code", "FAIL");
                res.SetValue("return_msg", "支付結(jié)果中微信訂單號(hào)不存在");
                Log.Error(this.GetType().ToString(), "The Pay result is error : " + res.ToXml());
                HttpContext.Response.Write(res.ToXml());
                HttpContext.Response.End();
            }

            string transaction_id = notifyData.GetValue("transaction_id").ToString();

3、查詢訂單,判斷訂單真實(shí)性

            //查詢訂單,判斷訂單真實(shí)性
            if (!QueryOrder(transaction_id))
            {
                //若訂單查詢失敗,則立即返回結(jié)果給微信支付后臺(tái)
                WxPayData res = new WxPayData();
                res.SetValue("return_code", "FAIL");
                res.SetValue("return_msg", "訂單查詢失敗");
                Log.Error(this.GetType().ToString(), "Order query failure : " + res.ToXml());
                HttpContext.Response.Write(res.ToXml());
                HttpContext.Response.End();
            }
            //查詢訂單成功
            else
            {
                WxPayData res = new WxPayData();
                res.SetValue("return_code", "SUCCESS");
                res.SetValue("return_msg", "OK");
                Log.Info(this.GetType().ToString(), "order query success : " + res.ToXml());

                string trade_no = transaction_id;
                string order_no = notifyData.GetValue("out_trade_no").ToString();     //獲取訂單號(hào)
                string total_fee = (Convert.ToInt32(notifyData.GetValue("total_fee").ToString()) / 100.0).ToString();       //獲取總金額
                                                                                                                            //notifyData.GetValue("attach").ToString();
                HttpContext.Response.Write(res.ToXml());
                HttpContext.Response.End();

                PaymentBLL pbll = new PaymentBLL();
                bool b = pbll.PayCallback(order_no, total_fee, transaction_id);
            }
        }

4、查詢訂單,業(yè)務(wù)處理

        //查詢訂單
        private bool QueryOrder(string transaction_id)
        {
            WxPayData req = new WxPayData();
            req.SetValue("transaction_id", transaction_id);
            WxPayData res = WxPayApi.OrderQuery(req);
            if (res.GetValue("return_code").ToString() == "SUCCESS" &&
                res.GetValue("result_code").ToString() == "SUCCESS")
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        #endregion

到此這篇關(guān)于C# 微信支付回調(diào)驗(yàn)簽處理的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)C# 微信支付回調(diào)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • windows下C#定時(shí)管理器框架Task.MainForm詳解

    windows下C#定時(shí)管理器框架Task.MainForm詳解

    這篇文章主要為大家詳細(xì)介紹了windows下C#定時(shí)管理器框架Task.MainForm的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • C#實(shí)現(xiàn)的字符串相似度對(duì)比類

    C#實(shí)現(xiàn)的字符串相似度對(duì)比類

    這篇文章主要介紹了C#實(shí)現(xiàn)的字符串相似度對(duì)比類,本文直接給出類實(shí)現(xiàn)代碼,代碼中包含詳細(xì)注釋,需要的朋友可以參考下
    2015-07-07
  • C#實(shí)現(xiàn)QQ窗口抖動(dòng)效果

    C#實(shí)現(xiàn)QQ窗口抖動(dòng)效果

    這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)QQ窗口抖動(dòng)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • C#獲取鼠標(biāo)在listview右鍵點(diǎn)擊單元格的內(nèi)容方法

    C#獲取鼠標(biāo)在listview右鍵點(diǎn)擊單元格的內(nèi)容方法

    下面小編就為大家?guī)?lái)一篇C#獲取鼠標(biāo)在listview右鍵點(diǎn)擊單元格的內(nèi)容方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-01-01
  • C#中DataTable導(dǎo)出為HTML格式的方法

    C#中DataTable導(dǎo)出為HTML格式的方法

    在平時(shí)的開發(fā)中經(jīng)常會(huì)將DataTable數(shù)據(jù)轉(zhuǎn)化到頁(yè)面顯示、打印、導(dǎo)出等操作,下面這篇文章主要給大家介紹了C#中DataTable導(dǎo)出為HTML格式的方法,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-01-01
  • C# SqlSugar批量執(zhí)行SQL語(yǔ)句及批量更新實(shí)體對(duì)象的操作方法

    C# SqlSugar批量執(zhí)行SQL語(yǔ)句及批量更新實(shí)體對(duì)象的操作方法

    SqlSugar 是一款 老牌 .NET開源ORM框架,由果糖大數(shù)據(jù)科技團(tuán)隊(duì)維護(hù)和更新 ,開箱即用最易上手的ORM,這篇文章主要介紹了C# SqlSugar批量執(zhí)行SQL語(yǔ)句以及批量更新實(shí)體對(duì)象,需要的朋友可以參考下
    2024-07-07
  • c#實(shí)現(xiàn)漢諾塔問題示例

    c#實(shí)現(xiàn)漢諾塔問題示例

    這篇文章主要介紹了c#實(shí)現(xiàn)漢諾塔問題示例,需要的朋友可以參考下
    2014-04-04
  • c# 如何自己實(shí)現(xiàn)一個(gè)ORM框架

    c# 如何自己實(shí)現(xiàn)一個(gè)ORM框架

    這篇文章主要介紹了c# 如何自己實(shí)現(xiàn)一個(gè)ORM,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-03-03
  • C#特性-對(duì)象集合初始化器介紹

    C#特性-對(duì)象集合初始化器介紹

    在寫一些實(shí)體類的時(shí)候,我們往往在寫構(gòu)造方法的時(shí)候思考很長(zhǎng)時(shí)間,除了一個(gè)無(wú)參構(gòu)造器外還在想需要寫幾個(gè)構(gòu)造器呢?哪些參數(shù)是需要初始化的?,F(xiàn)在你再也不需要為這事煩惱了
    2014-12-12
  • C#實(shí)現(xiàn)ini文件讀寫操作

    C#實(shí)現(xiàn)ini文件讀寫操作

    這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)ini文件的讀寫操作,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08

最新評(píng)論

海口市| 咸阳市| 军事| 固镇县| 罗城| 志丹县| 江永县| 峡江县| 兴仁县| 白城市| 铜鼓县| 哈密市| 双鸭山市| 焉耆| 鹤山市| 井陉县| 沁阳市| 紫金县| 台北市| 绥化市| 确山县| 兴安县| 阿瓦提县| 枣庄市| 扎囊县| 滦平县| 蚌埠市| 宝山区| 包头市| 辉南县| 千阳县| 通江县| 交口县| 尖扎县| 蒲城县| 上饶市| 齐河县| 集贤县| 且末县| 香河县| 浦县|