文章出處

對于之前微信支付的文章中,我們談過了它的很多"坑",而在進行紅包開發時,這種坑依然不少,主要是微信為我們提供的各種賬號和密鑰太多,把開發人員都搞暈了,下面大叔總結一下:

一 微信支付的密鑰

統一使用公眾號密鑰:Key

二 微信紅包的密鑰

統一使用商戶賬號的密鑰:AppSecret

三 紅包進行簽名要注意的

使用場景可以排除,如果大于200元時才需要這個參數,如果你隨便寫一個場景,而商戶平臺沒有開通,反而會報錯

四 向微信發送紅包請求時要帶上證書

需要現時讀取apiclient_cert.p12的簽名內容,因為https是雙向檢驗的,在.net平臺,程序要加載p12這個證書,并發到微信;在操作系統上,還要安裝這個證書,兩者缺一不可.

public static string Post(string url, string param)
        {
            try
            {
                string cert = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "apiclient_cert.p12");
                string password = WxPayConfig.MCHID;
                ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
                X509Certificate cer = new X509Certificate(cert, password);

                HttpWebRequest webrequest = (HttpWebRequest)HttpWebRequest.Create(url);
                webrequest.ClientCertificates.Add(cer);
                webrequest.Method = "post";

                byte[] someBytes = System.Text.Encoding.UTF8.GetBytes(param);
                webrequest.ContentLength = someBytes.Length;
                Stream reqStream = webrequest.GetRequestStream();
                reqStream.Write(someBytes, 0, someBytes.Length);
                reqStream.Close(); //必須要關閉 請求

                HttpWebResponse webreponse = (HttpWebResponse)webrequest.GetResponse();
                Stream stream = webreponse.GetResponseStream();
                string resp = string.Empty;
                using (StreamReader reader = new StreamReader(stream))
                {
                    resp = reader.ReadToEnd();
                }
                return resp;
            }
            catch (Exception e)
            {
                Lind.DDD.Logger.LoggerFactory.Instance.Logger_Info(string.Format("微信紅包接口日志:錯誤代碼:{0} {1}", e.Message, e.StackTrace));
                throw;
            }

五 簽名時的key一定要用AppSecret,下面代碼是錯誤的

有了上面幾個經驗之后,我們的紅包模塊才可以測試成功!

真的挺不容易的,尤其是.net平臺,還要安裝個人證書,為證書添加用戶權限等.


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜

    大師兄 發表在 痞客邦 留言(0) 人氣()


    留言列表 留言列表

    發表留言