《微信開發深度解析》全稱《微信開發深度解析:微信公眾號、小程式高效開發秘籍》,作者蘇震巍,電子工業出版社2017年7月出版
基本介紹
- 中文名:微信開發深度解析:微信公眾號、小程式高效開發秘籍
- 作者:蘇震巍
- 出版時間:2017年7月
- 出版社:電子工業出版社
- 頁數:624 頁
- ISBN:978-7-121-31738-5
- 定價:99.00
- 開本:16 開
內容提要,目錄,
內容提要
《微信開發深度解析:微信公眾號、小程式高效開發秘籍》以深度剖析Senparc.Weixin SDK框架的設計思想和使用方法為主幹,全面介紹了開發微信公眾號(包含了訂閱號、服務號和小程式)所需的關鍵技能,包括了從需求分析、策劃,到賬號申請、驗證,再到全面的API及開發工具介紹,側重於伺服器端開發。《微信開發深度解析:微信公眾號、小程式高效開發秘籍》也涵蓋了盛派網路團隊在多年的研發過中收集到的大量注意點,幫助開發者“避坑”。
《微信開發深度解析:微信公眾號、小程式高效開發秘籍》包含了四個部分:微信基礎介紹(第1~3章)、Senparc.Weixin SDK框架介紹(第4~13章)、Senparc.Weixin SDK接口介紹(第14~19章)和微信小程式(第20章),由淺入深指導開發者學習微信開發,在此過程中可以結合配套系統進行閱讀和練習:https://book.weixin.senparc.com。
同時,《微信開發深度解析:微信公眾號、小程式高效開發秘籍》也是Senparc.Weixin SDK作者為開發者奉上的一份官方文檔,書中詳細介紹了SDK中各個接口的位置及用法,可以幫助開發者靈活套用和改寫代碼。對於需要學習編程架構思想的開發者,本書也凝結了較多精華的思想和思考過程,可以作為參考。
Senparc.Weixin SDK已經支持了多個.NET版本,包括.NET Core、.NET Framework 4.5和.NET Framework 4.0,各個版本的接口和使用方法保持了高度的一致,《微信開發深度解析:微信公眾號、小程式高效開發秘籍》以目前使用率最高的.NET 4.5(C#)版本為例進行介紹,針對其他框架本書也同樣適用,讀者可以舉一反三。
《微信開發深度解析:微信公眾號、小程式高效開發秘籍》除提供給專業開發人員使用以外,也適合大專院校、培訓機構作為相關教材和參考書使用。
目錄
★第一部分 微信基礎介紹
第1章 使用本書 2
1.1 我是否適合讀這本書 3
1.2 如何用好這本書 3
1.3 各章節導讀 5
1.4 名詞解釋 7
1.5 學習資源 8
1.6 幫助我們改進 9
習題 9
第2章 策劃你的第一個微信項目 10
2.1 需求分析 10
2.1.1 溝通需求 10
2.1.2 整理需求 13
2.1.3 制定方案 14
2.2 資料庫設計 17
2.3 接口統計 21
2.4 業務邏輯 22
2.5 技術架構 24
2.6 微信公眾號策劃 26
2.7 統一培訓 27
習題 28
第3章 開發微信公眾號前的準備 29
3.1 準備工作 29
3.1.1 基本技能 29
3.1.2 開發環境 30
3.1.3 域名 31
3.1.4 伺服器 31
3.1.5 SSL證書 31
3.2 訊息通信 31
3.2.1 公眾平台的訊息通信過程 31
3.2.2 XML通信格式 32
3.2.3 訊息通信中需要注意的問題 33
3.3 訪問網頁 34
3.4 使用測試號進行測試 34
3.5 使用微信 Web 開發者工具調試微信 36
3.5.1 下載和安裝 36
3.5.2 使用開發者工具 37
3.6 單元測試 39
3.7 線上接口調試工具 39
3.8 服務號、訂閱號和認證賬號的功能差別 40
3.8.1 服務號 40
3.8.2 訂閱號 44
3.9 微信公眾號申請 47
習題 56
★第二部分 Senparc.Weixin SDK框架介紹
第4章 Senparc.Weixin SDK設計架構 58
4.1 開源項目 58
4.2 開源協定 58
4.3 微信平台生態與 Senparc.Weixin SDK 59
4.4 檔案目錄 61
4.4.1 根目錄 61
4.4.2 src目錄 61
4.5 Senparc.Weixin.dll 62
4.5.1 Senparc.Weixin檔案結構 62
4.5.2 Senparc.Weixin類庫結構 65
4.5.3 使用Senparc.Weixin注意點 65
4.6 Senparc.Weixin.MP.dll 66
4.6.1 Senparc.Weixin.MP.dll檔案結構 66
4.6.2 Senparc.Weixin.MP.dll類庫 69
4.7 Senparc.Weixin.WxOpen.dll 69
4.8 Senparc.Weixin.MP.MvcExtension.dll 71
4.9 Senparc.Weixin.Cache.Redis.dll 71
4.10 Senparc.Weixin.Cache.Memcached.dll 72
4.11 其他類庫 72
4.12 單元測試 72
4.13 修改原始碼和貢獻代碼 72
4.13.1 註冊 GitHub 賬號 73
4.13.2 Fork項目 75
4.13.3 修改代碼 76
4.13.4 提交代碼 78
4.13.5 貢獻代碼 79
習題 82
第5章 微信公眾號開發全過程案例 83
5.1 開發準備 83
5.1.1 安裝開發環境及工具 83
5.1.2 創建解決方案 84
5.1.3 創建項目 85
5.1.4 使用 Nuget 安裝 Senparc.Weixin SDK 88
5.2 開發 90
5.2.1 準備基礎框架 91
5.2.2 創建資料庫 91
5.2.3 同步資料庫 92
5.2.4 建立資料庫框架 95
5.2.5 開發Repository倉儲模組 98
5.2.6 快取 100
5.2.7 開發業務邏輯 102
5.2.8 Controller控制器 105
5.2.9 Web項目和UI 111
5.3 單元測試 111
5.4 部署 112
5.5 訊息驗證和線上測試 112
5.6 在Microsoft Azure上運行微信公眾號示例 112
習題 116
第6章 使用SDK Demo:Senparc.Weixin.MP.Sample 117
6.1 檔案位置及結構 117
6.1.1 Senparc.Weixin.MP.Sample 解決方案資料夾 117
6.1.2 Senparc.Weixin.MP.Sample 解決方案 118
6.1.3 Senparc.Weixin.MP.Sample Web項目 119
6.1.4 Senparc.Weixin.MP.Sample.CommonService 項目 121
6.2 配置項目 122
6.2.1 Web.Config檔案 122
6.2.2 Global.asax 檔案 124
6.2.3 首頁 125
6.3 微信訊息 126
6.3.1 訊息處理 127
6.3.2 訊息模擬及並發訊息測試 134
6.4 微信選單 135
6.5 OAuth 138
6.6 JS-SDK 140
6.7 微信支付 141
6.8 素材 143
6.9 快取測試 143
6.10 異步方法 145
6.11 微信內置瀏覽器過濾 146
6.12 微信小程式 147
6.12.1 訊息處理 147
6.12.2 模板訊息 148
6.12.3 WebSocket 148
6.13 其他 148
6.13.1 開放平台 148
6.13.2 企業號 149
6.13.3 文檔下載 149
6.14 WebForms項目 150
6.15 單元測試 150
6.15.1 單元測試項目 150
6.15.2 單元測試方法 151
6.16 配置伺服器和參數 153
6.16.1 配置IIS 153
6.16.2 安裝 .NET Framework 4.5 154
6.16.3 設定IIS站點 155
6.16.4 解析域名 156
6.16.5 檢查 Web.config 檔案 156
6.17 部署 156
習題 157
第7章 MessageHandler:簡化訊息處理流程 158
7.1 設計思想 158
7.2 訊息類型 160
7.2.1 概述 160
7.2.2 命名規則 161
7.2.3 全局訊息基類 161
7.2.4 請求訊息 161
7.2.5 回響訊息 165
7.3 原始訊息處理方法 169
7.4 使用MessageHandler 170
7.4.1 第一步:通過Nuget安裝Senparc.Weixin.MP 170
7.4.2 第二步:創建你自己的MessageHandler 170
7.4.3 第三步:寫3行關鍵代碼 175
7.5 OnExecuting和OnExecuted 175
7.6 解決用戶上下文(Session)問題 176
7.6.1 訊息容器:MessageContainer 177
7.6.2 訊息佇列:MessageQueue 178
7.6.3 單用戶上下文:MessageContext 179
7.6.4 全局上下文:WeixinContext 183
7.6.5 上下文移除事件:WeixinContextRemovedEventArgs 185
7.7 訊息去重 185
7.8 訊息加密 187
7.9 訊息格式轉換 189
7.9.1 XML轉實體 190
7.9.2 實體轉XML 190
7.10 訊息代理 191
7.11 了解MessageHandler設計原理 191
7.11.1 Senparc.Weixin.MessageHandlers.MessageHandler結構 192
7.11.2 Senparc.Weixin.MP.MessageHandlers.MessageHandler結構 196
7.11.3 抽象類及虛方法 198
7.11.4 構造函式 198
7.11.5 Execute方法 200
7.11.6 CancelExcute屬性 201
7.11.7 OnExecuting方法 202
7.11.8 DefaultResponseMessage方法 202
習題 203
第8章 快取策略 204
8.1 設計原理 204
8.2 基礎快取策略接口:IBaseCacheStrategy 206
8.3 數據容器快取策略接口:IContainerCacheStragegy 207
8.3.1 原始IContainerCacheStragegy設計思路 207
8.3.2 最佳化IContainerCacheStragegy設計思路 208
8.3.3 最佳化IContainerItemCollection和ContainerItemCollection 208
8.4 本地數據容器快取策略:LocalContainerCacheStrategy 211
8.4.1 創建LocalContainerCacheStrategy類 211
8.4.2 定義數據源 212
8.4.3 實現容器快取策略 214
8.4.4 運用單例模式 216
8.4.5 測試 218
8.5 分散式快取 219
8.5.1 起因 219
8.5.2 負載均衡 220
8.5.3 分散式快取 220
8.5.4 分散式使用的注意點 221
8.6 Redis分散式快取策略:RediscontainerCacheStrategy 222
8.6.1 Redis簡介 222
8.6.2 安裝Redis 222
8.6.3 StackExchange.Redis快取擴展 222
8.6.4 實現Redis快取策略 224
8.6.5 單元測試 225
8.7 Memcached分散式快取策略:MemcachedContainerCacheStrategy 225
8.7.1 Memcached簡介 225
8.7.2 安裝Memcached 226
8.7.3 EnyimMemcached快取擴展 226
8.7.4 實現Memcached快取策略 227
8.8 快取策略工廠:CacheStrategyFactory 227
8.8.1 創建CacheStrategyFactory 227
8.8.2 配置和使用CacheStrategyFactory 229
習題 230
第9章 並發場景下的分散式鎖 231
9.1 概述 231
9.2 為什麼需要分散式鎖 231
9.3 分散式鎖的設計 232
9.3.1 IBaseCacheStrategy 接口設計 232
9.3.2 ICacheLock 接口設計 234
9.3.3 分散式鎖基類:BaseCacheLock 236
9.4 本地鎖 236
9.4.1 LocalCacheLock 236
9.4.2 實現 BeginCacheLock 238
9.5 Redis 鎖 238
9.5.1 RedisCacheLock 238
9.5.2 Redlock.CSharp 240
9.5.3 實現BeginCacheLock 240
9.6 Memcached鎖 241
9.6.1 MamcachedCacheLock 241
9.6.2 實現BeginCacheLock 242
習題 242
第10章 Container:數據容器 243
10.1 設計思路及原理 243
10.2 BaseContainerBag 245
10.3 BaseContainer 246
10.4 AccessTokenContainer 253
10.5 JsApiTicketContainer 262
10.6 BindableBase 262
10.7 ContainerHelper 264
習題 265
第11章 SenparcMessageQueue:訊息佇列 266
11.1 設計原理 266
11.2 佇列項:SenparcMessageQueueItem 267
11.3 訊息佇列:SenparcMessageQueue 268
11.3.1 GenerateKey方法 269
11.3.2 MessageQueueDictionary 269
11.3.3 MessageQueueList 269
11.3.4 有關Dictionary和List的效率測試 270
11.4 自動執行緒處理:SenparcMessageQueueThreadUtility 272
11.4.1 SenparcMessageQueueThreadUtility 272
11.4.2 執行緒工具類:ThreadUtility 274
11.4.3 最佳化擴展 276
習題 278
第12章 接口調用及數據請求 279
12.1 設計規則 279
12.2 回響類型 281
12.2.1 基類:WxJsonResult 281
12.2.2 擴展回響類型 282
12.3 請求 284
12.3.1 GET請求 284
12.3.2 POST請求 286
12.3.3 JSON 請求 290
12.3.4 檔案上傳/下載 292
12.3.5 公共方法 293
12.4 使用AccessToken請求接口:CommonJsonSend 293
12.4.1 Sent<T> 方法 293
12.4.2 JsonSetting 295
12.4.3 WeixinJsonConventer 298
12.5 AccessToken自動處理器:ApiHandlerWapper 299
習題 302
第13章 Debug模式及異常處理 303
13.1 Debug模式設計原理 303
13.2 WeixinTrace 304
13.3 異常處理 308
13.3.1 WeixinException 308
13.3.2 ErrorJsonResultException 309
13.3.3 MessageHandlerException 310
13.3.4 UnknownRequestMsgTypeException 311
13.3.5 UnRegisterAppIdException 311
13.3.6 WeixinMenuException 312
13.4 微信官方線上調試工具 314
習題 315
★第三部分 Senparc.Weixin SDK接口介紹
第14章 微信接口 318
14.1 微信接口概述 318
14.2 開始使用微信接口 319
14.2.1 獲取接口調用憑據(AccessToken) 319
14.2.2 獲取憑證接口 320
14.2.3 獲取微信伺服器IP位址 321
14.3 自定義選單管理 322
14.3.1 自定義選單 322
14.3.2 個性化選單 328
14.4 訊息管理 329
14.4.1 傳送客服訊息 329
14.4.2 傳送訊息-群發接口和原創校驗 332
14.4.3 傳送訊息-模板訊息接口 334
14.4.4 獲取公眾號的自動回復規則 334
14.5 微信網頁授權(OAuth) 334
14.6 素材管理 335
14.6.1 新增臨時素材 335
14.6.2 獲取臨時素材 335
14.6.3 新增永久素材 335
14.6.4 獲取永久素材 335
14.6.5 刪除永久素材 335
14.6.6 修改永久圖文素材 336
14.6.7 獲取素材總數 336
14.6.8 獲取素材列表 336
14.7 用戶管理 336
14.7.1 用戶標籤管理 336
14.7.2 設定用戶備註名 338
14.7.3 獲取用戶基本信息(UnionID機制) 338
14.8 賬號管理 339
14.8.1 創建二維碼 339
14.8.2 獲取下載二維碼的地址 339
14.8.3 長連結轉短連結 339
14.9 數據統計接口 339
14.9.1 用戶分析數據接口 340
14.9.2 圖文分析數據 340
14.9.3 訊息分析數據 341
14.9.4 接口分析數據接口 342
14.10 微信JS-SDK 343
14.10.1 獲取驗證地址 343
14.10.2 獲取AccessToken 343
14.10.3 刷新access_token 343
14.10.4 獲取用戶基本信息 343
14.10.5 檢驗授權憑證(access_token)是否有效 343
14.11 微信小店接口 344
14.11.1 語義理解接口 344
14.12 微信卡券接口 344
14.12.1 創建卡券 344
14.12.2 投放卡券 345
14.12.3 核銷卡券 346
14.12.4 管理卡券 346
14.12.5 會員卡專區 348
14.12.6 朋友的券專區 349
14.12.7 第三方代制專區 350
14.12.8 第三方授權相關接口(開放平台) 352
14.13 微信門店接口 352
14.13.1 上傳圖片 352
14.13.2 創建門店 352
14.13.3 查詢門店信息 353
14.13.4 查詢門店列表 353
14.13.5 修改門店服務信息 353
14.13.6 刪除門店 353
14.13.7 獲取門店類目表 353
14.13.8 設備功能介紹 353
14.14 多客服功能 354
14.14.1 客服管理接口 354
14.14.2 多客服會話控制接口 355
14.14.3 獲取客服聊天記錄接口 356
14.15 搖一搖周邊 356
14.15.1 申請開通搖一搖周邊 356
14.15.2 設備管理 356
14.15.3 頁面管理 357
14.15.4 素材管理 358
14.15.5 配置設備與頁面的關聯關係 358
14.15.6 數據統計 359
14.15.7 HTML5頁面獲取設備信息 359
14.15.8 獲取設備及用戶信息 360
14.15.9 搖一搖紅包 361
14.16 微信連Wi-Fi 361
14.16.1 第三方平台獲取開外掛程式wifi_token 361
14.16.2 Wi-Fi門店管理 362
14.16.3 Wi-Fi設備管理 362
14.16.4 配置聯網方式 363
14.16.5 商家主頁管理 363
14.16.6 Wi-Fi數據統計 364
14.16.7 卡券投放 364
14.17 小程式 364
14.18 異步方法 365
習題 366
第15章 模板訊息 367
15.1 概述 367
15.2 使用規則 367
15.3 申請模板訊息 369
15.3.1 開通模板訊息功能 369
15.3.2 添加訊息模板 370
15.3.3 創建自定義訊息模板 373
15.4 接口介紹 374
15.4.1 設定所屬行業 374
15.4.2 獲取設定的行業信息 374
15.4.3 獲得模板ID(添加模板) 374
15.4.4 獲取模板列表 375
15.4.5 刪除模板 375
15.4.6 傳送模板訊息 375
15.4.7 事件推送 381
15.4.8 異步方法 382
習題 383
第16章 微信網頁授權(OAuth 2.0) 384
16.1 OAuth 2.0簡介 384
16.2 設定微信OAuth回調域名 386
16.3 開發微信OAuth接口 387
16.3.1 創建Controller 387
16.3.2 GetAuthorizeUrl方法 388
16.3.3 GetAccessToken方法 391
16.3.4 GetUserInfo 方法 394
16.3.5 RefreshToken 方法 398
16.3.6 Auth 方法 398
16.4 異步OAuth接口 399
16.5 調試OAuth 399
16.5.1 調試工具 399
16.5.2 設定 400
16.6 使用SenparcOAuthAttribute實現OAuth自動登錄 403
16.6.1 SenparcOAuthAttribute 定義 403
16.6.2 使用 SenparcOAuthAttribute 406
16.7 解決 OAuth 出現 40029(invalid code)錯誤 408
16.7.1 現象和問題 408
16.7.2 原因 408
16.7.3 解決方案一 411
16.7.4 解決方案二 411
16.7.5 解決方案三 412
16.7.6 解決方案四 412
16.7.7 解決方案總結 414
16.8 一些誤區和注意點 414
16.8.1 每次打開頁面都使用OAuth獲取OpenId 414
16.8.2 認為不使用HTTPS沒有關係 416
16.8.3 在Callback(redirectUrl) 頁面直接輸出頁面 416
16.8.4 簡訊通知包含需要OAuth的網頁(體驗問題) 417
16.8.5 不使用OAuth,而使用選單事件判斷來訪者身份 418
習題 419
第17章 其他幫助類及輔助接口 420
17.1 概述 420
17.2 序列化和JSON相關 420
17.2.1 SerializerHelper 420
17.2.2 WeixinJsonConventer 422
17.2.3 JsonSetting 422
17.3 時間幫助類:DateTimeHelper 423
17.4 加密解密 424
17.4.1 MD5 424
17.4.2 SHA1 425
17.4.3 AES 426
17.5 瀏覽器相關 427
17.5.1 判斷當前網頁是否在瀏覽器內 427
17.6 JS-SDK 429
17.6.1 獲取簽名信息 429
17.6.2 JsSdkUiPackage 430
17.6.3 獲取 SHA1 加密信息 432
17.6.4 卡券相關 433
17.7 地圖及位置 435
17.7.1 LBS位置計算幫助類:GpsHelper 435
17.7.2 百度地圖 435
17.7.3 谷歌地圖 435
習題 436
第18章 微信網頁開發:JS-SDK 437
18.1 概述 437
18.2 簽名 438
18.2.1 通過JsApiTicketContainer獲取jsapi_ticket 438
18.2.2 獲取簽名 439
18.3 JS-SDK使用步驟 439
18.3.1 第一步:綁定域名 439
18.3.2 第二步:引入JS檔案 440
18.3.3 第三步:通過config接口注入許可權驗證配置 441
18.3.4 第四步:通過ready接口處理成功驗證 442
18.3.5 第五步:通過error接口處理失敗驗證 442
18.4 接口調用說明 442
18.5 基礎接口 443
18.6 具體業務接口 443
18.6.1 分享接口 444
18.6.2 圖像接口 446
18.6.3 音頻接口 447
18.6.4 智慧型接口 450
18.6.5 設備信息 451
18.6.6 地理位置 451
18.6.7 搖一搖周邊 452
18.6.8 界面操作 452
18.6.9 微信掃一掃 454
18.6.10 微信小店 454
18.6.11 微信支付 455
18.6.12 微信卡券 455
18.7 參考資料 458
18.7.1 所有選單項列表 458
18.7.2 卡券擴展欄位cardExt說明 459
18.7.3 所有JS接口列表 459
習題 461
第19章 微信支付 462
19.1 支付模式 463
19.1.1 刷卡支付 463
19.1.2 掃碼支付 463
19.1.3 公眾號支付 463
19.1.4 APP支付 463
19.2 申請微信支付 463
19.2.1 流程介紹 463
19.2.2 第一步:申請開戶 464
19.2.3 第二步:小額打款 466
19.2.4 第三步:支付驗證費用 467
19.3 獲取商戶證書 468
19.3.1 接收郵件 468
19.3.2 安裝操作證書 468
19.3.3 下載證書 471
19.3.4 一些注意點 474
19.4 接口規則 475
19.4.1 協定規則 475
19.4.2 參數規定 476
19.4.3 安全規範 479
19.4.4 獲取OpenId 480
19.5 公眾號支付 480
19.5.1 支付場景介紹 480
19.5.2 公眾號後台的配置 482
19.5.3 設定測試目錄 486
19.5.4 商戶後台的配置 487
19.5.5 業務流程 489
19.5.6 HTML5頁面調起支付API 491
19.6 微信支付API 492
19.6.1 統一下單 493
19.6.2 查詢訂單 496
19.6.3 關閉訂單 497
19.6.4 申請退款 498
19.6.5 查詢退款 499
19.6.6 下載對賬單 500
19.6.7 支付結果通知 502
19.6.8 交易保障 503
19.7 企業付款 503
19.7.1 概述 503
19.7.2 企業付款 API 505
19.7.3 查詢企業付款 API 506
19.8 微信支付Demo開發 507
19.8.1 後端開發 507
19.8.2 前端開發 514
19.9 需要注意的一些事 517
19.9.1 關於伺服器SSL版本 517
19.9.2 關於IPv6 518
19.9.3 關於阿里雲主機 518
習題 518
★第四部分 微信小程式
第20章 微信小程式 522
20.1 註冊小程式 523
20.2 管理信息及微信認證 525
20.2.1 信息設定 525
20.2.2 微信認證 527
20.3 準備開發 528
20.3.1 開發參數設定 528
20.3.2 添加開發者和體驗者 532
20.3.3 下載開發工具 532
20.3.4 開發第一個小程式 533
20.3.5 預覽小程式 542
20.3.6 發布小程式 542
20.4 使用SDK進行後端開發 545
20.4.1 Senparc.Weixin.WxOpen.dll 545
20.4.2 對接MessageHandler 545
20.4.3 回復客服訊息 551
20.4.4 獲取二維碼 555
20.4.5 其他高級接口 556
20.5 使用模板訊息 556
20.5.1 概述 556
20.5.2 第一步:選取訊息模板 556
20.5.3 第二步:設定並添加模板 558
20.5.4 第三步:傳送模板訊息 559
20.5.5 申請模板 563
20.6 實現數據請求 565
20.7 登錄接口及用戶信息管理 569
20.7.1 登錄:wx.login 569
20.7.2 登錄狀態維護:SessionContainer 571
20.7.3 驗證:wx.checkSession 573
20.7.4 簽名加密 573
20.7.5 加密數據解密算法 575
20.8 實現WebSocket 通信 578
20.8.1 關於 WebSocket 578
20.8.2 在伺服器上配置 WebSocket 578
20.8.3 使用 Senparc.WebSocket 進行 WebSocket 開發 580
20.9 小程式的微信支付 591
20.10 小程式開發過程中的常見問題 594
20.10.1 使用HTTPS 594
20.10.2 安裝WMSVC證書 596
20.10.3 申請免費的SSL證書 596
20.10.4 解決Unexpected response code: 200 錯誤 601
習題