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

目錄
回復(fù)文本消息
回復(fù)圖片消息
回復(fù)語音消息
回復(fù)視頻消息
回復(fù)音樂消息
回復(fù)圖文消息
首頁 微信小程式 微信開發(fā) 微信開發(fā)之被動回覆與上傳下載文件

微信開發(fā)之被動回覆與上傳下載文件

May 09, 2017 am 09:58 AM

第五章已經(jīng)講了怎麼處理用戶發(fā)送的訊息,本章就來講講怎麼回應(yīng)用戶的請求。想必新手看到這個標題也就懵了,千萬別懵,微信的介面就這樣,在回覆圖片、音樂、語音等都需要將我們的媒體檔案上傳到微信的伺服器才能使用。不知道這樣的做法是出於什麼考慮的,而且同是給用戶回覆訊息,客服介面和群發(fā)介面發(fā)送的訊息體格式竟然是不同的。估計是這幾處介面不是同一個人寫的,沒有做好程式碼的統(tǒng)一,咱們屌絲開發(fā)者只能無力吐槽了。

在講上傳下載介面前,需要先將下先來講講access_token取得方法。在微信介面開發(fā)的過程access_token是至關(guān)重要的,是公眾號的全域唯一票據(jù),公眾號呼叫各介面時都需使用access_token。開發(fā)者需要進行妥善保存。 access_token的儲存至少要保留512個字元空間。 access_token的有效期限目前為2小時,需定時刷新,重複取得將導(dǎo)致上次取得的access_token失效。需要注意的時,一個公眾號同時只存在一個有效的access_token,開發(fā)者需要在access_token過期前,刷新access_token。在刷新的過程中,公眾平臺後臺會保證在刷新短時間內(nèi),新舊access_token都可用,這保證了第三方業(yè)務(wù)的平滑過渡。

公眾號可以使用AppID和AppSecret呼叫本介面來取得access_token。 AppID和AppSecret可在微信公眾平臺官網(wǎng)-開發(fā)者中心頁中取得(需要已成為開發(fā)者,且?guī)ぬ枦]有異常狀態(tài))。如下圖:

微信開發(fā)之被動回覆與上傳下載文件

取得access_token的介面位址是:

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
將appid和secret替換成你自己的。

發(fā)送get請求到這個位址,傳回的資料如下:

{"access_token":"eEd6dhp0s24JfWwDyGBbrvJxnhqHTSYZ8MKdQ7MuCGBKxAjHv-tEIwhFZzn102lGvIWxnjZZreT6C1NCT9fpS7NREOkEX42yojVnqKVaicg","expires_in":7200}
我們只需解析這個json,即可獲取到我們所需的access_token.代碼如下:
AccessToken實體類:
public class AccessToken
    {        public string token { get; set; }        public DateTime expirestime { get; set; }
    }

取得access token

/// <summary>
        /// 獲取access token        /// </summary>
        /// <param name="appid">第三方用戶唯一憑證</param>
        /// <param name="secret">第三方用戶唯一憑證密鑰,即appsecret</param>
        /// <returns>AccessToken對象,expirestime是過期時間</returns>
        public static AccessToken GetAccessToken(string appid, string secret)
        {            try
            {                string url = string.Format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}", appid, secret);                string retdata = Utils.HttpGet(url);                if (retdata.Contains("access_token"))
                {
                    JObject obj = (JObject)JsonConvert.DeserializeObject(retdata);                    string token = obj.Value<string>("access_token");                    int expirestime = obj.Value<int>("expires_in");                    return new AccessToken { token = token, expirestime = DateTime.Now.AddSeconds(expirestime) };
                }                else
                {
                    WriteBug(retdata);//寫錯誤日志                }                return null;
            }            catch (Exception e)
            {
                WriteBug(e.ToString());//寫錯誤日志
                return null;
            }

        }

access_token取得成功後,先來講上傳下載多媒體檔案吧。官方說,公眾號在使用介面時,對多媒體檔案、多媒體訊息的取得和呼叫等操作,是透過media_id來進行的(咱讀書少,不明白為什麼不能使用url,而要多此一舉先上傳到伺服器在發(fā)送)。透過本接口,公眾號可以上傳或下載多媒體檔案。但請注意,每個多媒體檔案(media_id)會在上傳、使用者傳送到微信伺服器3天後自動刪除,以節(jié)省伺服器資源。

上傳多媒體的介面位址是:

file.api.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE

其中access_token為呼叫介面憑證,type是媒體檔案類型,分別有圖片(微信開發(fā)之被動回覆與上傳下載文件)、語音(voice)、影片(video)和縮圖(thumb)

#注意事項

上傳的多媒體檔案有格式和大小限制,如下:

  • 圖片(微信開發(fā)之被動回覆與上傳下載文件): 1M,支援JPG格式

  • 語音(voice):2M,播放長度不超過60s,支援AMR\MP3格式

  • 影片(video):10MB,支援MP4格式

  • 縮圖(thumb):64KB,支援JPG格式

媒體檔案在後臺保存時間為3天,即3天後media_id失效。

為了方便調(diào)用,將媒體檔案的型別定義為枚舉,程式碼如下:

public enum MediaType
    {        /// <summary>
        /// 圖片(微信開發(fā)之被動回覆與上傳下載文件): 1M,支持JPG格式        /// </summary>        微信開發(fā)之被動回覆與上傳下載文件,        /// <summary>
        /// 語音(voice):2M,播放長度不超過60s,支持AMR\MP3格式        /// </summary>        voice,        /// <summary>
        /// 視頻(video):10MB,支持MP4格式        /// </summary>        video,        /// <summary>
        /// 縮略圖(thumb):64KB,支持JPG格式        /// </summary>        thumb
    }

然後定義傳回值的型別:

public class UpLoadInfo
    {        /// <summary>
        /// 媒體文件類型,分別有圖片(微信開發(fā)之被動回覆與上傳下載文件)、語音(voice)、視頻(video)和縮略圖(thumb,主要用于視頻與音樂格式的縮略圖)        /// </summary>
        public string type { get; set; }        /// <summary>
        /// 媒體文件上傳后,獲取時的唯一標識        /// </summary>
        public string media_id { get; set; }        /// <summary>
        /// 媒體文件上傳時間戳        /// </summary>
        public string created_at { get; set; }
    }

最後使用WebClient類別來上傳文件,並讀出返回值,程式碼如下:

/// <summary>
        /// 微信上傳多媒體文件        /// </summary>
        /// <param name="filepath">文件絕對路徑</param>
        public static ReceiveModel.UpLoadInfo WxUpLoad(string filepath, string token, MediaType mt)
        {            using (WebClient client = new WebClient())
            {                byte[] b = client.UploadFile(string.Format("http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token={0}&type={1}", token, mt.ToString()), filepath);//調(diào)用接口上傳文件                string retdata = Encoding.Default.GetString(b);//獲取返回值                if (retdata.Contains("media_id"))//判斷返回值是否包含media_id,包含則說明上傳成功,然后將返回的json字符串轉(zhuǎn)換成json
                {                    return JsonConvert.DeserializeObject<UpLoadInfo>(retdata);
                }                else
                {//否則,寫錯誤日志

                    WriteBug(retdata);//寫錯誤日志
                    return null;
                }
            }
        }

至此,在講回覆訊息之前,插入了兩個基礎(chǔ)支援接口,由於各位整理歸納能力太爛了,各位看官請多包涵,如有問題就留言和我交流。 下面正式開始講回覆訊息。在看下面內(nèi)容的時候,請大家結(jié)合第四,第五章來閱讀。

前面兩章講述了接收並處理用戶發(fā)送的訊息,講到了一個訊息基類BaseMessage,而不管我們接收到什麼類型的消息,都需要可以調(diào)用方法,進行響應(yīng)用戶的請求,所以,用戶回覆用戶請求的方法需要封裝到基底類別中。以下先簡單了解下公眾號可以回覆的訊息類型,以及訊息格式。

注意:

一旦遇到以下情況,微信都會在公眾號會話中,向使用者下發(fā)系統(tǒng)提示「該公眾號暫時無法提供服務(wù),請稍後再試」:

#
1、開發(fā)者在5秒內(nèi)未回復(fù)任何內(nèi)容
2、開發(fā)者回復(fù)了異常數(shù)據(jù),比如JSON數(shù)據(jù)等
回復(fù)文本消息
<xml><ToUserName><![CDATA[接收方帳號(收到的OpenID)]]></ToUserName><FromUserName><![CDATA[開發(fā)者微信號]]></FromUserName><CreateTime>消息創(chuàng)建時間 (整型)</CreateTime><MsgType><![CDATA[微信開發(fā)之被動回覆與上傳下載文件]]></MsgType><Content><![CDATA[回復(fù)的消息內(nèi)容(換行:在content中能夠換行,微信客戶端就支持換行顯示)]]></Content></xml>
回復(fù)圖片消息
<xml><ToUserName><![CDATA[接收方帳號(收到的OpenID)]]></ToUserName><FromUserName><![CDATA[開發(fā)者微信號]]></FromUserName><CreateTime>消息創(chuàng)建時間 (整型)</CreateTime><MsgType><![CDATA[微信開發(fā)之被動回覆與上傳下載文件]]></MsgType><Image><MediaId><![CDATA[通過上傳多媒體文件,得到的id。]]></MediaId></Image></xml>
回復(fù)語音消息
<xml><ToUserName><![CDATA[接收方帳號(收到的OpenID)]]></ToUserName><FromUserName><![CDATA[開發(fā)者微信號]]></FromUserName><CreateTime>消息創(chuàng)建時間 (整型)</CreateTime><MsgType><![CDATA[voice]]></MsgType><Voice><MediaId><![CDATA[通過上傳多媒體文件,得到的id。]]></MediaId></Voice></xml>
回復(fù)視頻消息
<xml><ToUserName><![CDATA[接收方帳號(收到的OpenID)]]></ToUserName><FromUserName><![CDATA[開發(fā)者微信號]]></FromUserName><CreateTime>消息創(chuàng)建時間 (整型)</CreateTime><MsgType><![CDATA[video]]></MsgType><Video><MediaId><![CDATA[通過上傳多媒體文件,得到的id。]]></MediaId><Title><![CDATA[視頻消息的標題]]></Title>
<Description><![CDATA[視頻消息的描述]]></Description>
</Video></xml>
回復(fù)音樂消息
<xml><ToUserName><![CDATA[接收方帳號(收到的OpenID)]]></ToUserName><FromUserName><![CDATA[開發(fā)者微信號]]></FromUserName><CreateTime>消息創(chuàng)建時間 (整型)</CreateTime><MsgType><![CDATA[music]]></MsgType><Music><ThumbMediaId><![CDATA[縮略圖的媒體id,通過上傳多媒體文件,得到的id。]]></ThumbMediaId><Title><![CDATA[視頻消息的標題]]></Title>
<Description><![CDATA[視頻消息的描述]]></Description>
<MusicURL><![CDATA[音樂鏈接]]></MusicURL>
<HQMusicUrl><![CDATA[高質(zhì)量音樂鏈接,WIFI環(huán)境優(yōu)先使用該鏈接播放音樂]]></HQMusicUrl>
</Music></xml>
回復(fù)圖文消息
<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[fromUser]]></FromUserName><CreateTime>12345678</CreateTime><MsgType><![CDATA[news]]></MsgType><ArticleCount>2</ArticleCount><Articles><item><Title><![CDATA[title1]]></Title> <Description><![CDATA[description1]]></Description><PicUrl><![CDATA[picurl]]></PicUrl><Url><![CDATA[url]]></Url></item><item><Title><![CDATA[title]]></Title><Description><![CDATA[description]]></Description><PicUrl><![CDATA[picurl]]></PicUrl><Url><![CDATA[url]]></Url></item></Articles></xml>

回復(fù)圖文中,item是一個項,一個item代碼一個圖文。在響應(yīng)的時候,我們只需根據(jù)數(shù)據(jù)格式,替換掉對應(yīng)的屬性,然后Response.Write(s)即可。結(jié)合前兩章的講解,BaseMessage的最終代碼如下:

/// <summary>
    /// 消息體基類    /// </summary>
    public abstract class BaseMessage
    {        /// <summary>
        /// 開發(fā)者微信號        /// </summary>
        public string ToUserName { get; set; }       /// <summary>
        /// 發(fā)送方帳號(一個OpenID)       /// </summary>
        public string FromUserName { get; set; }        /// <summary>
        /// 消息創(chuàng)建時間 (整型)        /// </summary>
        public string CreateTime { get; set; }        /// <summary>
        /// 消息類型        /// </summary>
        public MsgType MsgType { get; set; }        public virtual void ResponseNull()
        {
            Utils.ResponseWrite("");
        }        public virtual void ResText(EnterParam param, string content)
        {
            StringBuilder resxml = new StringBuilder(string.Format("<xml><ToUserName><![CDATA[{0}]]></ToUserName><FromUserName><![CDATA[{1}]]></FromUserName><CreateTime>{2}</CreateTime>", FromUserName, ToUserName, Utils.ConvertDateTimeInt(DateTime.Now)));
            resxml.AppendFormat("<MsgType><![CDATA[text]]></MsgType><Content><![CDATA[{0}]]></Content><FuncFlag>0</FuncFlag></xml>", content);
            Response(param, resxml.ToString());
        }        /// <summary>
        /// 回復(fù)消息(音樂)        /// </summary>
        public  void ResMusic(EnterParam param, Music mu)
        {
            StringBuilder resxml = new StringBuilder(string.Format("<xml><ToUserName><![CDATA[{0}]]></ToUserName><FromUserName><![CDATA[{1}]]></FromUserName><CreateTime>{2}</CreateTime>",FromUserName,ToUserName, Utils.ConvertDateTimeInt(DateTime.Now)));
            resxml.Append(" <MsgType><![CDATA[music]]></MsgType>");
            resxml.AppendFormat("<Music><Title><![CDATA[{0}]]></Title><Description><![CDATA[{1}]]></Description>", mu.Title, mu.Description);
            resxml.AppendFormat("<MusicUrl><![CDATA[http://{0}{1}]]></MusicUrl><HQMusicUrl><![CDATA[http://{2}{3}]]></HQMusicUrl></Music><FuncFlag>0</FuncFlag></xml>", VqiRequest.GetCurrentFullHost(), mu.MusicUrl, VqiRequest.GetCurrentFullHost(), mu.HQMusicUrl);
            Response(param, resxml.ToString());
        }        public  void ResVideo(EnterParam param, Video v)
        {
            StringBuilder resxml = new StringBuilder(string.Format("<xml><ToUserName><![CDATA[{0}]]></ToUserName><FromUserName><![CDATA[{1}]]></FromUserName><CreateTime>{2}</CreateTime>",FromUserName,ToUserName, Utils.ConvertDateTimeInt(DateTime.Now)));
            resxml.Append(" <MsgType><![CDATA[video]]></MsgType>");
            resxml.AppendFormat("<Video><MediaId><![CDATA[{0}]]></MediaId>", v.media_id);
            resxml.AppendFormat("<Title><![CDATA[{0}]]></Title>", v.title);
            resxml.AppendFormat("<Description><![CDATA[{0}]]></Description></Video></xml>", v.description);
            Response(param, resxml.ToString());
        }        /// <summary>
        /// 回復(fù)消息(圖片)        /// </summary>
        public  void ResPicture(EnterParam param, Picture pic, string domain)
        {
            StringBuilder resxml = new StringBuilder(string.Format("<xml><ToUserName><![CDATA[{0}]]></ToUserName><FromUserName><![CDATA[{1}]]></FromUserName><CreateTime>{2}</CreateTime>",FromUserName,ToUserName, Utils.ConvertDateTimeInt(DateTime.Now)));
            resxml.Append(" <MsgType><![CDATA[微信開發(fā)之被動回覆與上傳下載文件]]></MsgType>");
            resxml.AppendFormat("<PicUrl><![CDATA[{0}]]></PicUrl></xml>", domain + pic.PictureUrl);
            Response(param, resxml.ToString());
        }        /// <summary>
        /// 回復(fù)消息(圖文列表)        /// </summary>
        /// <param name="param"></param>
        /// <param name="art"></param>
        public  void ResArticles(EnterParam param, List<Articles> art)
        {
            StringBuilder resxml = new StringBuilder(string.Format("<xml><ToUserName><![CDATA[{0}]]></ToUserName><FromUserName><![CDATA[{1}]]></FromUserName><CreateTime>{2}</CreateTime>",FromUserName,ToUserName, Utils.ConvertDateTimeInt(DateTime.Now)));
            resxml.AppendFormat("<MsgType><![CDATA[news]]></MsgType><ArticleCount>{0}</ArticleCount><Articles>", art.Count);            for (int i = 0; i < art.Count; i++)
            {
                resxml.AppendFormat("<item><Title><![CDATA[{0}]]></Title>  <Description><![CDATA[{1}]]></Description>", art[i].Title, art[i].Description);
                resxml.AppendFormat("<PicUrl><![CDATA[{0}]]></PicUrl><Url><![CDATA[{1}]]></Url></item>", art[i].PicUrl.Contains("http://") ? art[i].PicUrl : "http://" + VqiRequest.GetCurrentFullHost() + art[i].PicUrl, art[i].Url.Contains("http://") ? art[i].Url : "http://" + VqiRequest.GetCurrentFullHost() + art[i].Url);
            }
            resxml.Append("</Articles><FuncFlag>0</FuncFlag></xml>");
            Response(param, resxml.ToString());
        }        /// <summary>
        /// 多客服轉(zhuǎn)發(fā)        /// </summary>
        /// <param name="param"></param>
        public  void ResDKF(EnterParam param)
        {
            StringBuilder resxml = new StringBuilder();
            resxml.AppendFormat("<xml><ToUserName><![CDATA[{0}]]></ToUserName>",FromUserName);
            resxml.AppendFormat("<FromUserName><![CDATA[{0}]]></FromUserName><CreateTime>{1}</CreateTime>",ToUserName,CreateTime);
            resxml.AppendFormat("<MsgType><![CDATA[transfer_customer_service]]></MsgType></xml>");
            Response(param, resxml.ToString());
        }        /// <summary>
        /// 多客服轉(zhuǎn)發(fā)如果指定的客服沒有接入能力(不在線、沒有開啟自動接入或者自動接入已滿),該用戶會一直等待指定客服有接入能力后才會被接入,而不會被其他客服接待。建議在指定客服時,先查詢客服的接入能力指定到有能力接入的客服,保證客戶能夠及時得到服務(wù)。        /// </summary>
        /// <param name="param">用戶發(fā)送的消息體</param>
        /// <param name="KfAccount">多客服賬號</param>
        public  void ResDKF(EnterParam param, string KfAccount)
        {
            StringBuilder resxml = new StringBuilder();
            resxml.AppendFormat("<xml><ToUserName><![CDATA[{0}]]></ToUserName>",FromUserName);
            resxml.AppendFormat("<FromUserName><![CDATA[{0}]]></FromUserName><CreateTime>{1}</CreateTime>",ToUserName,CreateTime);
            resxml.AppendFormat("<MsgType><![CDATA[transfer_customer_service]]></MsgType><TransInfo><KfAccount>{0}</KfAccount></TransInfo></xml>", KfAccount);
            Response(param, resxml.ToString());
        }        private  void Response(EnterParam param, string data)
        {            if (param.IsAes)
            {                var wxcpt = new MsgCrypt(param.token, param.EncodingAESKey, param.appid);
                wxcpt.EncryptMsg(data, Utils.ConvertDateTimeInt(DateTime.Now).ToString(), Utils.GetRamCode(), ref data);
            }
            Utils.ResponseWrite(data);

        }
    }

上面的代碼中,public void ResDKF(EnterParam param),public void ResDKF(EnterParam param, string KfAccount)兩個方法時多客服中,用戶轉(zhuǎn)發(fā)用戶發(fā)送的消息的,多客服將在后期的博文中進行更新,敬請期待。

public void ResMusic(EnterParam param, Music mu)方法中的Music類的定義如下:

public class Music
    {        #region 屬性        /// <summary>
        /// 音樂鏈接        /// </summary>
        public string MusicUrl { get; set; }        /// <summary>
        /// 高質(zhì)量音樂鏈接,WIFI環(huán)境優(yōu)先使用該鏈接播放音樂        /// </summary>
        public string HQMusicUrl { get; set; }        /// <summary>
        /// 標題        /// </summary>
        public string Title { get; set; }        /// <summary>
        /// 描述        /// </summary>
        public string Description { get; set; }        #endregion
    }

public void ResVideo(EnterParam param, Video v)方法中的Video類的定義如下:

public class Video
    {        public string title { get; set; }        public string media_id { get; set; }        public string description { get; set; }
    }

public void ResArticles(EnterParam param, List art)中的Articles定義如下:

public class Articles
    {        #region 屬性        /// <summary>
        /// 圖文消息標題        /// </summary>
        public string Title { get; set; }        /// <summary>
        /// 圖文消息描述        /// </summary>
        public string Description { get; set; }        /// <summary>
        /// 圖片鏈接,支持JPG、PNG格式,較好的效果為大圖640*320,小圖80*80。        /// </summary>
        public string PicUrl { get; set; }        /// <summary>
        /// 點擊圖文消息跳轉(zhuǎn)鏈接        /// </summary>
        public string Url { get; set; }        #endregion
    }

【相關(guān)推薦】

1.微信公眾號平臺源碼下載

2.微信投票源碼

以上是微信開發(fā)之被動回覆與上傳下載文件的詳細內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔相應(yīng)的法律責任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1600
29
PHP教程
1500
86
PHP微信開發(fā):如何實作訊息加密解密 PHP微信開發(fā):如何實作訊息加密解密 May 13, 2023 am 11:40 AM

PHP是一種開源的腳本語言,廣泛應(yīng)用於網(wǎng)頁開發(fā)和伺服器端編程,尤其在微信開發(fā)中得到了廣泛的應(yīng)用。如今,越來越多的企業(yè)和開發(fā)者開始使用PHP進行微信開發(fā),因為它成為了真正的易學易用的開發(fā)語言。在微信開發(fā)中,訊息的加密和解密是一個非常重要的問題,因為它們涉及資料的安全性。對於沒有加密和解密方式的消息,駭客可以輕鬆取得其中的數(shù)據(jù),對用戶造成威脅

PHP微信開發(fā):如何實現(xiàn)投票功能 PHP微信開發(fā):如何實現(xiàn)投票功能 May 14, 2023 am 11:21 AM

在微信公眾號開發(fā)中,投票功能經(jīng)常被運用。投票功能是讓使用者快速參與互動的好方式,也是舉辦活動和調(diào)查意見的重要工具。本文將為您介紹如何使用PHP實作微信投票功能。在取得微信公眾號授權(quán)首先,你需要取得微信公眾號的授權(quán)。在微信公眾平臺上,你需要設(shè)定微信公眾號碼的api地址、官方帳號和公眾號碼對應(yīng)的token。在我們使用PHP語言開發(fā)的過程中,我們需要使用微信官方提供的PH

用PHP開發(fā)微信群發(fā)工具 用PHP開發(fā)微信群發(fā)工具 May 13, 2023 pm 05:00 PM

隨著微信的普及,越來越多的企業(yè)開始將其作為行銷工具。而微信群發(fā)功能,則是企業(yè)進行微信行銷的重要手段之一。但是,如果只依靠手動發(fā)送,對於行銷人員來說是一件極為費時費力的工作。所以,開發(fā)一款微信群發(fā)工具就顯得格外重要。本文將介紹如何使用PHP開發(fā)微信群發(fā)工具。一、準備工作開發(fā)微信群發(fā)工具,我們需要掌握以下幾個技術(shù)點:PHP基礎(chǔ)知識微信公眾平臺開發(fā)開發(fā)工具:Sub

PHP微信開發(fā):如何實現(xiàn)客服聊天視窗管理 PHP微信開發(fā):如何實現(xiàn)客服聊天視窗管理 May 13, 2023 pm 05:51 PM

微信是目前全球用戶規(guī)模最大的社群平臺之一,隨著行動網(wǎng)路的普及,越來越多的企業(yè)開始意識到微信行銷的重要性。在進行微信行銷時,客服服務(wù)是至關(guān)重要的一環(huán)。為了更好地管理客服聊天窗口,我們可以藉助PHP語言進行微信開發(fā)。一、PHP微信開發(fā)簡介PHP是一種開源的伺服器端腳本語言,廣泛用於Web開發(fā)領(lǐng)域。結(jié)合微信公眾平臺提供的開發(fā)接口,我們可以使用PHP語言進行微信

PHP微信開發(fā):如何實現(xiàn)使用者標籤管理 PHP微信開發(fā):如何實現(xiàn)使用者標籤管理 May 13, 2023 pm 04:31 PM

在微信公眾號開發(fā)中,使用者標籤管理是一個非常重要的功能,可以讓開發(fā)者更了解和管理自己的使用者。本篇文章將介紹如何使用PHP實作微信使用者標籤管理功能。一、取得微信用戶openid在使用微信用戶標籤管理功能之前,我們首先需要取得用戶的openid。在微信公眾號開發(fā)中,透過使用者授權(quán)的方式取得openid是比較常見的做法。在使用者授權(quán)完成後,我們可以透過以下程式碼取得用

PHP微信開發(fā):如何實作群發(fā)訊息傳送記錄 PHP微信開發(fā):如何實作群發(fā)訊息傳送記錄 May 13, 2023 pm 04:31 PM

隨著微信成為了人們生活中越來越重要的通訊工具,其敏捷的訊息傳遞功能迅速受到廣大企業(yè)和個人的青睞。對企業(yè)而言,將微信發(fā)展為一個行銷平臺已經(jīng)成為趨勢,而微信開發(fā)的重要性也逐漸凸顯。在其中,群發(fā)功能更是被廣泛使用,那麼,作為PHP程式設(shè)計師,如何實現(xiàn)群發(fā)訊息發(fā)送記錄呢?以下將為大家簡單介紹一下。 1.了解微信公眾號相關(guān)開發(fā)知識在了解如何實現(xiàn)群發(fā)訊息發(fā)送記錄之前,我

使用PHP實現(xiàn)微信公眾號開發(fā)的步驟 使用PHP實現(xiàn)微信公眾號開發(fā)的步驟 Jun 27, 2023 pm 12:26 PM

如何使用PHP實現(xiàn)微信公眾號開發(fā)微信公眾號已經(jīng)成為了許多企業(yè)推廣和互動的重要管道,而PHP作為常用的Web語言,也可以用來進行微信公眾號的開發(fā)。本文將介紹使用PHP實現(xiàn)微信公眾號開發(fā)的具體步驟。第一步:取得微信公眾號的開發(fā)者帳號在開始微信公眾號開發(fā)之前,需要先去申請一個微信公眾號的開發(fā)者帳號。具體的註冊流程可參考微信公眾平臺的官方網(wǎng)

如何使用PHP進行微信開發(fā)? 如何使用PHP進行微信開發(fā)? May 21, 2023 am 08:37 AM

隨著網(wǎng)路和行動智慧型裝置的發(fā)展,微信成為了社交和行銷領(lǐng)域不可或缺的一部分。在這個越來越數(shù)位化的時代,如何使用PHP進行微信開發(fā)已經(jīng)成為了許多開發(fā)者的關(guān)注點。本文主要介紹如何使用PHP進行微信發(fā)展的相關(guān)知識點,以及其中的一些技巧和注意事項。一、開發(fā)環(huán)境準備在進行微信開發(fā)之前,首先需要準備好對應(yīng)的開發(fā)環(huán)境。具體來說,需要安裝PHP的運作環(huán)境,以及微信公眾平臺提

See all articles