久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx

微信公眾號開發php微信公眾號開發,開發什么?備忘。。php微信公眾號開發教程

2023-11-21    分類: 網站建設

這太令人沮喪和難以理解。也太坑了。

以下是這幾天微信公眾號相關工作的總結。不全面,只是作為初學者的記錄,僅供參考。

一、微信公眾號開發,開發什么?

公眾號不同于小程序。小程序類似于手機App,是獨立開發的。微信只提供入口;而公眾號基本在微信框架內。微信公眾號本質上是用戶的一個聯系人,但只是一個特殊的聯系人。通過微信提供的公眾號管理后臺,無需任何編程,即可快速搭建像樣的公眾號,菜單、機器人客服、文章更新一應俱全。

但是小程序開發,如果你想要更多的權力,你需要開發它。比如機器人客服。通過公眾號管理后臺網站模板,可以定義一些自動回復語句,但畢竟還不夠智能。這時候,我們可以在互聯網上搭建一個服務器,提供相應的服務。當然,這需要準備好URL和域名。

第二,菜單。點擊公眾號的菜單項后,可以回復一些消息,跳轉到小程序,或者打開網頁。如果打開網頁,如果是未經驗證的公眾號,則只能打開公眾號內的素材,或當前公眾號已發表的文章、圖片、視頻等;和經過驗證的公眾號,可以直接打開任意網址。這些網頁通常是部署在互聯網上的所謂微信網頁。他們使用微信JS-SDK,上面有各種微信元素,比如掃描、分享到朋友圈等等。當然,這部分需要開發。

并向關注者發送消息。我認為這是微信公眾號大的賣點。比如我關注了某個公眾號,通過這個公眾號的菜單打開相關小程序做事,當事情進展的時候,系統可以通過這個公眾號給我發消息提醒我目前的工作進展。我認為這是公眾號開發中最有價值的工作。

當然,也有可以在公眾號上自動發布文章的程序。不過這種事情也可以在公眾號管理后臺手動完成,無非就是動手。

二、發展鋪墊

在開發之前,有必要了解相關規范。建議同時閱讀開發文檔的開頭:微信公眾平臺開發概述

1、公眾號分類

衣著三色,食分五品。所謂微信公眾號分為訂閱號和服務號。個人只能申請訂閱號,企業可以申請訂閱號和服務號。然后公眾號分為認證和未認證。公眾號的類型,是否經過認證,決定了是否可以調用很多微信服務。沒有認證,基本沒什么玩的。而且很遺憾,個人申請的訂閱號根本無法通過微信認證,直接擋住了門。

如何開發它?微信還非常“貼心”地提供了測試號機制。不用申請公眾號,我們可以先申請一個測試號,用這個號來測試微信服務接口。測試號所有微信服務接口均可訪問。當然是鵝!和微信網頁一樣,需要在手機上運行才能看到效果,如果使用測試號,有些東西是無法渲染的。比如所謂的微信開放標簽(即微信定義的標簽,類似于HTML)。

訂閱帳號和服務帳號的側重點不同。據我了解,訂閱號側重于發布文章,而服務號側重于發送有針對性的通知。一般來說,服務帳戶比訂閱帳戶更強大。

從表面上看,訂閱號每天可以發送 1 條消息微信公眾號開發 php,而服務號每月只能發送 4 條消息,訂閱號更強。問題是,群發消息有什么用?當我們在網上做事時,我們想要的是對我來說是新聞。只有服務帳號可以發送此有針對性的通知消息。

在文檔中,這種類型的消息稱為模板消息。為什么叫模板消息?這是因為這種消息是結合模板生成的。就像我們的手機短信一樣。做過手機短信開發的都知道,手機短信是不能隨便發的。因為眾所周知的原因,肯定有所謂的模板,就是怕內容不合法,內容離譜,也就是短信的格式是固定的,而且很多字也是固定的,我們只需要填寫每次我們發送它時都會包含一些內容。此模板必須事先創建并獲得電信運營商的批準。微信消息也使用模板。調用發送接口時,需要將模板ID作為參數傳遞。

目前小程序的模板消息功能已經廢棄,取而代之的是所謂的“統一服務消息”,實際上是通過服務號發送的。也就是說,小程序要給用戶發送通知,就必須對應一個服務號。

但世界上還有一種叫做訂閱消息的東西。公眾號叫訂閱通知,小程序叫訂閱消息。有兩種類型:一次性和長期。訂閱消息需要用戶主動訂閱。例如,使用麥當勞小程序點餐時,每次付款后,都會詢問您是否接受取餐通知。長期只對部分民生和醫院公眾賬號開放。這是在申請公共帳戶時給出的。不要冒險微信公眾號開發 php,低估微信折騰人的能力。否則發送時對方永遠收不到,也可能沒有錯誤信息;

模板消息和訂閱消息有什么區別?訂閱新聞不僅僅是要求用戶手動訂閱,也沒什么。問題是,這必須用手機來完成。如果我通過 pC 做事并想在手機上接收提醒怎么辦?訂閱新聞已完成。

2、公眾號調試工具

是微信開發者工具。請注意,它是開發人員工具,而不是開發工具。這個工具確實是小程序的開發工具;對于公眾號,它只是一個調試工具,無法通過它輸入任何代碼;它只是微信網頁的調試工具。此時它只是一個微信瀏覽器。方法是在微信開發者工具頂部輸入微信網頁地址進行瀏覽調試,類似普通瀏覽器按F12。

3、查看微信網頁運行結果

公眾號可以通過微信客戶端查看。這里所說的查看結果是指查看微信網頁的運行結果。雖然有“網頁”二字,但這不是一個普通的網頁。可以用普通瀏覽器訪問,雖然沒有報錯,但是看不到效果。它應該通過微信瀏覽器或微信開發者工具運行。需要注意的是,手機上沒有微信瀏覽器這個app,是微信暗示的。如何召喚它?你可以把微信網頁的地址發給微信上的朋友,比如“文件傳輸助手”,然后在聊天記錄里點擊這個網址,就會用微信瀏覽器打開。絕對給力的是微信瀏覽器,QQ瀏覽器不好用。

4、開發文檔

基于微信進行二次開發,上網查資料基本沒用。最好老老實實閱讀微信官方開發文檔。

在公眾號管理后臺-設置與開發-開發者工具-開發文檔中打開公眾號開發文檔。

微信有兩個平臺,小程序叫“微信開發開放平臺”,公眾號叫“微信開發公共平臺”。

5、一些術語

1)管理員和操作員

在開發過程中,不可避免地會訪問微信公眾號管理后臺修改或設置一些設置,但要更改設置,必須掃描二維碼進行身份認證。這很尷尬。申請公眾號的人是管理員,但不一定參與開發。提醒大老板掃描二維碼會很不方便,甚至是不可能的。您可以將開發人員添加到操作員列表并自行掃描代碼。運營商分為長期和短期兩種。他們應該是具有足夠權限的長期運營商。

可以在微信公眾號管理后臺-設置與開發-人事設置中設置。

2)Ip 白名單

在開發過程中,我們需要訪問微信服務器,比如采集。發出請求的 Ip 需要在白名單中。這個Ip是指互聯網Ip。如果我們在創新互聯內部開發,那么這個Ip就是創新互聯的Ip,用于上網。問題是,這個Ip經常變化。不知道有什么好辦法,所以基本上一天換一次白名單。

Ip白名單是供我們在本地調試微信開發者工具的。無需手機操作。

3)開發者微信

官方賬號管理后臺-設置與開發-web開發者工具,添加我們開發者的微信賬號。這是用來開發微信網頁的。因為微信開發者工具需要微信登錄。

4)JS接口安全域名

公眾號管理后臺-設置與開發-公眾號設置-功能設置。

微信網頁開發也需要它。我們的頁面需要放在這個域名下,才能使用微信的js-sdk。

填寫這個域名時,需要下載一個txt文件放在域名下,微信可以驗證域名的真實性后再保存。但是填完之后,我們在本地開發的時候,可以修改host文件,把本地ip映射到域名。畢竟是前端的東西。 js-sdk本身需要微信瀏覽器的支持,它無法判斷請求來自哪個Ip,我們傳給它什么都會相信。

5)微信打開標簽

類似于HTML,微信獨有的標簽。比如

跳轉小程序:
跳轉App:
服務號訂閱通知:
音頻播放:

三、微信網頁開發

1、概覽

微信網頁其實就是網頁,只不過它引用了微信提供的JS庫,可能會使用微信獨有的所謂開放標簽,類似于html。而這個微信網頁似乎是在一個普通的瀏覽器上運行的。雖然不會報錯,但似乎沒有任何作用。只能在微信瀏覽器或微信開發者工具上運行。

以下是微信網頁(boot下,合并)




    wechat
    
    
    


	
    
掃一掃

2、驗證

微信網頁在運行時,必須先通過微信驗證,然后才能正常使用微信的各種功能。驗證過程是,

1)訪問微信服務器獲取

2)訪問微信服務器

3)使用、隨機字符串、時間戳、當前頁面地址依次組成一個字符串,然后對該字符串進行sha hash運算得到摘要

4)使用摘要訪問微信服務器獲取簽名

5)注冊、時間戳、隨機字符串、簽名、本頁面使用的微信功能、微信打開標簽到微信

在上面的例子中,

    wx.config({
        debug: true,
        appId: /*[[${wc.appId}]]*/'',
        timestamp: /*[[${wc.timestamp}]]*/'',//注意是秒,不是毫秒
        nonceStr: /*[[${wc.nonceStr}]]*/'',//隨機串
        signature: /*[[${wc.signature}]]*/'',//關鍵所在
        jsApiList: ['chooseImage','scanQRCode','updateAppMessageShareData','updateTimelineShareData'],//需要使用的微信js-sdk函數列表
        openTagList: ['wx-open-subscribe']//開放標簽列表
    });

獲取這個json對象并不容易。可以在微信公眾號管理后臺獲取,每個公眾號都有唯一的;時間戳也很容易獲得;隨機字符串由自己決定,比較容易;最麻煩的是這個簽名,我調試了一天左右,總的意思是非法簽名。

獲取這個json對象的java代碼:

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import redis.clients.jedis.Jedis;
import javax.annotation.postConstruct;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Date;
import java.util.Random;
import java.util.concurrent.locks.ReentrantLock;
@Service
public class WxServiceImpl implements WxService {
    @Override
    public WxConfig getWxConfig(String url) {//url是微信網頁地址
        WxConfig wc = new WxConfig();//這個是自定義的對象,不必深究
        wc.setAppId(AppID);
        wc.setNonceStr(getNonceStr());//隨機串
        wc.setTimestamp((long) (new Date()).getTime() / 1000);//時間戳
        wc.setSignature(getSignature(wc.getNonceStr(), wc.getTimestamp(), url));//簽名
        return wc;
    }
    @postConstruct
    void init() {
    	/*
    		由于從微信服務器獲取token和ticket的函數有調用次數限制(每天<=2000),因此用redis將它們緩存起來
    	*/
        this.jedis = new Jedis(redis的Ip, redis端口號);
    }
    private String getSignature(String nonceStr, long timestamp, String url) {//獲取簽名
        String signature = null;
        String ticket = getTicket();
        if (ticket != null) {
            String string1 = String.format("jsapi_ticket=%s&noncestr=%s×tamp=%d&url=%s",
                    ticket,
                    nonceStr,
                    timestamp,
                    url);
            signature = getSha1(string1);
        }
        return signature;
    }
	//redis對象
    private Jedis jedis;
	//除了redis緩存,也用靜態變量保存一份。不過,應用程序重啟它們就消失了,并且不會自動過期
	//而從微信獲取到的token和ticket有效期是7200秒
    private String _ticket = null;
    private String _token = null;
	//鎖。為避免并發,使用鎖機制,不要大家都去獲取token和ticket
    private ReentrantLock lockTok = new ReentrantLock();
    private ReentrantLock lockTik = new ReentrantLock();
    private String getTicket() {
        String ticket = null;
        String key = "ticket";
        ticket = getKey(key, this._ticket);
        if (ticket == null) {
            //鎖定。
            lockTik.lock();
            ticket = getKey(key, this._ticket);//再努力一把
            if (ticket == null) {
                String token = getToken();
                if (token != null) {
                    ticket = callGet(String.format("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=%s&type=jsapi",
                            token), "ticket");
                    if (ticket != null) {
                        this._ticket = ticket;
                        setKey(key, ticket);
                    }
                }
            }
            //解鎖
            lockTik.unlock();
        }

return ticket; } private String getToken() { String token = null; String key = "token"; token = getKey(key, this._token); if (token == null) { lockTok.lock(); token = getKey(key, this._token); if (token == null) { token = callGet(String.format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s",AppID,AppSecret), "access_token"); if (token != null) { this._token = token; setKey(key, token); } } lockTok.unlock(); } return token; } final static int EXpIRTED = 7200; private String getKey(String key, String v) { String value = null; try { value = jedis.get(key); } catch (Exception ex) { value = v;//如果無法從redis中讀取則將候補變量值返回。但變量值可能有過期的問題 System.err.println(ex.getMessage()); } return value; } private void setKey(String key, String value) { try { jedis.set(key, value); jedis.expire(key, EXpIRTED); } catch (Exception ex) { System.err.println(ex.getMessage()); } } final static int NONCESTR = 16;//隨機串的長度為16。這個數值是自己定的 private String getNonceStr() {// 生成隨機字符串noncestr String chars = "AbCDEFGHIJKLMNOpQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; Stringbuffer noncestr = new Stringbuffer(); int limit = chars.length() - 1; for (int i = 0 分享名稱:微信公眾號開發php微信公眾號開發,開發什么?備忘。。php微信公眾號開發教程
瀏覽地址:http://www.js-pz168.com/news36/295736.html

成都網站建設公司_創新互聯,為您提供微信小程序關鍵詞優化軟件開發靜態網站響應式網站網站維護

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx
色播亚洲视频在线观看| 欧美一级片免费看| 精品裸体舞一区二区三区| 亚洲国产电影在线观看| 爽爽淫人综合网网站| 国产激情视频一区二区三区欧美| 国产精品久久精品国产| 一区二区精品在线| 精品国产麻豆免费人成网站| 一区二区三区在线免费播放| 国产麻豆成人精品| 国产亚洲自拍偷拍| 欧美性欧美巨大黑白大战| 久久久一区二区| 首页综合国产亚洲丝袜| www.66久久| 亚洲一区二区自拍偷拍| 久久综合狠狠综合久久激情| 亚洲国产视频一区| aaa欧美色吧激情视频| 亚洲高清精品中出| 久久精品日韩一区二区三区| 丝袜诱惑亚洲看片| 99精品国产高清在线观看| 色综合天天综合色综合av | 免费av在线一区二区| 欧美日韩精品一区二区天天拍小说 | 亚洲精品视频一二三| 欧美mv日韩mv国产网站| 亚洲大型综合色站| 99re这里只有精品6| 综合久久国产| 中文字幕精品三区| 国产一区二区三区精品欧美日韩一区二区三区| 国产专区一区二区| 欧美一区日韩一区| 亚洲成人免费在线观看| 91免费看网站| 欧美性做爰猛烈叫床潮| 亚洲精品中文在线影院| 不卡av在线免费观看| 日本福利一区二区| 亚洲女子a中天字幕| 成人激情免费视频| 91豆麻精品91久久久久久| 一区在线观看免费| 丁香天五香天堂综合| 色综合久久99| 亚洲人妖av一区二区| 99久久夜色精品国产网站| 欧美在线一区二区| 伊人开心综合网| 成人免费看片网址| 日韩久久精品一区| 久久99精品久久久久久久久久久久 | 欧美zozozo| 久久99国产精品尤物| 日韩欧美一区二区三区四区| 久久亚洲二区三区| 国产一区中文字幕| 中文字幕中文字幕一区三区| 亚洲男女一区二区三区| 不卡一区二区三区四区| 欧美日韩在线综合| 亚洲成人免费视频| 欧美精品一区二区视频| 国产日韩欧美在线一区| 国产999精品久久久久久| 欧美在线免费播放| 亚洲777理论| 久久久久资源| 国产精品嫩草99a| 成人激情免费网站| 在线不卡免费av| 蜜臀国产一区二区三区在线播放| 日韩成人在线资源| 18欧美乱大交hd1984| 97久久天天综合色天天综合色hd| 欧美一区二区三区四区视频| 久久精品国产久精国产| 中文字幕欧美日韩一区二区三区| 亚洲精品欧美二区三区中文字幕| 国产精品一码二码三码在线| 久久免费精品国产久精品久久久久| 国产成人av自拍| 4438成人网| 国产综合色产在线精品| 欧美性受xxxx| 老司机免费视频一区二区三区| 亚洲国产另类久久久精品极度| 一区二区三区在线视频观看| 免费观看成人高| 日韩一区欧美一区| 国产欧美日韩伦理| 国产精品久久一级| 国产精品免费区二区三区观看| 国产欧美一区二区三区沐欲| 97视频中文字幕| 久久精品一区二区三区av| 91丨九色丨尤物| 久久久www免费人成精品| 91热门视频在线观看| 久久亚洲综合av| 97久久天天综合色天天综合色hd| 久久久久国产精品麻豆ai换脸| 成人污污视频在线观看| 欧美一级艳片视频免费观看| 国产99久久久国产精品潘金网站| 91精品国产福利在线观看| 国产成人精品一区二区三区四区| 日韩一区二区三区视频在线| 国产成人精品免费网站| 欧美电影免费提供在线观看| 成人高清免费观看| 久久久久高清精品| 国产精品三区在线| 亚洲图片欧美激情| 热re99久久精品国产99热| 亚洲一区国产视频| 在线免费观看成人| 久久精品99国产精品| 欧美一区二视频| 99久久精品费精品国产一区二区| 国产人久久人人人人爽| 久久精品日产第一区二区三区| 亚洲欧美另类综合偷拍| 午夜精品一区二区三区在线观看| 日韩影院在线观看| 欧美日韩久久一区| 成人av电影在线观看| 中文字幕欧美日韩一区| 蜜桃传媒视频麻豆一区| 亚洲成av人在线观看| 一本色道亚洲精品aⅴ| 国产一区二区三区观看| 精品动漫一区二区三区在线观看| 99久久久久国产精品免费| 亚洲人成网站在线| 中文字幕久久综合| 国产激情一区二区三区桃花岛亚洲| 26uuu亚洲| 久久国产主播精品| 日韩av中文在线观看| 欧美精品tushy高清| 91国产丝袜在线放| 亚洲免费观看高清完整版在线 | 久久久久久影视| 欧美男人的天堂| 日本亚洲电影天堂| 欧美一区二区三区免费在线看 | 椎名由奈jux491在线播放 | 国产精品国产亚洲精品看不卡15| 亚洲三级电影全部在线观看高清| 一区二区视频在线观看| 国产精品888| 欧美国产日韩在线观看| 亚洲国产午夜伦理片大全在线观看网站 | 91麻豆swag| 一区二区三区.www| 欧美日韩国产高清一区二区三区 | 国产美女久久久久| 国产肉丝袜一区二区| 亚洲高清视频一区| 国产成人精品一区二区三区四区| 欧美国产1区2区| 色综合久久中文字幕| 成人av免费在线观看| 一区二区在线免费观看| 欧美日韩高清一区二区三区| 成人av免费在线看| 日韩精品电影一区亚洲| 精品蜜桃在线看| 日本一区二区精品| 国产一区二区91| 亚洲欧美自拍偷拍色图| 欧美网站一区二区| 粉嫩av一区二区三区免费观看| 午夜精品一区二区三区免费视频 | 91污在线观看| 午夜av区久久| 久久日一线二线三线suv| 日韩欧美一区二区在线观看| 国产盗摄一区二区三区| 亚洲色欲色欲www| 9191成人精品久久| 欧美精品一区二区三区久久| 国产综合色产在线精品| 亚洲色大成网站www久久九九| 欧美丰满嫩嫩电影| 欧美lavv| 丁香一区二区三区| 亚洲国产综合色| 精品国产91久久久久久久妲己| 亚洲精品高清视频| 91欧美一区二区| 日韩高清一级片| 国产精品久久久久久久久快鸭 | 日本不卡在线播放| 成人一区二区三区视频| 亚洲国产精品自拍|