亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Rumah applet WeChat pembangunan WeChat 微信公眾號開發(fā)之微信支付

微信公眾號開發(fā)之微信支付

Feb 22, 2017 pm 04:02 PM
Akaun awam WeChat

  前幾天因為公司項目需求,要做一個用微信在線充值的功能,就是在微信的瀏覽器里面點擊一個網(wǎng)頁調(diào)起微信支付,現(xiàn)在大致來說一下微信支付之公眾號支付的開發(fā)流程:

  首先你的公眾號必須是認(rèn)證服務(wù)號,要開通了微信支付的權(quán)限;在開發(fā)寫代碼之前我們要把支付相關(guān)的一些信息設(shè)置做好,以利于后續(xù)操作,開通之后微信那邊就會給你發(fā)一封郵件,里面包含了你公眾號商戶平臺的后臺登陸相關(guān)的一些信息,登陸商戶平臺之后在->賬戶設(shè)置->API安全里面設(shè)置密鑰,這個在后面會用到;

微信公眾號開發(fā)之微信支付

賬戶參數(shù)說明


郵件中參數(shù) API參數(shù)名 詳細(xì)說明
APPID appid appid是微信公眾賬號或開放平臺APP的唯一標(biāo)識,在公眾平臺申請公眾賬號或者在開放平臺申請APP賬號后,微信會自動分配對應(yīng)的appid,用于標(biāo)識該應(yīng)用。商戶的微信支付審核通過郵件中也會包含該字段值。
微信支付商戶號 mch_id 商戶申請微信支付后,由微信支付分配的商戶收款賬號。
API密鑰 key 交易過程生成簽名的密鑰,僅保留在商戶系統(tǒng)和微信支付后臺,不會在網(wǎng)絡(luò)中傳播。商戶妥善保管該Key,切勿在網(wǎng)絡(luò)中傳輸,不能在其他客戶端中存儲,保證key不會被泄漏。商戶可根據(jù)郵件提示登錄微信商戶平臺進行設(shè)置。
Appsecret secret AppSecret是APPID對應(yīng)的接口密碼,用于獲取接口調(diào)用憑證access_token時使用。在微信支付中,先通過OAuth2.0接口獲取用戶openid,此openid用于微信內(nèi)網(wǎng)頁支付模式下單接口使用。在開發(fā)模式中獲取AppSecret(成為開發(fā)者且?guī)ぬ枦]有異常狀態(tài))。


?

  這些完成之后我們還要了解一下公眾號支付的一個業(yè)務(wù)流程:

微信公眾號開發(fā)之微信支付

?

?

商戶系統(tǒng)和微信支付系統(tǒng)主要交互:

1.商戶server調(diào)用統(tǒng)一下單接口請求訂單,api參見公共api【統(tǒng)一下單API】;在請求預(yù)支付訂單之前我們要調(diào)用微信OAuth2.0網(wǎng)頁授權(quán)獲取用戶微信OpenId,這里就不詳細(xì)說明了,下面是預(yù)支付下單的代碼實現(xiàn):

string timeStamp = TenPayUtil.GetTimestamp();
                string nonceStr = TenPayUtil.GetNoncestr();
                string paySign = string.Empty;

                //創(chuàng)建支付應(yīng)答對象
                var packageReqHandler = new RequestHandler(null);

                string spbill_create_ip = Request.UserHostAddress;

                //初始化
                //packageReqHandler.Init();
                //packageReqHandler.SetKey(TenPayInfo.Key);
                //設(shè)置package訂單參數(shù)
                packageReqHandler.SetParameter("appid", appID); //公眾賬號ID
                packageReqHandler.SetParameter("body", StrUtil.GetCutString(productName, 100)); //不能超過127個字符
                packageReqHandler.SetParameter("mch_id", mchid); //商戶號
                packageReqHandler.SetParameter("nonce_str", nonceStr.ToLower()); //隨機字符串
                packageReqHandler.SetParameter("notify_url", notifyUrl); //接收財付通通知的URL
                packageReqHandler.SetParameter("openid", openId); //openid
                packageReqHandler.SetParameter("out_trade_no", sp_billno); //商家訂單號
                // packageReqHandler.SetParameter("attach", "");          //附加數(shù)據(jù)  未來可用于區(qū)分不同微信支付業(yè)務(wù)
                packageReqHandler.SetParameter("spbill_create_ip", spbill_create_ip); //用戶的公網(wǎng)ip,不是商戶服務(wù)器IP
                packageReqHandler.SetParameter("total_fee", (onlinePayMoney * 100).ToString("0")); //商品金額,以分為單位(money * 100).ToString()
                packageReqHandler.SetParameter("trade_type", "JSAPI"); //交易類型

                //獲取package包
                string sign = packageReqHandler.CreateMd5Sign("key", TenPayInfo.Key);
                packageReqHandler.SetParameter("sign", sign); //交易類型
                string data = packageReqHandler.ParseXML();
                LoggerHelper.Log(data);
                
                //調(diào)用統(tǒng)一下單接口請求訂單
                var result = TenPayV3Service.Unifiedorder(data);
                LoggerHelper.Log(result);

                var res = XDocument.Parse(result);

                string prepayId = string.Empty;
                if (res.Element("xml").Element("return_code").Value == "SUCCESS")
                {
                    prepayId = res.Element("xml").Element("prepay_id").Value;
                }

                string package = string.Format("prepay_id={0}", prepayId);
                timeStamp = TenPayUtil.GetTimestamp();

                //設(shè)置支付參數(shù)
                var paySignReqHandler = new RequestHandler(null);
                paySignReqHandler.SetParameter("appId", appID);
                paySignReqHandler.SetParameter("timeStamp", timeStamp);
                paySignReqHandler.SetParameter("nonceStr", nonceStr);
                paySignReqHandler.SetParameter("package", package);
                paySignReqHandler.SetParameter("signType", "MD5");
                paySign = paySignReqHandler.CreateMd5Sign("key", TenPayInfo.Key);

                //將信息傳遞給支付頁面
                ViewBag.appId = appID;
                ViewBag.timeStamp = timeStamp;
                ViewBag.nonceStr = nonceStr;
                ViewBag.package = package;
                ViewBag.paySign = paySign;


下面是頁面js相關(guān)代碼:


<script type="text/javascript">        // 當(dāng)微信內(nèi)置瀏覽器完成內(nèi)部初始化后會觸發(fā)WeixinJSBridgeReady事件。
        document.addEventListener(&#39;WeixinJSBridgeReady&#39;, function onBridgeReady() {
            $(function () {                //公眾號支付
                jQuery(&#39;#getBrandWCPayRequest&#39;).click(function (e) {
                    WeixinJSBridge.invoke(&#39;getBrandWCPayRequest&#39;, {                        "appId": "@ViewBag.appId", //公眾號名稱
                        "timeStamp": "@ViewBag.timeStamp", //時間戳
                        "nonceStr": "@ViewBag.nonceStr", //隨機串
                        "package": "@Html.Raw(ViewBag.package.ToString())",//擴展包
                        "signType": "MD5", //微信簽名方式
                        "paySign": "@ViewBag.paySign" //微信簽名                    }, function (res) {                        if (res.err_msg == "get_brand_wcpay_request:ok") {                            //alert("微信支付成功!");
                            window.location.href = "@WxPaySettingConfig.WmallURL/Wmall/TradePay/Success/@ViewBag.ShopId/?orderNo=@orderNoMark";
                        }                        else if (res.err_msg == "get_brand_wcpay_request:cancel") {                            //alert("用戶取消支付!");                        }                        else {
                            window.location.href = "/wxpay/jsapi/error/?isPayFail=1&csid=@ViewBag.ShopId&orderNo=@orderNoMark&biztype=1";    
                        }                        // 使用以上方式判斷前端返回,微信團隊鄭重提示:res.err_msg將在用戶支付成功后返回ok,但并不保證它絕對可靠。                        //因此微信團隊建議,當(dāng)收到ok返回時,向商戶后臺詢問是否收到交易成功的通知,若收到通知,前端展示交易成功的界面;若此時未收到通知,商戶后臺主動調(diào)用查詢訂單接口,查詢訂單的當(dāng)前狀態(tài),并反饋給前端展示相應(yīng)的界面。                    });
                });
            });            //WeixinJSBridge.log(&#39;yo~ ready.&#39;);
        }, false);    </script>


2.商戶server接收支付通知,api參見公共api【支付結(jié)果通知API

[HttpPost]
        public void NoticeUrl()
        {
            string xmlString = HttpClientHelper.GetPostString(Request);  5 
            //此處應(yīng)記錄日志
            LoggerHelper.Log(string.Format("【微支付】異步通知參數(shù):{0}", xmlString));  8 
            var returnMsg = new ReturnMessage() { Return_Code = "SUCCESS", Return_Msg = string.Empty };
            //通知消息實體
            NotifyMessage message = null;
            //訂單處理相關(guān)的方法內(nèi)全局變量
            bool isNeedDeal = false; //標(biāo)識訂單是否需要處理
            string orderNo = string.Empty; //訂單編號 (需要根據(jù)商家數(shù)據(jù)包字段判斷所屬訂單)
            CorpSalesOrder saleOrder = null;
            try
            {
                message = HttpClientHelper.XmlDeserialize<NotifyMessage>(xmlString);
 
                //訂單號 獲得
                orderNo = message.Out_Trade_No;
                if (string.IsNullOrEmpty(orderNo))
                {
                    throw new InvalidOperationException("未找到該訂單信息.");
                } 45                 var doc = new XmlDocument();
                doc.LoadXml(xmlString);
                var dic = new Dictionary<string, string>();
                string sign = string.Empty;
                foreach (XmlNode node in doc.FirstChild.ChildNodes)
                {
                    if (node.Name.ToLower() != "sign")
                        dic.Add(node.Name, node.InnerText);
                    else
                        sign = node.InnerText;
                }
                UnifiedWxPayModel model = UnifiedWxPayModel.CreateUnifiedModel(xddAppId, xddMchid, xddWxkey);
                if (model.ValidateMD5Signature(dic, sign))
                {
                    //處理通知 業(yè)務(wù)邏輯:
                    if (message.Return_Code == "SUCCESS")
                    {
                        if (message.Result_Code == "SUCCESS")
                        {
                   //此處處理支付成功后的業(yè)務(wù)邏輯
                        }
                        else
                        {
                            throw new InvalidOperationException(string.Format("{0}:{1}", message.Err_Code, message.Err_Code_Des));
                        }
                    }
                    else
                    {
                        throw new InvalidOperationException(message.Return_Msg);
                    }
                }
            }
            catch (InvalidOperationException e)
            {
                //此處記錄異常日志
                returnMsg.Return_Code = "FAIL";
                returnMsg.Return_Msg = e.Message;
                LoggerHelper.Log("【微信支付異步通知】出錯,訂單編號:" + orderNo + ",錯誤原因:" + e.Message);
            }
            catch (Exception e)
            {
                //此處記錄異常日志
                returnMsg.Return_Code = "FAIL";
                returnMsg.Return_Msg = e.Message;
                LoggerHelper.Log("【微信支付異步通知】出錯,訂單編號:" + orderNo + ",錯誤原因:" + (e.InnerException == null ? e.Message : e.InnerException.ToString()));
            }
            Response.Write(returnMsg.ToXmlString());
            Response.End();
        }

更多微信公眾號開發(fā)之微信支付?相關(guān)文章請關(guān)注PHP中文網(wǎng)!


Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial PHP
1488
72
Scrapy melaksanakan rangkak dan analisis artikel akaun awam WeChat Scrapy melaksanakan rangkak dan analisis artikel akaun awam WeChat Jun 22, 2023 am 09:41 AM

Scrapy melaksanakan rangkak artikel dan analisis akaun awam WeChat WeChat ialah aplikasi media sosial yang popular dalam beberapa tahun kebelakangan ini, dan akaun awam yang dikendalikan di dalamnya juga memainkan peranan yang sangat penting. Seperti yang kita sedia maklum, akaun awam WeChat adalah lautan maklumat dan pengetahuan, kerana setiap akaun awam boleh menerbitkan artikel, mesej grafik dan maklumat lain. Maklumat ini boleh digunakan secara meluas dalam banyak bidang, seperti laporan media, penyelidikan akademik, dsb. Jadi, artikel ini akan memperkenalkan cara menggunakan rangka kerja Scrapy untuk merangkak dan menganalisis artikel akaun awam WeChat. Scr

Apakah perbezaan antara pensijilan akaun rasmi WeChat dan bukan pensijilan? Apakah perbezaan antara pensijilan akaun rasmi WeChat dan bukan pensijilan? Sep 19, 2023 pm 02:15 PM

Perbezaan antara pensijilan akaun rasmi WeChat dan bukan pensijilan terletak pada logo pensijilan, kebenaran fungsi, kekerapan tolak, kebenaran antara muka dan kepercayaan pengguna. Pengenalan terperinci: 1. Logo pensijilan akaun awam yang disahkan akan memperoleh logo pensijilan rasmi, iaitu logo V biru ini boleh meningkatkan kredibiliti dan kewibawaan akaun awam dan memudahkan pengguna mengenal pasti akaun awam rasmi yang sebenar ; 2. Keizinan fungsi Akaun awam yang diperakui mempunyai lebih banyak fungsi dan kebenaran daripada akaun awam yang diperakui Contohnya, akaun awam yang diperakui boleh memohon untuk mengaktifkan fungsi pembayaran WeChat untuk merealisasikan pembayaran dalam talian dan operasi komersial.

Pertempuran perangkak praktikal dalam Python: perangkak akaun awam WeChat Pertempuran perangkak praktikal dalam Python: perangkak akaun awam WeChat Jun 10, 2023 am 09:01 AM

Python ialah bahasa pengaturcaraan yang elegan dengan pemprosesan data yang berkuasa dan keupayaan merangkak web. Dalam era digital ini, Internet dipenuhi dengan sejumlah besar data, dan crawler telah menjadi cara penting untuk mendapatkan data Oleh itu, crawler Python digunakan secara meluas dalam analisis data dan perlombongan. Dalam artikel ini, kami akan memperkenalkan cara menggunakan perangkak Python untuk mendapatkan maklumat artikel akaun awam WeChat. Akaun rasmi WeChat ialah platform media sosial yang popular untuk menerbitkan artikel dalam talian dan merupakan alat penting untuk promosi dan pemasaran banyak syarikat dan media sendiri.

Gunakan PHP untuk membina antara muka API akaun awam WeChat Gunakan PHP untuk membina antara muka API akaun awam WeChat May 13, 2023 pm 12:01 PM

Dalam era Internet hari ini, akaun rasmi WeChat telah menjadi saluran pemasaran yang penting untuk lebih banyak syarikat. Jika anda mahu akaun rasmi WeChat anda melaksanakan lebih banyak fungsi, anda selalunya perlu menulis antara muka yang sepadan. Artikel ini akan menggunakan bahasa PHP sebagai contoh untuk memperkenalkan cara membina antara muka API akaun awam WeChat. 1. Persediaan Sebelum menulis antara muka API akaun awam WeChat, pembangun perlu mempunyai akaun akaun awam WeChat dan memohon kebenaran antara muka pembangun dalam platform awam WeChat. Selepas aplikasi berjaya, anda boleh mendapatkan AppID dan AppSe pembangun yang berkaitan

Cara menggunakan Laravel untuk membangunkan sistem pesanan dalam talian berdasarkan akaun awam WeChat Cara menggunakan Laravel untuk membangunkan sistem pesanan dalam talian berdasarkan akaun awam WeChat Nov 02, 2023 am 09:42 AM

Cara menggunakan Laravel untuk membangunkan sistem pesanan dalam talian berdasarkan akaun rasmi WeChat Dengan penggunaan meluas akaun rasmi WeChat, semakin banyak syarikat mula menggunakannya sebagai saluran penting untuk pemasaran dalam talian. Dalam industri katering, membangunkan sistem pesanan dalam talian berdasarkan akaun awam WeChat boleh meningkatkan kecekapan dan jualan perusahaan. Artikel ini akan memperkenalkan cara menggunakan rangka kerja Laravel untuk membangunkan sistem sedemikian dan menyediakan contoh kod khusus. Penyediaan projek Pertama, anda perlu memastikan bahawa rangka kerja Laravel telah dipasang dalam persekitaran setempat. OK

Bolehkah akaun rasmi hanya menyiarkan satu artikel setiap hari? Bolehkah akaun rasmi hanya menyiarkan satu artikel setiap hari? Jun 16, 2023 pm 02:04 PM

Akaun awam bukan sahaja boleh menyiarkan satu artikel setiap hari, tetapi boleh menerbitkan sehingga lapan artikel pada satu masa. Cara menerbitkan berbilang artikel: 1. Klik "Pengurusan Bahan" di sebelah kiri, dan kemudian klik "Bahan Grafik dan Teks Baharu". untuk mula mengedit. Artikel pertama; 2. Selepas mengedit artikel pertama, klik tanda + di bawah artikel pertama di sebelah kiri dan klik "Mesej Grafik" untuk mengedit artikel kedua dan hantar secara pukal" untuk melengkapkan penerbitan berbilang artikel.

Bina aplikasi akaun awam WeChat menggunakan rangka kerja bahasa Go Bina aplikasi akaun awam WeChat menggunakan rangka kerja bahasa Go Jun 04, 2023 am 10:40 AM

Dengan populariti Internet dan penggunaan meluas peranti mudah alih, akaun rasmi WeChat telah menjadi bahagian penting dalam pemasaran korporat. Melalui akaun awam WeChat, syarikat boleh berinteraksi dengan pengguna dengan mudah, mempromosikan produk dan perkhidmatan serta meningkatkan kesedaran jenama. Untuk membangunkan aplikasi akaun awam WeChat dengan lebih baik, semakin ramai pembangun dan syarikat memilih untuk menggunakan bahasa Go untuk membina aplikasi akaun awam WeChat. Bahasa Go ialah bahasa pengaturcaraan yang dibangunkan oleh Google Sintaksnya ringkas dan sesuai untuk membina aplikasi masa nyata berprestasi tinggi. Dari segi kemudahan penggunaan dan

WeChat mengumumkan bahawa ia akan mengawal kandungan 'khurafat feudal, menggunakan agama, feng shui, tuah dan gimik lain untuk membuat wang atau mendapatkan perhatian' WeChat mengumumkan bahawa ia akan mengawal kandungan 'khurafat feudal, menggunakan agama, feng shui, tuah dan gimik lain untuk membuat wang atau mendapatkan perhatian' Aug 05, 2024 pm 10:26 PM

Menurut berita dari laman web ini pada 1 Ogos, Pusat Operasi Platform Awam WeChat mengeluarkan artikel hari ini mengatakan bahawa platform itu mendapati bahawa beberapa artikel yang diterbitkan oleh pengendali mengandungi khurafat feudal dan menggunakan agama, feng shui, kekayaan dan gimik lain untuk mendapatkan wang atau keuntungan. perhatian Kandungan sedemikian berkemungkinan besar Menyebabkan mengelirukan atau kerosakan harta benda kepada pengguna. WeChat akan menjalankan pemeriksaan berterusan, dan sebaik sahaja sebarang kandungan haram ditemui, tindakan yang sepadan akan diambil mengikut tahap pelanggaran tertentu. Kes pelanggaran yang dilampirkan pada laman web ini adalah seperti berikut: menerbitkan tajuk berkaitan khurafat, menggunakan ugutan, dorongan dan nada lain untuk membesar-besarkan bahaya atau kesan negatif kelakuan tertentu. ▲Sumber gambar Pusat Operasi Platform Awam WeChat, artikel yang sama di bawah menyediakan perkhidmatan dengan khurafat feudal seperti tilik nasib, tilik nasib dan tilikan, dan termasuk item berbayar, seperti penjualan produk pemindahan dan bantuan bencana. Mengumpul maklumat privasi peribadi pengguna secara tidak wajar atas nama menyediakan perkhidmatan yang berkaitan

See all articles