• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當前位置:雨林木風下載站 > 網絡軟件教程 > 詳細頁面

        微信支付的退款技巧開發

        微信支付的退款技巧開發

        更新時間:2025-09-20 文章作者:未知 信息來源:網絡 閱讀次數:

        微信(WeChat)是騰訊公司于2011年1月21日推出的一個為智能終端提供即時通訊服務的免費應用程序,由張小龍所帶領的騰訊廣州研發中心產品團隊打造 [2] 。微信支持跨通信運營商、跨操作系統平臺...
        微信(WeChat)是騰訊公司于2011年1月21日推出的一個為智能終端提供即時通訊服務的免費應用程序,由張小龍所帶領的騰訊廣州研發中心產品團隊打造 [2] 。微信支持跨通信運營商、跨操作系統平臺通過網絡快速發送免費(需消耗少量網絡流量)語音短信、視頻、圖片和文字,同時,也可以使用通過共享流媒體內容的資料和基于位置的社交插件“搖一搖”、“漂流瓶”、“朋友圈”、”公眾平臺“、”語音記事本“等服務插件。
        這次給大家帶來微信支付的退款功能開發,微信支付退款功能開發的注意事項有哪些,下面就是實戰案例,一起來看一下。

        先吐槽下微信的文檔和demo,重要的步驟信息沒有強調清楚,.net的demo就沒有跑成功過。

        1.微信掃碼登錄

        2.微信PC端支付

        幾經摸索才走通這個退款功能。下面介紹下微信支付退款功能的開發步驟:

        一、下載證書并導入到系統

        微信退款是需要證書的,這個證書不是官方demo中的證書,而是需要自己在微信商戶平臺中的api安全欄下載的證書,在官方的證書使用實例的一個word文檔看到下面話:C#有一點需要注意,除了在代碼中使用apiclient_cert.p12之外還需要將該證書導入操作系統才能使用,1、代碼中使用、;2、導入操作系統,二者缺一不可。.NET版本需要大于2.0 之前就是不知道這兩步,浪費了太多時間。所以先下載證書:

        微信支付的退款功能開發

        下載的時候需要手機驗證及登錄密碼。下載后找到apiclient_cert.p12這個證書,雙擊導入,導入的時候提示輸入密碼,這個密碼就是商戶ID,且必須是在自己的商戶平臺下載的證書。否則會出現密碼錯誤的提示:

        微信支付的退款功能開發

        導入正確的提示:

        微信支付的退款功能開發

        二、代碼退款

        這個地方可以直接用官方demo中的代碼,demo下載

        需要修改WxPayConfig中的幾個參數:

              public const string APPID = "wxf6dd794bcexxxx";        public const string MCHID = "xxxx";        public const string KEY = "xxxxx849ba56abbe56e05xxxxx";        public const string APPSECRET = "---";        //=======【證書路徑設置】===================================== 
                /* 證書路徑,注意應該填寫絕對路徑(僅退款、撤銷訂單時需要)        */
                public const string SSLCERT_PATH = "/WxPayAPI/cert/apiclient_cert.p12";        public const string SSLCERT_PASSWORD = "131xxxx";

        上面的SSLCERT_PASSWORD就是MCHID,也就是商戶ID,SSLCERT_PASSWORD錯誤會出現指定的網絡密碼不正確的提示:

        微信支付的退款功能開發

        接下來在控制器中增加一個退款方法,包含微信訂單號、商戶訂單號、總金額和退款金額。商戶訂單號和微信訂單號二選一。詳細參數

          public ActionResult DoRefund()
                {            string result = Refund.Run("","131667780120trade_no", "1", "1");            return Content(result);
                }

        Refund類的Run方法:

         /***
                * 申請退款完整業務流程邏輯
                * @param transaction_id 微信訂單號(優先使用)
                * @param out_trade_no 商戶訂單號
                * @param total_fee 訂單總金額
                * @param refund_fee 退款金額
                * @return 退款結果(xml格式)        */
                public static string Run(string transaction_id, string out_trade_no, string total_fee, string refund_fee)
                {
                    Logger.Info("Refund is processing...");
                    WxPayData data = new WxPayData();            if (!string.IsNullOrEmpty(transaction_id))//微信訂單號存在的條件下,則已微信訂單號為準            {
                        data.SetValue("transaction_id", transaction_id);
                    }            else//微信訂單號不存在,才根據商戶訂單號去退款            {
                        data.SetValue("out_trade_no", out_trade_no);
                    }
                    data.SetValue("total_fee", int.Parse(total_fee));//訂單總金額
                    data.SetValue("refund_fee", int.Parse(refund_fee));//退款金額
                    data.SetValue("out_refund_no", out_trade_no);//隨機生成商戶退款單號
                    data.SetValue("op_user_id", WxPayConfig.MCHID);//操作員,默認為商戶號
                    WxPayData result = WxPayApi.Refund(data);//提交退款申請給API,接收返回數據
                    Logger.Info("Refund process complete, result : " + result.ToXml());            return result.ToPrintStr();
                }

        Refund:方法

         /**
                * 
                * 申請退款
                * @param WxPayData inputObj 提交給申請退款API的參數
                * @param int timeOut 超時時間
                * @throws WxPayException
                * @return 成功時返回接口調用結果,其他拋異常        */
                public static WxPayData Refund(WxPayData inputObj, int timeOut = 6)
                {            string url = "https://api.mch.weixin.qq.com/secapi/pay/refund";            //檢測必填參數
                    if (!inputObj.IsSet("out_trade_no") && !inputObj.IsSet("transaction_id"))
                    {                throw new WxPayException("退款申請接口中,out_trade_no、transaction_id至少填一個!");
                    }            else if (!inputObj.IsSet("out_refund_no"))
                    {                throw new WxPayException("退款申請接口中,缺少必填參數out_refund_no!");
                    }            else if (!inputObj.IsSet("total_fee"))
                    {                throw new WxPayException("退款申請接口中,缺少必填參數total_fee!");
                    }            else if (!inputObj.IsSet("refund_fee"))
                    {                throw new WxPayException("退款申請接口中,缺少必填參數refund_fee!");
                    }            else if (!inputObj.IsSet("op_user_id"))
                    {                throw new WxPayException("退款申請接口中,缺少必填參數op_user_id!");
                    }
                    inputObj.SetValue("appid", WxPayConfig.APPID);//公眾賬號ID
                    inputObj.SetValue("mch_id", WxPayConfig.MCHID);//商戶號
                    inputObj.SetValue("nonce_str", Guid.NewGuid().ToString().Replace("-", ""));//隨機字符串
                    inputObj.SetValue("sign", inputObj.MakeSign());//簽名
                    
                    string xml = inputObj.ToXml();            var start = DateTime.Now;
                    Log.Debug("WxPayApi", "Refund request : " + xml);            string response = HttpService.Post(xml, url, true, timeOut);//調用HTTP通信接口提交數據到API
                    Log.Debug("WxPayApi", "Refund response : " + response);            var end = DateTime.Now;            int timeCost = (int)((end - start).TotalMilliseconds);//獲得接口耗時            //將xml格式的結果轉換為對象以返回
                    WxPayData result = new WxPayData();
                    result.FromXml(response);
                    ReportCostTime(url, timeCost, result);//測速上報
                    return result;
                }

        生產環境中記得修改成自己的參數。如果參數都正確,將會返回:

        微信支付的退款功能開發

        而且,微信馬上回收到退款通知:

        微信支付的退款功能開發

        小結:至此,退款功能已經走通,其實如果參數和流程對了,這個地方還是很簡單的,微信的規定是可以申請一年內交易的退款。

        相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

        推薦閱讀:

        ss3的漸變如何使用

        jQuery、Angular、node中的Promise詳解

        H5的視頻播放庫video.js詳解

        以上就是微信支付的退款功能開發的詳細內容,更多請關注php中文網其它相關文章!


        微信提供公眾平臺、朋友圈、消息推送等功能,用戶可以通過“搖一搖”、“搜索號碼”、“附近的人”、掃二維碼方式添加好友和關注公眾平臺,同時微信將內容分享給好友以及將用戶看到的精彩內容分享到微信朋友圈。

        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統下載排行

        主站蜘蛛池模板: 妞干网手机免费视频| h片在线免费观看| 亚洲国产成人VA在线观看| 亚洲国产日韩视频观看| 亚洲电影免费观看| 亚洲妇女水蜜桃av网网站| www.免费在线观看| 亚洲三级在线免费观看| 无码一区二区三区AV免费| 国产精品久久久久久亚洲影视| 好男人视频在线观看免费看片| 亚洲国产视频久久| 国产三级电影免费观看| 三年片在线观看免费观看大全中国| 亚洲精品无码av天堂| 中文字幕在线视频免费观看| 亚洲人成网77777亚洲色| 国产麻豆成人传媒免费观看 | 久香草视频在线观看免费| 亚洲日韩在线观看免费视频| 四虎影视无码永久免费| 久久精品国产亚洲av麻豆小说| 最近2019免费中文字幕视频三| 色偷偷亚洲女人天堂观看欧| 国产在线观看免费不卡| 亚美影视免费在线观看| 女人被弄到高潮的免费视频| 国产成人亚洲综合无| 国产亚洲精品精华液| 国产片AV片永久免费观看| 亚洲精品色在线网站| 亚洲中文字幕无码永久在线| 69式互添免费视频| 国产亚洲精品第一综合| 亚洲av日韩av无码| 午夜免费不卡毛片完整版| 99精品免费视频| 亚洲人成电影青青在线播放| 国产精品V亚洲精品V日韩精品| 2021在线永久免费视频| 日本黄页网址在线看免费不卡|