国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Rumah applet WeChat pembangunan WeChat 微信支付開發(fā)-Senparc.Weixin.MP詳解

微信支付開發(fā)-Senparc.Weixin.MP詳解

Feb 13, 2017 pm 01:14 PM
pembangunan WeChat

  公眾號+微信支付 SDK:Senparc.Weixin.MP.dll

  企業(yè)號 SDK:Senparc.Weixin.QY.dll

  開放平臺 SDK:Senparc.Weixin.Open.dll?

  官方地址:http://weixin.senparc.com/ ?

  當然,我們要完成公眾號微信支付功能的開發(fā),需要使用Senparc.Weixin.MP.dll這個DLL,查閱了一下官方提供的DEMO以及教程,并沒有載入微信支付相關的說明,沒辦法,既然拿到源碼了,自己找吧。

  打開Senparc.Weixin.MP.sln,根據(jù)英文文件夾名稱的分類,可以初步判斷,關于微信支付,被封裝在TenPayLib文件夾中,但是我還發(fā)現(xiàn),里面存在名稱叫“TenPayLibV3”的文件夾,那如何選擇呢?網(wǎng)上搜索了一下,得出這個結論:2014年9月10號之前申請的為v2版,之后申請的為v3版。我用來測試微信支付的服務號是在16年剛申請,并且通過驗證的,那么果斷使用V3吧。

  打開TenPayLibV3文件夾:

微信支付開發(fā)-Senparc.Weixin.MP詳解

 這里發(fā)現(xiàn)多個類庫,每一個都是做什么的呢?我們這里不一一敘述,感興趣的朋友可以下載來看,每一個類的文件頭都有功能說明與描述,對照微信官方支付說明,我們直接開始做支付。

  進入微信公眾號,點擊功能菜單中的微信支付:并相應點擊 使用教程-公眾號支付

微信支付開發(fā)-Senparc.Weixin.MP詳解 微信支付開發(fā)-Senparc.Weixin.MP詳解

 迅速對文檔內容重溫、瀏覽,以方便在Senparc.Weixin.MP.dll中查找相應的功能。

微信支付開發(fā)-Senparc.Weixin.MP詳解

  先配置支付授權目錄,添加支付測試白名單,支付目錄只支持三個,并且域名必須經(jīng)過ICP備案。授權目錄的作用是,如果要發(fā)起微信支付請求,請求的鏈接地址必須在授權目錄下,否則身份無效,支付不能成功。測試白名單中添加的個人微信號,才能完成微信支付測試目錄支付的測試,不在白名單中人員發(fā)起支付申請,支付不能成功。

  配置完成后,如何調用呢?我們繼續(xù)看官方說明:H5調起支付API  

  “在微信瀏覽器里面打開H5網(wǎng)頁中執(zhí)行JS調起支付。接口輸入輸出數(shù)據(jù)格式為JSON。

  注意:WeixinJSBridge內置對象在其他瀏覽器中無效。

  列表中參數(shù)名區(qū)分大小,大小寫錯誤簽名驗證會失敗?!?/p>

  OK,這里說明了幾個事情,第一必須在微信瀏覽器進行;第二,參數(shù)區(qū)分大小寫;第三,數(shù)據(jù)格式為JSON。

  官方說明,只要在頁面中調用如下腳本,即可開啟微信支付功能:

function onBridgeReady(){
   WeixinJSBridge.invoke(
       'getBrandWCPayRequest', {
           "appId" : "wx2421b1c4370ec43b",     //公眾號名稱,由商戶傳入     
           "timeStamp":" 1395712654",         //時間戳,自1970年以來的秒數(shù)     
           "nonceStr" : "e61463f8efa94090b1f366cccfbbb444", //隨機串     
           "package" : "prepay_id=u802345jgfjsdfgsdg888",     
           "signType" : "MD5",         //微信簽名方式:     
           "paySign" : "70EA570631E4BB79628FBCA90534C63FF7FADD89" //微信簽名 
       },
       function(res){     
           if(res.err_msg == "get_brand_wcpay_request:ok" ) {}     // 使用以上方式判斷前端返回,微信團隊鄭重提示:res.err_msg將在用戶支付成功后返回    ok,但并不保證它絕對可靠。 
       }
   ); 
}
if (typeof WeixinJSBridge == "undefined"){
   if( document.addEventListener ){
       document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
   }else if (document.attachEvent){
       document.attachEvent('WeixinJSBridgeReady', onBridgeReady); 
       document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
   }
}else{
   onBridgeReady();
}

 我的調用代碼:因為我要在點擊按鈕確認支付之后,在調用微信支付進行后續(xù)操作,把官方代碼提出到方法中

function onBridgeReady() {
            WeixinJSBridge.invoke(
                'getBrandWCPayRequest', {
                    "appId": $('#APPID').val(),     //公眾號名稱,由商戶傳入     
                    "timeStamp": $('#Timestamp').val(),         //時間戳,自1970年以來的秒數(shù)     
                    "nonceStr": $('#Noncestr').val(), //隨機串     
                    "package": $('#package').val(),
                    "signType": "MD5",         //微信簽名方式:     
                    "paySign": $('#paySign').val() //微信簽名 
                },
                function (res) {
                    if (res.err_msg == "get_brand_wcpay_request:ok") {
                        //支付成功,后續(xù)自行處理
                        
                    }
                    else
                    {
                        //支付取消,或者其他錯誤,自行處理
                    }
                }
            );
        }

 好吧,那這堆參數(shù)是從哪來的,都是啥玩意兒?我們逐個分析一下:

  appId:這個做微信開發(fā)都應該知道,公眾號在開發(fā)者菜單就能找到

  timeStamp:時間戳,官方描述為“自1970年以來的秒數(shù)”,不用擔心,肯定能從支付類庫里找到

  nonceStr:官方解釋是隨機串“e61463f8efa94090b1f366cccfbbb444”,靠啥玩意兒?詳見隨機數(shù)生成算法,原來就是一套加密規(guī)則和算法,做過URL請求接口的朋友應該知道,有些公司JSON串的簽名方式和這比較類似。

  package:預支付ID,調用官方API統(tǒng)一下單接口可以獲得

  signType:字符串"MD5"

  paySign:官方解釋是微信簽名“70EA570631E4BB79628FBCA90534C63FF7FADD89”,好吧,我忍了,在看下簽名生成算法,看來和隨機串一個鳥樣

  到這里,官方的接口說明已經(jīng)了解的很清楚了,那么下面就要解決調用微信支付的這幾個參數(shù)了,通過Senparc.Weixin.MP.dll應該如何使用呢?既然需要先調用統(tǒng)一下單接口獲取預支付訂單ID,好吧,我們先來研究一下,如何獲得這個ID吧。

  官方給出了詳細說明,我們不在贅述,各參數(shù)研究按照上述接口的方式自行研究解決,唯一區(qū)別在于,調用官方接口需要傳入一個XML,那很好辦,拼接一下就可以了,預支付調用方法如下:

//這里通過官方的一個實體,用戶自行使用,我這里是直接讀取的CONFIG文件
private static Senparc.Weixin.MP.TenPayLibV3.TenPayV3Info tenPayV3Info = new Senparc.Weixin.MP.TenPayLibV3.TenPayV3Info(ConfigurationManager.AppSettings["corpId"], ConfigurationManager.AppSettings["corpSecret"], ConfigurationManager.AppSettings["mch_id"]
                    , ConfigurationManager.AppSettings["key"], ConfigurationManager.AppSettings["v3url"]);

        /// <summary>
        /// 微信預支付
        /// </summary>
        /// <param name="attach"></param>
        /// <param name="body"></param>
        /// <param name="openid"></param>
        /// <param name="price"></param>
        /// <param name="orderNum"></param>
        /// <returns></returns>
        public static string PayInfo(string attach, string body, string openid, string price, string orderNum = "1833431773763549")
        {
            RequestHandler requestHandler = new RequestHandler(HttpContext.Current);
            //微信分配的公眾賬號ID(企業(yè)號corpid即為此appId)
            requestHandler.SetParameter("appid", tenPayV3Info.AppId);
            //附加數(shù)據(jù),在查詢API和支付通知中原樣返回,該字段主要用于商戶攜帶訂單的自定義數(shù)據(jù)
            requestHandler.SetParameter("attach", attach);
            //商品或支付單簡要描述
            requestHandler.SetParameter("body", body);
            //微信支付分配的商戶號
            requestHandler.SetParameter("mch_id", tenPayV3Info.MchId);
            //隨機字符串,不長于32位。
            requestHandler.SetParameter("nonce_str", TenPayUtil.GetNoncestr());
            //接收微信支付異步通知回調地址,通知url必須為直接可訪問的url,不能攜帶參數(shù)。
            requestHandler.SetParameter("notify_url", tenPayV3Info.TenPayV3Notify);
            //trade_type=JSAPI,此參數(shù)必傳,用戶在商戶公眾號appid下的唯一標識。
            requestHandler.SetParameter("openid", openid);
            //商戶系統(tǒng)內部的訂單號,32個字符內、可包含字母,自己生成
            requestHandler.SetParameter("out_trade_no", orderNum);
            //APP和網(wǎng)頁支付提交用戶端ip,Native支付填調用微信支付API的機器IP。
            requestHandler.SetParameter("spbill_create_ip", "127.0.0.1");
            //訂單總金額,單位為分,做過銀聯(lián)支付的朋友應該知道,代表金額為12位,末位分分
            requestHandler.SetParameter("total_fee", price);
            //取值如下:JSAPI,NATIVE,APP,我們這里使用JSAPI
            requestHandler.SetParameter("trade_type", "JSAPI");
            //設置KEY
            requestHandler.SetKey(tenPayV3Info.Key);

            requestHandler.CreateMd5Sign();
            requestHandler.GetRequestURL();
            requestHandler.CreateSHA1Sign();
            string data = requestHandler.ParseXML();
            requestHandler.GetDebugInfo();

            //獲取并返回預支付XML信息
            return TenPayV3.Unifiedorder(data);
        }
    }

好的,拿到預支付訂單的返回數(shù)據(jù),一切又都好辦了,根據(jù)返回參數(shù)的不同,自行解決,我們只關心調用正確的過程,操作繼續(xù),在返回的正確XML數(shù)據(jù)中,我們獲取到了 <![CDATA[wx201411101639507cbf6ffd8b0779950874]]></prepay_id>(官方示例),好的,開始在頁面做支付吧!</p><p>這里,我封裝了一個實體,用來傳輸常用的數(shù)據(jù),當然,各位也可以參考Senparc.Weixin.MP.dll提供的實體類。</p><pre class='brush:php;toolbar:false;'>public class ShareInfo { string corpId = string.Empty; public string CorpId { get { return corpId; } set { corpId = value; } } string ticket = string.Empty; public string Ticket { get { return ticket; } set { ticket = value; } } string noncestr = string.Empty; public string Noncestr { get { return noncestr; } set { noncestr = value; } } string timestamp = string.Empty; public string Timestamp { get { return timestamp; } set { timestamp = value; } } private string paySign = string.Empty; public string PaySign { get { return paySign; } set { paySign = value; } } private string package = string.Empty; public string Package { get { return package; } set { package = value; } } }

我們繼續(xù),來看一下支付接口需要用到的參數(shù)如何獲?。?/p>

public static ShareInfo GetPayInfo(string prepayid)
        {
            shareInfo = new ShareInfo();
            //檢查是否已經(jīng)注冊jssdk
            if (!JsApiTicketContainer.CheckRegistered(corpId))
            {
                JsApiTicketContainer.Register(corpId, corpSecret);
            }
            JsApiTicketResult jsApiTicket = JsApiTicketContainer.GetTicketResult(corpId);
            JSSDKHelper jssdkHelper = new JSSDKHelper();
            shareInfo.Ticket = jsApiTicket.ticket;
            shareInfo.CorpId = corpId.ToLower();
            shareInfo.Noncestr = JSSDKHelper.GetNoncestr().ToLower();
            shareInfo.Timestamp = JSSDKHelper.GetTimestamp().ToLower();
            shareInfo.Package="prepay_id=" + prepayid.ToLower();

            RequestHandler requestHandler = new RequestHandler(HttpContext.Current);

            requestHandler.SetParameter("appId", shareInfo.CorpId);
            requestHandler.SetParameter("timeStamp", shareInfo.Timestamp);
            requestHandler.SetParameter("nonceStr", shareInfo.Noncestr);
            requestHandler.SetParameter("package", shareInfo.Package);
            requestHandler.SetParameter("signType", "MD5");

            requestHandler.SetKey(tenPayV3Info.Key);
            requestHandler.CreateMd5Sign();
            requestHandler.GetRequestURL();
            requestHandler.CreateSHA1Sign();
            shareInfo.PaySign = (requestHandler.GetAllParameters()["sign"]).ToString();
            return shareInfo;
        }

這樣,支付接口需要用到的參數(shù),就都封裝在ShareInfo里了,好吧,調用之后,我們回到頁面的后置代碼中,或者你采用的ORM對應代碼中去,將參數(shù)輸出到頁面

//處理頁面支付調用信息
                    ShareInfo shareInfo = TenPayModule.GetPayInfo(prepayid);
                    System.Web.HttpContext.Current.Response.Write(string.Format("<input type=\"hidden\" id=\"Noncestr\" runat=\"server\" value=\"{0}\" />", shareInfo.Noncestr));
                    System.Web.HttpContext.Current.Response.Write(string.Format("<input type=\"hidden\" id=\"Timestamp\" runat=\"server\" value=\"{0}\" />", shareInfo.Timestamp));
                    System.Web.HttpContext.Current.Response.Write(string.Format("<input type=\"hidden\" id=\"APPID\" runat=\"server\" value=\"{0}\" />", shareInfo.CorpId));
                    System.Web.HttpContext.Current.Response.Write(string.Format("<input type=\"hidden\" id=\"paySign\" runat=\"server\" value=\"{0}\" />", shareInfo.PaySign));
                    System.Web.HttpContext.Current.Response.Write(string.Format("<input type=\"hidden\" id=\"package\" runat=\"server\" value=\"{0}\" />", shareInfo.Package));

好的,寫到這里,大家參照上面的JS代碼,就可以完成整個的支付功能了。最后,再附送一個生成商家訂單號的方法,代碼如下:

public string GetOrderNumber()
        {
            string Number = DateTime.Now.ToString("yyMMddHHmmss");
            return Number + Next(1000, 1).ToString();
        }
        private static int Next(int numSeeds, int length)
        {
            byte[] buffer = new byte[length]; 
            System.Security.Cryptography.RNGCryptoServiceProvider Gen = new System.Security.Cryptography.RNGCryptoServiceProvider();
            Gen.GetBytes(buffer);
            uint randomResult = 0x0; 
            for (int i = 0; i < length; i++)
            {
                randomResult |= ((uint)buffer[i] << ((length - 1 - i) * 8));
            }
            return (int)(randomResult % numSeeds);
        }

更多微信支付開發(fā)-Senparc.Weixin.MP詳解?相關文章請關注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
1502
276
Pembangunan PHP WeChat: Bagaimana untuk melaksanakan penyulitan dan penyahsulitan mesej Pembangunan PHP WeChat: Bagaimana untuk melaksanakan penyulitan dan penyahsulitan mesej May 13, 2023 am 11:40 AM

PHP ialah bahasa skrip sumber terbuka yang digunakan secara meluas dalam pembangunan web dan pengaturcaraan sisi pelayan, terutamanya dalam pembangunan WeChat. Hari ini, semakin banyak syarikat dan pembangun mula menggunakan PHP untuk pembangunan WeChat kerana ia telah menjadi bahasa pembangunan yang benar-benar mudah dipelajari dan mudah digunakan. Dalam pembangunan WeChat, penyulitan dan penyahsulitan mesej merupakan isu yang sangat penting kerana ia melibatkan keselamatan data. Untuk mesej tanpa kaedah penyulitan dan penyahsulitan, penggodam boleh mendapatkan data dengan mudah, menimbulkan ancaman kepada pengguna.

Pembangunan PHP WeChat: Bagaimana untuk melaksanakan fungsi pengundian Pembangunan PHP WeChat: Bagaimana untuk melaksanakan fungsi pengundian May 14, 2023 am 11:21 AM

Dalam pembangunan akaun awam WeChat, fungsi pengundian sering digunakan. Fungsi undian ialah cara yang bagus untuk pengguna mengambil bahagian dalam interaksi dengan pantas, dan ia juga merupakan alat penting untuk mengadakan acara dan meninjau pendapat. Artikel ini akan memperkenalkan anda cara menggunakan PHP untuk melaksanakan fungsi undian WeChat. Dapatkan kebenaran akaun rasmi WeChat Pertama, anda perlu mendapatkan kebenaran akaun rasmi WeChat. Pada platform awam WeChat, anda perlu mengkonfigurasi alamat API akaun awam WeChat, akaun rasmi dan token yang sepadan dengan akaun awam. Dalam proses pembangunan kami menggunakan bahasa PHP, kami perlu menggunakan PH yang disediakan secara rasmi oleh WeChat

Menggunakan PHP untuk membangunkan alat pemesejan massa WeChat Menggunakan PHP untuk membangunkan alat pemesejan massa WeChat May 13, 2023 pm 05:00 PM

Dengan populariti WeChat, semakin banyak syarikat mula menggunakannya sebagai alat pemasaran. Fungsi pemesejan kumpulan WeChat ialah salah satu cara penting bagi perusahaan untuk menjalankan pemasaran WeChat. Walau bagaimanapun, jika anda hanya bergantung pada penghantaran manual, ia adalah tugas yang sangat memakan masa dan susah payah untuk pemasar. Oleh itu, adalah amat penting untuk membangunkan alat pemesejan massa WeChat. Artikel ini akan memperkenalkan cara menggunakan PHP untuk membangunkan alat penghantaran massa WeChat. 1. Kerja penyediaan Untuk membangunkan alat pemesejan massa WeChat, kita perlu menguasai perkara teknikal berikut: Pengetahuan asas PHP WeChat alat pembangunan platform awam: Sub

Pembangunan PHP WeChat: Bagaimana untuk melaksanakan pengurusan tetingkap sembang perkhidmatan pelanggan Pembangunan PHP WeChat: Bagaimana untuk melaksanakan pengurusan tetingkap sembang perkhidmatan pelanggan May 13, 2023 pm 05:51 PM

WeChat kini merupakan salah satu platform sosial dengan pangkalan pengguna terbesar di dunia Dengan populariti Internet mudah alih, semakin banyak syarikat mula menyedari kepentingan pemasaran WeChat. Apabila menjalankan pemasaran WeChat, perkhidmatan pelanggan adalah bahagian yang penting. Untuk mengurus tetingkap sembang perkhidmatan pelanggan dengan lebih baik, kami boleh menggunakan bahasa PHP untuk pembangunan WeChat. 1. Pengenalan kepada pembangunan PHP WeChat PHP ialah bahasa skrip bahagian pelayan sumber terbuka yang digunakan secara meluas dalam bidang pembangunan Web. Digabungkan dengan antara muka pembangunan yang disediakan oleh platform awam WeChat, kami boleh menggunakan bahasa PHP untuk menjalankan WeChat

Pembangunan PHP WeChat: Bagaimana untuk melaksanakan pengurusan tag pengguna Pembangunan PHP WeChat: Bagaimana untuk melaksanakan pengurusan tag pengguna May 13, 2023 pm 04:31 PM

Dalam pembangunan akaun awam WeChat, pengurusan tag pengguna ialah fungsi yang sangat penting, yang membolehkan pembangun memahami dan mengurus pengguna mereka dengan lebih baik. Artikel ini akan memperkenalkan cara menggunakan PHP untuk melaksanakan fungsi pengurusan teg pengguna WeChat. 1. Dapatkan openid pengguna WeChat Sebelum menggunakan fungsi pengurusan tag pengguna WeChat, kita perlu mendapatkan openid pengguna terlebih dahulu. Dalam pembangunan akaun awam WeChat, adalah amalan biasa untuk mendapatkan openid melalui kebenaran pengguna. Selepas kebenaran pengguna selesai, kami boleh mendapatkan pengguna melalui kod berikut

Pembangunan PHP WeChat: Bagaimana untuk melaksanakan rekod penghantaran mesej kumpulan Pembangunan PHP WeChat: Bagaimana untuk melaksanakan rekod penghantaran mesej kumpulan May 13, 2023 pm 04:31 PM

Memandangkan WeChat menjadi alat komunikasi yang semakin penting dalam kehidupan orang ramai, fungsi pemesejan tangkasnya digemari oleh sebilangan besar perusahaan dan individu. Bagi perusahaan, membangunkan WeChat menjadi platform pemasaran telah menjadi trend, dan kepentingan pembangunan WeChat secara beransur-ansur menjadi lebih menonjol. Antaranya, fungsi penghantaran kumpulan lebih banyak digunakan Jadi, sebagai pengaturcara PHP, bagaimana untuk melaksanakan rekod penghantaran mesej kumpulan? Berikut akan memberi anda pengenalan ringkas. 1. Memahami pengetahuan pembangunan yang berkaitan dengan akaun awam WeChat Sebelum memahami cara melaksanakan rekod penghantaran mesej kumpulan, I

Langkah untuk melaksanakan pembangunan akaun awam WeChat menggunakan PHP Langkah untuk melaksanakan pembangunan akaun awam WeChat menggunakan PHP Jun 27, 2023 pm 12:26 PM

Cara menggunakan PHP untuk membangunkan akaun awam WeChat Akaun awam WeChat telah menjadi saluran penting untuk promosi dan interaksi bagi banyak syarikat, dan PHP, sebagai bahasa Web yang biasa digunakan, juga boleh digunakan untuk membangunkan akaun awam WeChat. Artikel ini akan memperkenalkan langkah khusus untuk menggunakan PHP untuk membangunkan akaun awam WeChat. Langkah 1: Dapatkan akaun pembangun akaun rasmi WeChat Sebelum memulakan pembangunan akaun rasmi WeChat, anda perlu memohon akaun pembangun akaun rasmi WeChat. Untuk proses pendaftaran khusus, sila rujuk laman web rasmi platform awam WeChat

Bagaimana untuk menggunakan PHP untuk pembangunan WeChat? Bagaimana untuk menggunakan PHP untuk pembangunan WeChat? May 21, 2023 am 08:37 AM

Dengan pembangunan Internet dan peranti pintar mudah alih, WeChat telah menjadi bahagian yang amat diperlukan dalam bidang sosial dan pemasaran. Dalam era yang semakin digital ini, cara menggunakan PHP untuk pembangunan WeChat telah menjadi tumpuan ramai pembangun. Artikel ini terutamanya memperkenalkan mata pengetahuan yang berkaitan tentang cara menggunakan PHP untuk pembangunan WeChat, serta beberapa petua dan langkah berjaga-jaga. 1. Persediaan persekitaran pembangunan Sebelum membangunkan WeChat, anda perlu menyediakan persekitaran pembangunan yang sepadan terlebih dahulu. Secara khusus, anda perlu memasang persekitaran operasi PHP dan platform awam WeChat

See all articles