記一次微信公眾號的開發與後臺搭建

来源:http://www.cnblogs.com/qcqc/archive/2017/09/04/7474170.html
-Advertisement-
Play Games

一.背景 剛入新公司不久,就碰見一個同事要離職,就交接了這個項目給我。同事的離職比較倉促,所以交接的也不是很好,這也是後面問題偏多的一個客觀原因。項目如題所示,前端採用vue.js+node.js開發,後臺採用c#開發介面,還需要開發一個c#的網站來展示數據。上一份工作做的是erp,用的是power ...


一.背景

  剛入新公司不久,就碰見一個同事要離職,就交接了這個項目給我。同事的離職比較倉促,所以交接的也不是很好,這也是後面問題偏多的一個客觀原因。項目如題所示,前端採用vue.js+node.js開發,後臺採用c#開發介面,還需要開發一個c#的網站來展示數據。上一份工作做的是erp,用的是powerbuilder,所以這個項目還是涉及到比較多的生疏知識。

二.遇到的問題

  1.微信測試環境搭建

    微信的測試環境搭建還是比較麻煩的(對於新手來說),但是我回過頭去看的時候,也不知道該寫些什麼,還是網上找教程吧。

2.微信錄音上傳下載   微信錄音如果想要下載的指定路徑,需要先上傳錄音到微信伺服器,再根據返回的serverId(即下載的MEDIA_ID)去微信提供的介面下載到你目標路徑,微信測試環境沒問題的話,按照這個基本上就沒有問題,不過調試之類的比較麻煩,只能通過寫日誌的方式查看。微信也提供了一個供測試的界面,輸入參數,可以獲取報錯信息。
/// <SUMMARY> 
        /// 下載保存多媒體文件,返回多媒體保存路徑 
        /// </SUMMARY> 
        /// <PARAM name="ACCESS_TOKEN"></PARAM> 
        /// <PARAM name="MEDIA_ID"></PARAM> 
        /// <RETURNS></RETURNS> 
        public string GetMultimedia(string ACCESS_TOKEN, string MEDIA_ID)
        {
            string file = string.Empty;
            string strpath = string.Empty;
            string stUrl = Common.TextHelper.WXUploadMediaUrl+"?access_token=" + ACCESS_TOKEN + "&media_id=" + MEDIA_ID;

            HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(stUrl);

            req.Method = "GET";
            using (WebResponse wr = req.GetResponse())
            {
                HttpWebResponse myResponse = (HttpWebResponse)req.GetResponse();

                strpath = myResponse.ResponseUri.ToString();

                WebClient mywebclient = new WebClient();
                string basePath = AppDomain.CurrentDomain.BaseDirectory + "Attachment";//附件臨時存放路徑
                string amrFile = DateTime.Now.ToString("yyyyMMddhhmmssms")+".amr";
                string mp3File= DateTime.Now.ToString("yyyyMMddhhmmssms")+".mp3";
                try
                {
                    mywebclient.DownloadFile(strpath, Path.Combine(basePath, amrFile));
                    ConvertToMp3(Path.Combine(basePath, amrFile), Path.Combine(basePath, mp3File));
                    file = mp3File;
                    //file = amrFile;
                }
                catch (Exception ex)
                {
                    //savepath = ex.ToString();
                }

            }
            return file ;
        }
View Code

 

參考文檔:http://www.cnblogs.com/zhangs1986/p/3636234.html 3.微信錄音格式轉換   amr格式的文件,網頁不能播放,所以需要轉換成MP3格式,查看了許多都選擇使用第三方工具ffmpeg。剛開始使用的時候,遇到了MP3可以轉成wav格式,但是amr格式不能轉成mp3的尷尬局面。折騰了許久,後面經過檢查才發現用於測試的amr文件壞掉了。這個故事告訴我們一定要細心,還有遇到問題不用慌,深呼吸一口氣,從頭檢查一遍,或許會有收穫。
public string ConvertToMp3(string pathBefore, string pathLater)
         {
             string c = System.Web.HttpContext.Current.Server.MapPath("/ffmpeg/") + @"ffmpeg.exe -i " + pathBefore + " " + pathLater;
             log.WriteLine(c);
             string str = RunCmd(c);
             return str;
         }

        /// <summary>
        /// 執行Cmd命令
        /// </summary>
        private string RunCmd(string c)
        {
            try
            {
                ProcessStartInfo info = new ProcessStartInfo("cmd.exe");
                info.RedirectStandardOutput = false;
                info.UseShellExecute = false;
                Process p = Process.Start(info);
                p.StartInfo.UseShellExecute = false;
                p.StartInfo.RedirectStandardInput = true;
                p.StartInfo.RedirectStandardOutput = true;
                p.StartInfo.RedirectStandardError = true;
                p.Start();
                p.StandardInput.WriteLine(c);
                p.StandardInput.AutoFlush = true;
                Thread.Sleep(1000);
                p.StandardInput.WriteLine("exit");
                p.WaitForExit();
                string outStr = p.StandardOutput.ReadToEnd();
                p.Close();

                return outStr;
            }
            catch (Exception ex)
            {
                return "error" + ex.Message;
            }
        }
View Code 參考文檔:http://www.cnblogs.com/LittleBai/p/5924416.html     4.路徑正確,卻無法獲取附件(iis mine類型配置)   公眾號提交的信息包含圖片、音頻、視頻,上傳到伺服器後都是放在同一個文件夾,但是網頁顯示的時候,圖片可以訪問,音頻、視頻卻提示不能訪問。問了老大才知道iis上mine類型需要加下配置。由於我之前做的不是網頁開發,甚至不是c#開發,所以很多坑還沒踩過,只能一個個踩過去,才會長記性。所謂經驗,大概就是踩過的坑比較多吧! 5.圖片旋轉   這個倒是沒什麼好說的,圖片旋轉的簡單實現而已  
function rotate(row)
{
    var deg = eval('get' + $("#" + row).css('transform'));//構造getmatrix函數,返回上次旋轉度數  
    var step = 90;//每次旋轉多少度  
    $("#" + row).css({ 'transform': 'rotate(' + (deg + step) % 360 + 'deg)' });
}

function getmatrix(a, b, c, d, e, f) {
    var aa = Math.round(180 * Math.asin(a) / Math.PI);
    var bb = Math.round(180 * Math.acos(b) / Math.PI);
    var cc = Math.round(180 * Math.asin(c) / Math.PI);
    var dd = Math.round(180 * Math.acos(d) / Math.PI);
    var deg = 0;
    if (aa == bb || -aa == bb) {
        deg = dd;
    } else if (-aa + bb == 180) {
        deg = 180 + cc;
    } else if (aa + bb == 180) {
        deg = 360 - cc || 360 - dd;
    }
    return deg >= 360 ? 0 : deg;
    //return (aa+','+bb+','+cc+','+dd);  
}
View Code

 參考文檔: http://m.blog.csdn.net/cengjingcanghai123/article/details/53537242

     

三.總結

  花了將近一個月的時間,雖然過程磕磕碰碰,但總體來說還是完成了任務。不足之處有很多,比如前端樣式賊醜(雖然我不是前端,不過小公司只能前後端兼收並蓄了),比如效率略低(這個是因為我之前做的是pb,c#雖然有基礎,但是實際的開發經驗並不多)。大體來說,對自己的表現還算滿意,畢竟涉及到的東西都不太熟悉,一個月的時候能夠完成任務,打個60分吧!我的優點在於邏輯能力與資料庫(上一份工作是做erp的,虐出來),缺點也很明顯(基礎不夠好,所以還是需要狠補基礎),希望再接再厲!如果寫下的這篇文章能夠解決某個猿的部分問題,可以讓某些猿少踩一個坑,我就挺開心的!文筆不好,絮絮叨叨,求輕虐!

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 目錄 · Overview · Introduction · Use cases · Manual Setup · Assumption · Configuration · Startup & test · Principle · Topic · Distribution · Producer ·  ...
  • 網上有很多很好的PPT,可惜一般作者都加了名字和主題,現在我們就來說說如何修改PPT中左下方狀態欄的主題名稱。 如下圖所示,紅色方框內就是別人設置的主題。 網上很多網友都說:點擊"視圖" --》"幻燈片母版" --》"重命名" --》"修改" ,保存即可,但事實上並不行,下麵我來說說正確的方法吧。 ...
  • 下載rpm包見:http://www.cnblogs.com/grey-wolf/p/7472680.html 1、rz上傳到伺服器,解壓縮 2、安裝rpm包 註意:如果不是全新安裝,而是之前用rpm裝過,沒裝好,又卸載的情況下安裝,可能會出現如下情況: 在執行rpm -ivh mysql-comm ...
  • 本篇以我自己的網站為例來通俗易懂的講述網站的常見漏洞,如何防止網站被入侵,如何讓網站更安全。 要想足夠安全,首先得知道其中的道理。 本文例子通俗易懂,主要講述了 各種漏洞 的原理及防護,相比網上其它的web安全入門文章來說,本文更豐富,更加具有實戰性和趣味性。 本文講解目錄大致如下,講述什麼是暴力破 ...
  • http: https: ...
  • .NET Core 2.0應用程式減小體積瘦身官方工具 IL Linker。 IL Linker 來源於mono的linker https://github.com/mono/linker,目前還是預覽版本。 在一般的情況下,鏈接器可以將應用程式的大小減少50%,大型應用程式的大小可能更有利,鏈接器 ...
  • Razor功能非常強大,但是本身並不能做到無刷新,所以需要配合ajax使用 本文就做一個簡單例子,實現Razor配合ajax做到局部刷新。 首先,我們創建一個MVC項目 讓我們創建一個簡單的Controller Book 然後對其添加一個視圖,並且添加上一些簡單的Html代碼 這裡我添加了一個<di ...
  • 除了微軟自家的Windows平臺, .NET Core針對Mac OS以及各種Linux(RHEL、Ubuntu、Debian、Fedora、CentOS和SUSE等)都提供了很好的支持,我們先來體驗一下使用Mac來開發.NET Core應用,在這之前我們照例先得構建我們的開發環境。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...