您好,登錄后才能下訂單哦!
4月28日,已增加多媒體上傳及下載API,對(duì)應(yīng)MediaUploadRequest和MediaGetRequest
----------------------------------------------------------------------------
4月24日,感謝@八二制造的提醒,修復(fù)了自定義菜單查詢(xún)返回的錯(cuò)誤,現(xiàn)已修正。
-----------------------------------------------------------------------------
4月21日,框架類(lèi)庫(kù)已更新至NuGet,在NuGet中搜索JCSoft或者Weixin就能查到,感謝大家的支持,后續(xù)會(huì)把Outh3驗(yàn)證加上
NuGet控制臺(tái)使用方法:
PM> Install-Package JCSoft.WX.Framework
----------------------------------------------------
用了一個(gè)多星期的時(shí)間,把微信快速開(kāi)發(fā)框架進(jìn)行了改進(jìn),之前1.0版本針對(duì)的是普通訂閱號(hào),V2.0版本將會(huì)對(duì)微信所有接口都進(jìn)行支持。樓主開(kāi)發(fā)的目的也是想讓大家能夠快速建立起微信公眾平臺(tái)(WXPP),據(jù)說(shuō)現(xiàn)在開(kāi)發(fā)個(gè)微信公眾平臺(tái)月薪可以達(dá)到10K,如果您覺(jué)得好,也可以捐助樓主一下,哈哈。
好久沒(méi)被首推了,現(xiàn)在怎么申請(qǐng)首推啊?
此次更新的內(nèi)容:
1、去除了Model類(lèi)庫(kù),合并到WX.Framework類(lèi)庫(kù)
2、增加了對(duì)高級(jí)接口的支持
3、增加了API調(diào)用方式
4、支持獲取AccessToken
5、增加了測(cè)試代碼
6、增加群發(fā)功能,包括群發(fā)后時(shí)間的響應(yīng)。
這次更新的內(nèi)容較多,我會(huì)一一來(lái)演示給大家看的,目前還未支持上傳和下載媒體文件,對(duì)于微信文檔中說(shuō)的Post/Form方式不太了解,示例也用了CURL,這個(gè)更不了解了。
如果您剛解除微信公眾平臺(tái),可以參考【建立微信公眾平臺(tái)測(cè)試賬號(hào)】,目前微信公眾平臺(tái)賬號(hào)類(lèi)型分為:訂閱號(hào),服務(wù)號(hào),賬號(hào)類(lèi)型的不同,所支持的接口也不相同:
之前1.0版本僅僅支持訂閱號(hào)未認(rèn)證的情況。1.0版本的使用可以參考:【體驗(yàn)微信公眾平臺(tái)快速開(kāi)發(fā)框架】和【利用快速開(kāi)發(fā)框架,快速搭建微信瀏覽博客園首頁(yè)文章】
通過(guò)實(shí)現(xiàn)IMessageRole.MessageRole(MiddleMessage message)和IMessageHandler.HandlerRequestMessage(MiddleMessage message),自定義規(guī)則和返回?cái)?shù)據(jù)。在此不再重復(fù)表述。
V2.0已經(jīng)基本支持自定義菜單及高級(jí)接口,自定義菜單和高級(jí)接口采用API方式與微信服務(wù)器端交互。
IApiClient:Api接口類(lèi)
DefaultApiClient:實(shí)現(xiàn)了IApiClient的Execute方法
ApiResponse:微信服務(wù)端返回的數(shù)據(jù),這個(gè)是個(gè)抽象類(lèi),所有繼承的Response在WX.Model.Responses命名空間內(nèi)
ApiRequest<ApiResponse>:發(fā)送到微信服務(wù)器短的數(shù)據(jù),也是個(gè)抽象類(lèi),所有與之相關(guān)的Request都在WX.Model.Requests命名空間內(nèi)
ApiRequest<ApiResponse>與ApiResponse是一一對(duì)應(yīng)的關(guān)系。
ApiAccessTokenManager:因?yàn)樽远x菜單及高級(jí)接口都需要AccessToken,所以寫(xiě)了一個(gè)TokenManager,使用的是單例模式,如果您想使用此類(lèi),您必須在配置文件中提供:wxappid和wxappsecret的值,也可以通過(guò)ApiAccessTokenManager.Instance.SetAppIdentity(appid, appsecret)初始設(shè)置。
上述已經(jīng)說(shuō)明,在自定義菜單和高級(jí)接口中,都需要提供AccessToken,AccessToken的獲取方式可以查看微信平臺(tái)文檔。
自定義獲取AccessToken方式:
var appid = new AppIdentication("appid", "appsecret"); var request = new AccessTokenRequest(appid); IApiClient client = new DefaultApiClient(); var response = client.Execute(request); if (response.IsError) { Console.WriteLine("get token is error"); } else { Console.WriteLine(response.Access_Token); }
使用ApiAccessTokenManager獲取AccessToken:
ApiAccessTokenManager.Instance.GetCurrentToken();
使用ApiAccessTokenManager的話(huà),必須先設(shè)置AppId和AppSecret,有2種方式:
1、配置文件方式:
<configuration>
<appSettings>
<add key="wxappid" value="123"/>
<add key="wxappsecret" value="123"/>
</appSettings>
</configuration>
2、代碼方式:
ApiAccessTokenManager.Instance.SetAppIdentity("123", "123");
要注意下,GetCurrentToken()使用前,您必須配置好您的Appid和AppSecret。
ApiAccessTokenManager還提供了過(guò)期管理,一般Token的有效時(shí)間為7200秒,ApiAccessTokenManager可以自動(dòng)刷新Token。
普通的訂閱號(hào)只要認(rèn)證以后,就支持了自定義菜單,目前認(rèn)證費(fèi)為300元,接口詳細(xì)文檔請(qǐng)點(diǎn)擊查看
我們先看下實(shí)現(xiàn)后的效果:
接下來(lái),我們看下實(shí)現(xiàn)代碼:
var request = new MenuCreateRequest { AccessToken = ApiAccessTokenManager.Instance.GetCurrentToken(), Buttons = new List<ClickButton> { new ClickButton{ Name = "博客", Url = "http://inday.cnblogs.com", Type = ClickButtonType.view }, new ClickButton{ Name = "文章", SubButton = new List<ClickButton>{ new ClickButton{ Name = "推薦", Url = "http://www.cnblogs.com", Type = ClickButtonType.view }, new ClickButton { Name = "精華", Url = "http://www.cnblogs.com/pick/", Type = ClickButtonType.view } } }, new ClickButton{ Name = "新聞", Url="http://www.cnblogs.com/news/", Type = ClickButtonType.view }, } }; var response = m_client.Execute(request); if (response.IsError) { Console.WriteLine(response); } else { Assert.Equal(false, response.IsError); Assert.Equal("ok", response.ErrorMessage); }
簡(jiǎn)單吧,你只要提供一個(gè)MenuCreateRequest的實(shí)例,通過(guò)IApiClient.Execute執(zhí)行就可以了。
我在A(yíng)pi.Requests和Api.Responses中的命名規(guī)則是根據(jù)微信服務(wù)器路徑的規(guī)則。比如創(chuàng)建自定義菜單的url為:
所以我的Request就是MenuCreateRequest,對(duì)應(yīng)的Response就是MenuCreateResponse。
如果想看測(cè)試想過(guò),請(qǐng)微信掃描一下我的測(cè)試公眾賬號(hào):
接下來(lái)我們看下如何獲取所有關(guān)注用戶(hù),此為高級(jí)接口,需要服務(wù)號(hào)+認(rèn)證,詳情點(diǎn)擊查看文檔
var request = new UserGetRequest { AccessToken = ApiAccessTokenManager.Instance.GetCurrentToken(), NextOpenId = "" }; var response = m_client.Execute(request); if (!response.IsError) { foreach (var user in response.Data.OpenIds) { Console.WriteLine(user); } }
默認(rèn)每次提取10000個(gè)關(guān)注用戶(hù),我在Xunit測(cè)試下,測(cè)試結(jié)果如下:
OpenId為對(duì)于某一公眾賬號(hào)的唯一標(biāo)示,我們可以指定NextOpenId指定提取此ID后10000個(gè)關(guān)注用戶(hù),比如:
var request = new UserGetRequest { AccessToken = ApiAccessTokenManager.Instance.GetCurrentToken(), NextOpenId = "oI1_vjreLbQfGy79Thnsh5ziJZNo" };
結(jié)果:
篇幅有限,不可能一一介紹,大家可以參考微信開(kāi)發(fā)文檔,使用申請(qǐng)測(cè)試賬號(hào)進(jìn)行測(cè)試,快速開(kāi)發(fā)框架對(duì)應(yīng)的Api如下表所示。
功能 |
ApiRequest |
ApiResponse |
自定義菜單創(chuàng)建接口 |
MenuCreateRequest |
MenuCreateResponse |
自定義菜單查詢(xún)接口 |
MenuGetRequest |
MenuGetResponse |
自定義菜單刪除接口 |
MenuDeleteRequest |
MenuDeleteResponse |
創(chuàng)建分組 |
GroupsCreateRequest |
GroupsCreateResponse |
查詢(xún)所有分組 |
GroupsGetRequest |
GroupsGetResponse |
查詢(xún)用戶(hù)所在分組 |
GroupsGetIdRequest |
GroupsGetIdResponse |
修改分組名 |
GroupsUpdateRequest |
GroupsUpdateResponse |
移動(dòng)用戶(hù)分組 |
GroupsMembersUpdateRequest |
GroupsMembersUpdateResponse |
獲取用戶(hù)基本信息 |
UserInfoRequest |
UserInfoResponse |
獲取關(guān)注者列表 |
UserGetRequest |
UserGetResponse |
創(chuàng)建二維碼Ticket |
QrcodeCreateRequest |
QrcodeCreateResponse |
上傳圖文消息素材 |
MediaUploadNewsRequest |
MediaUploadNewsResponse |
根據(jù)分組進(jìn)行群發(fā) |
MessageMassSendAllRequest |
MessageMassSendAllResponse |
根據(jù)OpenId列表進(jìn)行發(fā)送 |
MessageMassSendRequest |
MessageMassSendResponse |
刪除群發(fā) |
MessageMassDeleteRequest |
MessageMassDeleteResponse |
經(jīng)過(guò)一段時(shí)間的更新代碼,對(duì)于微信快速開(kāi)發(fā)框架也算告一段落,后續(xù)可能會(huì)比較忙碌點(diǎn),如果出現(xiàn)bug,請(qǐng)大家與我取得聯(lián)系,我會(huì)第一時(shí)間去更新代碼,過(guò)段時(shí)間也會(huì)提供到騰訊公眾論壇去,看看能否被推薦。
在項(xiàng)目中,我加入了測(cè)試項(xiàng)目,其中Really開(kāi)頭的為真實(shí)測(cè)試,需要Appid和AppSecret,Mock開(kāi)頭的為虛擬的,只測(cè)試了輸出和返回的驗(yàn)證,可能不太嚴(yán)謹(jǐn),但因?yàn)闀r(shí)間有限所以未做詳細(xì)的測(cè)試。
在A(yíng)piRequest類(lèi)中,都有Validate()的方法,目前還未完善,只有簡(jiǎn)單的對(duì)于A(yíng)ccessToken的驗(yàn)證,后續(xù)會(huì)與微信公眾開(kāi)發(fā)平臺(tái)標(biāo)準(zhǔn)進(jìn)行更新。
目前源代碼完全公開(kāi)在Github中,開(kāi)源協(xié)議還未想好,等有空再說(shuō)吧。
最近參加了某個(gè)公司的應(yīng)聘,未成功,人家就看了簡(jiǎn)歷就否了,沒(méi)辦法,人老珠黃,文憑才中專(zhuān),經(jīng)驗(yàn)多有何用呢,呵呵!有好公司覺(jué)得在下還可以,可以與我私聊,不過(guò)本人有言在先,本人簡(jiǎn)歷寫(xiě)得很爛(懶得更新,那么多項(xiàng)目誰(shuí)記得清楚呢),無(wú)文憑(如果中專(zhuān)也算的話(huà)。。。),英文不會(huì)說(shuō)只會(huì)看(目前關(guān)鍵就是在學(xué)英文),不過(guò)本人除了會(huì)開(kāi)發(fā)外,還會(huì)根據(jù)工作的性質(zhì),技術(shù)結(jié)合工作來(lái),相信物有所值滴。還有要筆試基礎(chǔ)的就免了,實(shí)在沒(méi)腦子去背這么多,不是專(zhuān)業(yè)的面試狂,只是想改善家庭生活而已。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。