★第一部分 微信基礎介紹
第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
習題
· · · · · · (
收起)