1. 程式人生 > >微信開發相關,了解一下

微信開發相關,了解一下

alt 機制 簽名配置 發送消息 還需 eight html 很多 容易

前言:

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

主要平臺:

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

  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):http://res.wx.qq.com/open/js/jweixin-1.2.0.js

   3.通過config接口註入權限驗證配置(配置的簽名需要後端獲取)

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

微信支付

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

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

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

  3)商戶號綁定公眾號:

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

  • 商戶號綁定申請頁面:

技術分享圖片

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

技術分享圖片


如何授權文檔鏈接 https://pay.weixin.qq.com/static/pay_setting/appid_protocol.shtml,文檔入口如下圖(難找):

技術分享圖片

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

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

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

目前一個開放平臺下面可以綁定:

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

主體註冊限制

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

技術分享圖片

賬號遷移

  公眾號主體一旦審核完成就不能更換。如果需要更換,只能新註冊一個公眾號做遷移,遷移只能遷移部分數據,一個用戶在不同公眾號openId不一樣的原則,如果A公眾號遷移到B公眾號,需要進行一次openId轉換,官方有接口,詳情看:http://kf.qq.com/faq/170221aUnmmU170221eUZJNf.html。 目前小程序無法遷移。

結語

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

微信開發相關,了解一下