天天看點

微信公衆平台SDK JAVA實作WeChat-SDK前言微信公衆号java sdk技術選型自實作WeChat-SDKWeChat-SDK使用wecht-sdk更新日志

前言

最近有做一些涉及到微信公衆平台和第三方平台開發的工作。需要使用微信提供的接口。然而微信隻提供了基于基本的HTTP接口,并沒有對應各語言的SDK實作。是以如果自己開發的話需要封裝一套SDK。不過,微信公衆平台出來幾年了,市面上早就有不少JAVA實作的微信SDK了。于是便收集了一些開源的JAVA實作的微信SDK,但是最後都不是特别合适。最終決定自己寫一個。下面給出各開源SDK的實作對比和自己的寫的進展。

微信公衆号java sdk技術選型

針對目前開源的公衆号java sdk對比,之前已經有人對比過了。可以自行前去:微信公衆号java sdk技術選型

針對上面幾款開源的微信公衆号SDK,針對我自己的需求,我自己也做了下簡單的對比:

- jfinal-weixin weixin-java-tools fastweixin weixin-popular
實作簡單 x
更新快且全
有對應的實體封裝 x
依賴少 x x
友善支援多公衆号 x x
代碼結構&可拓展性 x

可以看出是沒有一個是完全符合自己的需求的。沒有找到友善支援多公衆号管理,代碼結構好容易擴充且依賴少,更新快,使用簡潔的。是以最後自己還是決定自己實作對應的SDK了。

自實作WeChat-SDK

目前隻實作了一些微信基本的SDK。按照微信公衆平台接口文檔分類。

已實作功能:

  • 自定義菜單[√]
  • 消息管理[√]
  • 微信網頁開發(網頁授權)[√]
  • 素材管理[√]
  • 圖文消息留言管理[√]
  • 使用者管理[√]
  • 賬号管理[√]
  • 資料統計[√]
  • 新版客服功能[√]
  • 微信第三方平台[√]
  • 微信卡券[√]
  • 微信門店[√]

未實作功能:

  • 微信小店[x]
  • 語義了解[x]
  • 微信裝置功能[x]
  • 微信搖一搖周邊[x]
  • 微信連WI-FI[x]
  • 微信掃一掃[x]
  • 微信發票[x]

項目依賴:

  • jackson(可選,預設的序列化工具類依賴于jsckson。可自定義實作對應的序列化接口)
  • slf4j(日志用)
  • httpcomponents (可選,預設的HTTP請求工具類依賴于httpcomponents 。可自定義實作對應的HTTP請求接口)
  • junit (測試用)

除了實作對應的微信功能接口。還提供了一些支援類的接口和預設實作。可以根據自己的需要使用預設的實作或使用自定義的實作。如消息查重接口、token緩存管理接口、消息推送處理接口、消息處理器管理接口。

目前隻實作了上述功能。對應的測試用例也隻寫了一部分。需要後面慢慢的完善。

WeChat-SDK使用

maven依賴:

<dependency>
  <groupId>com.github.vioao</groupId>
  <artifactId>wechat-sdk</artifactId>
  <version>1.0.0</version>
</dependency>
           

目前是版本1.0.0,接下來會不斷完善代碼。使得代碼功能更全,使用更友善。

接口使用示例:

// 使用者标簽接口
    @Test
    public void testAboutTagUsers() {
        TagsResponse result1 = UserApi.getTags(TOKEN);
        System.out.println("Get tags: " + result1);
        Assert.assertEquals(true, result1.isSuccess());

        if (result1.getTags().size() > 0) {
            Integer tagId = result1.getTags().get(0).getId();

            BaseResponse result2 = UserApi.batchTagUsers(TOKEN, Arrays.asList(OPENID), tagId);
            System.out.println("Batch tag users: " + result2);
            Assert.assertEquals(true, result2.isSuccess());

            FollowResponse result3 = UserApi.getTagUserIds(TOKEN, tagId, null);
            System.out.println("Get tag users: " + result3);
            Assert.assertEquals(true, result3.isSuccess());

            BaseResponse result4 = UserApi.batchUnTagUsers(TOKEN, Arrays.asList(OPENID), tagId);
            System.out.println("Batch tag users: " + result4);
            Assert.assertEquals(true, result4.isSuccess());
        }
    }

    // 菜單接口
    @Test
    public void testCreate() {
        Button click = new Button();
        click.setType("click");
        click.setName("今日歌曲");
        click.setKey("V1001_TODAY_MUSIC");

        Button view = new Button();
        view.setType("view");
        view.setName("搜尋");
        view.setUrl("http://www.soso.com/");
        Button click2 = new Button();
        click2.setType("click");
        click2.setName("贊一下我們");
        click2.setKey("V1001_GOOD");
        Button complex = new Button();
        complex.setName("菜單");
        complex.setSubButton(Arrays.asList(view, click2));

        MenuButtons menuButtons = new MenuButtons();
        menuButtons.setButton(Arrays.asList(click, complex));
        BaseResponse result = MenuApi.create(TOKEN, menuButtons);

        System.out.println("Create Menu: " + result);
        Assert.assertEquals(true, result.isSuccess());
    }
           

更多示例可以檢視項目的單元測試代碼。項目位址:

wecht-sdk

更新日志

2018-02-28

Done:

完善以下功能子產品的實作:
  • 微信門店功能
  • 微信卡券功能

2018-03-11

Done:

第三方平台對小程式的管理:
  • 小程式伺服器域名設定
  • 小程式成員管理
  • 小程式微信登入
  • 小程式基礎資訊設定
  • 微信開放平台帳号管理

ToDo:

第三方平台對小程式的管理
  • 代碼管理
  • 小程式模版庫管理
  • 小程式代碼模版庫管理

2018-03-24

Done:

第三方平台對小程式的管理:
  • 小程式代碼管理
  • 小程式代碼模版庫管理
  • 小程式模版設定
  • 小程式插件管理權限集
釋出1.1.0版本
  • 本次版本主要是完善了第三方平台相關的接口支援。可以基于wechat-sdk友善實作自己的第三方平台。管理平台下的小程式和公衆号。

maven依賴:

<dependency>
  <groupId>com.github.vioao</groupId>
  <artifactId>wechat-sdk</artifactId>
  <version>1.1.0</version>
</dependency>
           

ToDo:

第三方平台相關:
  • 卡券強授權
  • 微信廣告接口
公衆号相關:
  • 微信搖一搖周邊
  • 微信小店
  • 語義了解
  • 微信連WI-FI
  • 微信掃一掃
  • 微信裝置功能
  • 微信發票