微信外包項目,接口開發流程小記


近期幫朋友做了幾個用到微信公眾號接口的活,所以總結下。

一、微信公眾號后台配置

公眾號分訂閱號,服務號,企業號,可以調用的接口權限各不相同,這里就不贅述,參考官方說明

  1. 登陸公眾號后台,有接口權限,做為開發人員在開發前一定要先確認是否有接口權限。
  2. 白名單配置:調用接口的服務器必須要在公眾號后台把服務器ip配置進去,否則調用接口失敗。 ->基本設置->白名單配置
  3. 獲取開發者id和密碼,也就是appid,AppSecret,這2個調用接口必須的參數。
  4. 如果用當網頁相關的接口,需要配置域名,在 設置->公眾號設置->功能設置 里有域名相關的配置,如果不配置相關域名,會提示簽名錯誤,並且使用未綁定微信公眾號的域名,在微信打開會有微信給的不安全提示,很惡心。
  5. 如果需要對接微信自動回復,按鈕事件,就需要在 基本設置 ->服務器配置里配置接收微信請求的地址。

實際上開發時生產用的公眾號是不允許用來調試接口,所以微信公眾號提供了微信測試號。 公眾號后台 -> 公眾平台測試帳號 -> 按照指示,就可以擁有所有接口權限的測試號。

二. 開發

1. 選擇一個sdk或自己開發一個sdk

Software Development Kit 簡稱 SDK,這里指的sdk就是封裝了微信公眾號api的代碼包。

也許是因為網上太多的開源的微信sdk,所以至今沒有官方出的微信公眾號的sdk。so,為了簡化開發,我們可以直接網上找個開源的sdk,例如 fastweixin,jfinal-weixin,基本上都可以說開箱機用。

在我們公司是使用自己開發的一套sdk,因為是幫朋友,所以就用了網上的一套fastweixin。選用這個sdk,原因有:

  1. 用的人多,代表好用,穩定
  2. 開源,研究過源碼,可以根據需求二次開發

2. 引入sdk

引入fastweixin,可以通過鏈接直接到首頁進去查看。不過那個引入方式只是講了如何去自動回復微信公眾號消息。

先說我的需求(使用的接口) 其實用到就是微信分享接口(微信js),獲取微信用戶頭像(授權接口)。

1> 新建項目

小項目小需求的快速開發,那就用spring boot嘍。我用的IDE是IDEA,新建項目直接選 spring initializer,實際上是通過https://start.spring.io/動態的生成了基礎的代碼,然后下載到你本地解壓。很方便的功能

2> 項目依賴

通過spring initializer生成的項目可以直接在生成時選擇一些基礎依賴,例如mybatis-spring-boot-starter,mysql-connector-java等等,可以說開箱即用。不過sdk的依賴還是需要我們復制進去的,maven引入

<dependency> <groupId>com.github.sd4324530</groupId> <artifactId>fastweixin</artifactId> <version>1.3.15</version> </dependency> 

3> 調用sdk,提供前端調用接口

微信接口里有個概念叫token,通過開發者id和密碼調用微信接口生成,2小時內有效。 所以sdk里有個ApiConfig類使用單例模式作為獲取token的工具類。其實現就不多說,看使用的代碼

用於獲取token的代碼

@Service @Slf4j public class WeChatAppid { //把開發者id和密碼寫在配置文件,當然也有寫在數據庫里的。具體看需求 @Value("${appid}") private String appid; @Value("${appSecret}") private String appSecret; private ApiConfig config; /** * 這樣是為了讓spring先給appid,appSecret賦值。 */ @PostConstruct private void init(){ log.debug("appid : {} ,appSecret : {}" , appid,appSecret); config = new ApiConfig(appid,appSecret,true); } public ApiConfig getApiConf(){ return config; } } 

供前端使用分享的接口 前后分離的項目,所以是這樣的,對於未分離的

	@ApiOperation("微信js相關")//swagger接口文檔生成的注解 @GetMapping("wx/conf") public WxConf jsApi(HttpServletRequest request){ String url = request.getHeader("Referer"); if (StringUtils.isBlank(url)){ url = request.getRequestURL().toString(); } JsAPI jsAPI = new JsAPI(weChatAppid.getApiConf()); return new WxConf(weChatAppid.getApiConf().getAppid(),jsAPI.getSignature(url)); } 
// 用於和前端對接的實體類 public class WxConf extends Resp implements Serializable,Response { private String appid; private GetSignatureResponse jsApi; public WxConf(String appid, GetSignatureResponse jsApi) { this.appid = appid; this.jsApi = jsApi; } } 

4> 前端使用。。

前端使用---木有。。。。 應該再把前端用的代碼貼出來的,不過這個項目是幫忙的,前端代碼沒在我這。 不過我這有個傳統的項目暫且看下

<script th:inline="javascript"> /*<![CDATA[*/ var appid = /*[[${appid}]]*/ ""; var openid = /*[[${openid}]]*/ ""; var api = /*[[${api}]]*/ {}; var phone = /*[[${phone}]]*/ ""; var shareUrl = /*[[${shareUrl}]]*/""; /*]]>*/ function share_data() { return { title: 'BMW歸國留學(進修)人員專屬禮遇', desc: '留學生免稅購車方案', link: shareUrl, imgUrl: "http://" + window.location.host + "/share.jpeg", success: function () { $.get("/share/" + openid + "/" + phone); }, cancel: function () {} } }; wx.config({ appId: appid, timestamp: api.timestamp, nonceStr: api.noncestr, signature: api.signature, jsApiList: [ 'showOptionMenu', 'onMenuShareTimeline', 'onMenuShareAppMessage', 'onMenuShareQQ', 'onMenuShareWeibo', 'previewImage', 'getLocation' ] }); wx.ready(function () { wx.showOptionMenu(); wx.onMenuShareTimeline(share_data()); wx.onMenuShareAppMessage(share_data()); wx.onMenuShareQQ(share_data()); wx.onMenuShareWeibo(share_data()); }); </script> 

總結

微信開發真的很簡單,但有幾點需要注意:

  1. 開發測試時直接用微信測試號,那個可以免去很多配置,例如下面的配置在開發期間就不用配置了
  2. 后台ip白名單的配置,可以多配置幾個,開發的,生產的,測試的服務器都配置上
  3. 域名要用備案的,域名要配置到js接口,業務,授權,最多3個地方用於配置,根據業務的需求來,配置的時候需要在域名下部署一個txt文件,如果都是一個域名,部署一次就可以了。
  4. 微信開發者工具是個不錯的微信開發測試工具,可以直接看到js接口哪個錯了。

fastweixin這個sdk,常用基本夠用了,集群的話還需要再在一些開發。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM