微信開發相關,瞭解一下

子慕大詩人發表於2018-05-20

前言:

  從微信公眾號到現在的小程式,涉及微信開發方面的內容越來越多,工作大多時候是需要我們更瞭解微信開發的,比如老大說要做個什麼東西,涉及到微信的,我們能立馬想到方案或者提出可行性的分析嗎? 因為微信開發有它自己的一套規則,有它自己的一套框架,有一定它帶來的便利,也就有它帶來的限制。 這篇文章,不寫入門,不寫開發流程,主要聊聊最近的一些調研和細節。

主要平臺:

  • 開放平臺 (文件:微信開放平臺文)
  • 公眾平臺&小程式 (文件:微信公眾平臺文件&微信小程式文件)
  • 商戶平臺 (文件:微信支付文件)

  1)開放平臺包含了:移動應用,網站應用,公眾號和小程式,第三方平臺。

    1. 移動應用:在開放平臺建立移動應用和app關聯,為app提供微信支付、分享到微信等等功能
    2. 網站應用:使網站支援使用微信帳號來登入
    3. 公眾號和小程式:在開放平臺裡,可以繫結公眾號和小程式,繫結後會觸發unionId機制,幫助不同公眾號或者小程式打通使用者體系。
    4. 第三方平臺:代小程式和公眾號呼叫介面,提供運營服務和行業解決方案

  2)公眾平臺包含:訂閱號、服務號、小程式

  3)商戶平臺:主要支援微信支付,包括線上線下的支付應用場景

  三者關係如下圖,所有應用都屬於開放平臺,開放平臺可以繫結小程式和公眾號使它們關聯起來,商戶平臺為所有應用提供支付功能。

  如何更好的理解他們呢? 當然是走一遍所有的流程,所謂流程也包括了註冊,微信文件在大多數時候並沒有特別詳細,文件告訴了我們幾步流程,但每個流程裡面含有什麼內容我們不知道,我好幾次在文件怎麼也找不到我想要的一些細節點。 最後還是自己走一遍流程才理解,所以你想要更清楚細節,最好都能自己去註冊一遍。 微信開發相關的內容很多,研發要關注的不只是怎麼呼叫介面,而還需要關注平臺相互之間的關係,運營規範,設計規範等等。

列舉一些比較常遇到的問題

微信授權OAuth2.0

  微信授權幾乎是所有微信開發下應用入口介面,使用者授權後,通過請求微信後端,我們才能拿到使用者資訊,授權流程大致如下:

  1. 第三方發起微信授權登入請求,微信使用者允許授權第三方應用後,微信會拉起應用或重定向到第三方網站,並且帶上授權臨時票據code引數;
  2. 通過code引數加上AppID和AppSecret等,通過API換取access_token;
  3. 通過access_token進行介面呼叫,獲取使用者基本資料資源或幫助使用者實現基本操作

  官方文件:Appsecret 是應用介面使用金鑰,洩漏後將可能導致應用資料洩漏、應用的使用者資料洩漏等高風險後果;儲存在客戶端,極有可能被惡意竊取(如反編譯獲取Appsecret)。

  說起這個問題,當時也出現一個事故,在微信公眾平臺後臺appsecret沒有修改的功能,只能重置。微信後臺也有統計功能,當時運營同事就要求給他們賬戶,他們方便實時檢視。 第二天我們就發現業務功能出問題了,無法用了,前端查問題,後端查問題,怎麼看業務邏輯都沒有動過,不會是程式碼改出的問題,後端查日誌就是微信那塊報的錯。 結果是一個運營同事皮,公眾後臺裡面的所有功能都去點過一次,把appsecret給重置了。 結論是後臺許可權還是別給非研發同事吧,如果要給,也要提前提醒一下這些注意事項。

訊息分發相關

  產品是需要提醒使用者的,訊息通知在平時的開發中顯得尤為重要,也常因為訊息的規則可能會影響最初的產品需求。

  • 公眾號可以以一定頻次群發訊息(訂閱號為每天1次,服務號為每月4次)
  • 公眾號模板訊息可以用特定內容模板,主動向使用者傳送訊息,可以帶上鍊接,可以說沒有次數限制
  • 小程式的模版訊息需要使用者有互動通過form元件拿到formId才能向使用者傳送模板

微信分享

  在開放平臺註冊移動應用後申請的App通過稽核後,即可獲得微信分享及收藏許可權。

  如果在網頁中需要如下步驟:

   1.微信公眾平臺裡填寫“JS介面安全域名”

   2.在需要呼叫JS介面的頁面引入如下JS檔案,(支援https):res.wx.qq.com/open/js/jwe…

   3.通過config介面注入許可權驗證配置(配置的簽名需要後端獲取)

  目前一個公眾號可以填寫三個js介面安全域名地址。 大部分公司的前端頁面都部署到某一個域名下的,後端可以只提供一個公眾號的簽名介面作為公共服務,其他公眾號的業務在同一個域名下都能呼叫這個介面,以完成jssdk簽名配置。

微信支付

  1)要使用微信支付,我們的商戶號的公司主體必須和公眾號小程式等註冊主體一樣,否則無法繫結商戶號。

  2)如何實現測試公眾號支付:

  生成一個字典,儲存測試使用者的測試公眾號和正式公眾號的openId,當測試使用者在測試公眾號喚起支付的時候,後端把測試公眾號的openId替換為正式公眾號,並使用同主體商戶號,便可以正常支付。 其實就是走正式的支付,呼叫測試的回撥。

  3)商戶號繫結公眾號:

  微信的開發者文件有時候某些文件不是很好找,入口比較深,比如最初我想找到商戶號如何和多個公眾號繫結,找半天沒有相關文件,幾個開發文件裡搜尋也沒有。 而在微信公眾平臺後臺的“微信支付”裡,也找不到相關的文件和入口。 還好因為公司有商戶號,我登入進去看了看才找到,如果是新手,在做技術調研的時候,可能會找不到文件。 最開始我還以為商戶號和公眾號後臺都能相互申請繫結,但是確實只有商戶號裡面才有此功能。 商戶平臺新增了授權申請單以後,對應的公眾平臺後臺便在【微信支付 ~ M-A授權】下能看到。

  • 商戶號繫結申請頁面:

  • 公眾平臺後臺申請授權頁面


如何授權文件連結 pay.weixin.qq.com/static/pay_…,文件入口如下圖(難找):

關於支付,企業後端應該對每種支付實現後提供一個公共服務,每當有新的公眾號需要支付的時候,只需要配置好相應的引數,呼叫公共服務下單即可。 如果有需要,前端也可以做一個錢包頁面相容多場景下的支付。 如果賬戶體系打通了,錢包裡會有充值的餘額,使用者還可以直接選擇扣除餘額,如果是在非微信瀏覽器中,錢包理應也有支付寶等支付方式。 但是錢包頁面的存在會多一次跳轉,如果在微信裡用錢包頁面,使用者體驗沒有直接喚起支付好。

通過開放平臺打通賬戶體系

一個企業下面大部分的應用都希望擁有一個賬戶體系,相互之間的資料要能打通,而每一個公眾號或者應用下面對應一個使用者都有不同的openId也就無法在不同應用之間標識同一個使用者,這個時候就需要用到微信開放平臺。微信公眾號、移動應用、小程式等都是通過openId來標識使用者的唯一性,開放平臺能夠繫結這些應用,繫結之後同一個使用者會生成unionid來體現使用者的唯一性。詳情UnionID機制

目前一個開放平臺下面可以繫結:

  • 50個移動應用(native)
  • 10個網站應用
  • 50個同主體公司公眾號,5個不同主體公司公眾號
  • 50個同主體公司小程式,5個不同主體公司小程式

主體註冊限制

  我之前一直在找一個公司能註冊多少公眾號,在公眾平臺開發者文件就一直沒找到有說明。 結果這塊的內容在qq客服那個網站上kf.qq.com/faq/120911V…

賬號遷移

  公眾號主體一旦稽核完成就不能更換。如果需要更換,只能新註冊一個公眾號做遷移,遷移只能遷移部分資料,一個使用者在不同公眾號openId不一樣的原則,如果A公眾號遷移到B公眾號,需要進行一次openId轉換,官方有介面,詳情看:kf.qq.com/faq/170221a…。 目前小程式無法遷移。

結語

  微信開發容易出現很多坑,不止於技術帶來的,而其體量也越來越大,前後端都應該瞭解整個開發流程、開發配置、運營規則等等,否則容易出了問題不知道是誰的問題,解決問題的效率會非常低,甚至相互甩鍋。 微信生態功能在不停的迭代,開發者技術文件、各種政策也時而變更,這些都是我們需要時刻關注的。


相關文章