1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/kingshine-FastBootWeixin

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Как использовать

Travis

Maven Central

License

QQ群

Данный фреймворк реализован на основе Spring Boot и использует аннотации для ускорения разработки. Он позволяет быстро создать новый WeChat Public Account и переопределить процесс разработки Public Account.

Перед использованием данного фреймворка рекомендуется ознакомиться с документацией по разработке WeChat Public Accounts, хотя даже без знания этой документации можно создать простой WeChat Public Account с помощью этого фреймворка.

В настоящее время фреймворк совместим с Spring Boot 1.4+ и Spring Boot 2.x. Мы приветствуем предложения по улучшению и вклад в проект. Также приглашаем присоединиться к группе 627254793 для обсуждения. Открытые проекты требуют совместного участия, спасибо!

Пример использования:

1. Заявка на тестирование Public Account

Ссылка на заявку на тестирование WeChat Public Account

2. Подготовка и создание проекта Maven с добавлением зависимостей Maven

<!-- Поддержка 1.4.0.RELEASE и выше, включая 2.x -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.6.RELEASE</version>
</parent>

<dependencies>
    <!-- fastbootWeixin's core dependency -->
    <dependency>
        <groupId>com.mxixm</groupId>
        <artifactId>fastboot-weixin</artifactId>
        <version>0.6.2</version>
    </dependency>

    <!-- SpringBoot's web project, required -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- Currently only supports Apache's http, other http support can be added later -->
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpcore</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
    </dependency>
</dependencies>

3. Написание примера кода

В каталоге ресурсов создайте файл конфигурации application.properties или другой поддерживаемый Spring Boot файл конфигурации и добавьте следующие настройки:

  • wx.token = случайная последовательность букв и цифр, рекомендуется использовать 32-битный UUID
  • wx.appid = appid тестового номера, доступен в интерфейсе управления тестовым номером
  • wx.appsecret = appsecret тестового номера, доступен в интерфейсе управления тестовым номером
  • wx.callback-url = URL-адрес службы вызова, используется для OAuth2 авторизации веб-приложений WeChat, может быть пустым, если не требуется.

Пример кода:

package com.mxixm.fastboot.weixin;

import com.mxixm.fastboot.weixin.annotation.WxApplication;
import com.mxixm.fastboot.weixin.annotation.WxAsyncMessage;
import com.mxixm.fastboot.wexin.annotation.WxButton;
import com.mxixm.fastboot.weixin.module.web.WxRequest;
import com.mxixm.fastboot.weixin.module.event.WxEvent;
import com.mxixm.fastboot.weixin.module.message.WxMessage;
import com.mxixm.fastboot.weixin.module.message.WxMessageBody;
import com.mxixm.fastboot.weixin.module.user.WxUser;
import com.mxixm.fastboot.weixin.mvc.annotation.WxController;
import com.mxixm.fastboot.weixin.mvc.annotation.WxEventMapping;
import com.mxixm.fastboot.weixin.mvc.annotation.WxMessageMapping;
import org.springframework.boot.SpringApplication;

@WxApplication
@WxController
public class WxApp {

    public static void main(String[] args) throws Exception {
        SpringApplication.run(WxApp.class, args);
    }

    /**
     * Определение меню WeChat
     */
    @WxButton(group = WxButton.Group.LEFT, main = true, name = "左")
    public void left() {
    }

    /**
     * Определение меню WeChat
     */
    @WxButton(group = WxButton.Group.RIGHT, main = true, name = "右")
    public void right() {
    }

    /**
     * Определение меню WeChat и обработка событий
     */
    @WxButton(type = WxButton.Type.CLICK,
            group = WxButton.Group.LEFT,
            order = WxButton.Order.FIRST,
            name = "Текстовое сообщение")
    public String leftFirst(WxRequest wxRequest, WxUser wxUser) {
        return "Тестирование текстового сообщения";
    }

    /**
     * Определение меню WeChat и обработка событий
     */
    @WxButton(type = WxButton.Type.VIEW,
            group = WxButton.Group.LEFT,
            order = WxButton.Order.SECOND,
            url = "http://baidu.com",
            name = "Щелкните ссылку")
    @WxAsyncMessage
    public WxMessage link() {
        return WxMessage.newsBuilder().addItem("Тестовый текст и изображение", "Тест", "https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo/logo_white.png", "http://baidu.com").build();
    }

    /**
     * Обработка событий WeChat
     * @param wxRequest
     * @param wxUser
     */

*Примечание: данный перевод не является точным и может содержать ошибки.* Вот перевод текста на русский язык:

@WxEventMapping(type = WxEvent.Type.UNSUBSCRIBE) public void unsubscribe(WxRequest wxRequest, WxUser wxUser) { System.out.println(wxUser.getNickName() + "отписался от публичного аккаунта"); }

/**

  • Принимает текстовое сообщение пользователя и асинхронно возвращает текстовое сообщение
  • @param content
  • @return результат */ @WxMessageMapping(type = WxMessage.Type.TEXT) @WxAsyncMessage public String text(WxRequest wxRequest, String content) { WxSession wxSession = wxRequest.getWxSession(); if (wxSession != null && wxSession.getAttribute("last") != null) { return "Последнее полученное сообщение: " + wxSession.getAttribute("last"); } return "Получено сообщение: " + content; }

/**

  • Получает текстовое сообщение от пользователя и синхронно возвращает графическое сообщение
  • @param content
  • @return результат / @WxMessageMapping(type = WxMessage.Type.TEXT, wildcard = "1") public WxMessage message(WxSession wxSession, String content) { wxSession.setAttribute("last", content); return WxMessage.newsBuilder() .addItem(WxMessageBody.News.Item.builder().title(content).description("Немного информации") .picUrl("http://k2.jsqq.net/uploads/allimg/1702/7_170225142233_1.png") .url("http://baidu.com").build()) .addItem(WxMessageBody.News.Item.builder().title("Вторая строка").description("Ещё немного информации") .picUrl("http://k2.jsqq.net/uploads/allimg/1702/7_170225142233_1.png") .url("http://baidu.com").build()) .build(); }

/**

  • Получает текстовое сообщение от пользователя и асинхронно возвращает текстовое сообщение
  • @param content
  • @return результат / @WxMessageMapping(type = WxMessage.Type.TEXT, wildcard = "2") @WxAsyncMessage public String text2(WxRequestBody.Text text, String content) { boolean match = text.getContent().equals(content); return "Полученное сообщение: " + content + ", результат сопоставления: " + match; }

После версии 0.3.6 предоставляются атрибуты wx.callback-url для настройки URL обратного вызова, которые включают в себя доменное имя обратного вызова и тип протокола. Рекомендуется использовать эту конфигурацию для замены конфигурации callback-domain.

**Дополнительная функция 1: просмотр типа WxButton**

Автоматически определяет, принадлежит ли URL в кнопке авторизации к домену обратного вызова. В зависимости от необходимости автоматически обрабатывает URL, содержащий OAuth2. Можно комбинировать с перехватчиком по умолчанию для реализации функции получения информации о клиенте при нажатии на меню. Кроме того, в сочетании с функцией wx.callback-url поддерживается конфигурация относительного пути в меню, без необходимости указывать доменное имя.

**Дополнительная функция 2: автоматическое определение необходимости добавления OAuth перенаправления в сообщениях**

Рекомендуется обратиться к WxRedirectUtils.

#### 13. Встроенный менеджер конфигурации WxJsConfig

В коде можно использовать WxJsTicketManager для получения WxJsTicket.

@Autowired WxJsTicketManager wxJsTicketManager;

Для получения подробной информации обратитесь к методам внутри.

#### 14. Поддержка шифрования и дешифрования сообщений

Настройте wx.encrypt = true и wx.encodingAesKey = aesKey, установленный в бэкэнде публичного аккаунта, чтобы включить режим шифрования сообщений.

Обратите внимание, что при включении шифрования сообщений необходимо также включить JCE без ограничений.

JDK7 можно скачать по адресу: http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html

JDK8 можно скачать по адресу: http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html

После загрузки и распаковки вы увидите local_policy.jar, US_export_policy.jar и readme.txt. Если установлена JRE, поместите два файла jar в каталог %JRE_HOME%\lib\security и замените существующие файлы. Если установлен JDK, также поместите два файла jar в %JDK_HOME%\jre\lib\security и замените существующие файлы.

### Шесть, связанные ссылки
1. JavaDocs (http://weixin.mxixm.com)
2. Документация по разработке публичных аккаунтов WeChat (https://mp.weixin.qq.com/wiki)
3. Gitee (https://gitee.com/kingshine/FastBootWeixin)
4. GitHub (https://github.com/FastBootWeixin/FastBootWeixin)

### Семь, временно не поддерживаемые функции
#### 1. Пользовательские ответы на сообщения службы поддержки клиентов

Будет добавлено позже, используя аннотации для определения сообщений службы поддержки клиентов, аналогично использованию @RabbitListener.
#### 2. Персонализированные меню

Немного хлопотно, классификация пользователей.
#### 3. Расширенное управление пользователями

Есть ли хорошее решение для пользовательских групп? В настоящее время нет необходимости.
#### 4. Другие расширенные функции публичных аккаунтов, такие как оплата

### Восемь, журнал обновлений

#### 0.0.1-SNAPSHOT

Начальная версия.

#### 0.1.0-SNAPSHOT:

1. Добавлен WxSession, аналогичный HttpSession, с реализацией по умолчанию, где sessionId является fromUserName. Если вы предоставляете реализацию bean-компонента WxSessionManager, она будет использоваться в качестве менеджера, а реализация по умолчанию основана на памяти, которую вы можете расширить самостоятельно.
2. Оптимизирован WxRequest, исходная версия напрямую использует содержимое запроса WeChat в качестве Request, обновлённая версия представляет собой оболочку пакета запроса сервера WeChat, а внутреннее свойство body является телом запроса сервера WeChat.
3. Разделение различных тел запросов сообщений.

#### 0.1.1-SNAPSHOT:

Оптимизирована привязка параметров сообщений, добавлена ​​привязка указанного тела сообщений, см. WxRequestBody.

#### 0.1.2.SNAPSHOT & 0.1.2.alpha

Загружен в центральный репозиторий Maven, создан javadoc и ряд стандартов.

#### 0.1.2.beta

Добавлены авторские права Apache, все delombok.

#### 0.1.2.rc

Последний раз, когда авторские права были добавлены, случайно удалили все комментарии к заголовку, теперь они частично восстановлены. После полного восстановления добавьте функцию WeChat Voucher и опубликуйте версию выпуска.

#### 0.2.0.alpha

1. Новые интерфейсы, связанные с купонами WeChat и продвижением (двумерные коды и короткие ссылки).
2. Рефакторинг функций сообщений, текущие push-уведомления поддерживают групповые и индивидуальные рассылки.
3. Рефакторинг модуля хранения мультимедиа, теперь его легче заменить собственной реализацией, подробности см. в Wiki.

#### 0.2.1.alpha

1. Рефакторинговый WxAsyncMessage, предыдущая реализация была ошибочной, поскольку только отправка была асинхронной, а вызов метода не был асинхронным. Теперь он реорганизован так, что вызовы методов также являются асинхронными, что является истинным WxAsyncMessage.
2. Увеличение функций шаблонов WeChat.
3. Исправлены некоторые ошибки.

#### 0.2.1.beta

1. Добавлено больше описаний и исправлено несколько ошибок, включая ошибку возврата сообщения об ошибке сервера в предыдущей версии WxAsyncMessage.
2. Увеличена функция автоматического переписывания URL-адресов веб-аутентификации WeChat для меню.

#### ~~0.3.0~~

1. Оптимизация некоторых пакетов.
2. Исправление большой ошибки: когда не настроена обработка сообщений, сообщается об ошибке сервера. По умолчанию предоставляется пустой обработчик.
3. Выпущена официальная версия.

#### ~~0.3.1~~

1. Исправлено, что возврат метода HttpEntity.EMPTY в предыдущем перехвате приводит к несоответствию между объявлением и возвращаемым классом метода.
2. Исправлена ошибка, связанная с забытым добавлением getter.

#### 0.3.2

1. Исправлена ​​ошибка в сообщении с текстом и изображением (асинхронный запрос, getRequestURL и т. д.).
2. Исправлена ​​проблема с обработкой URL-адреса в нижнем регистре.

#### 0.3.3

1. Исправлена ​​ошибка, из-за которой при загрузке материалов без суффикса сообщалось о недопустимом типе носителя.
2. Исправлена ​​ошибка, заключающаяся в том, что после подписки на пользователя информация не извлекается.

#### 0.3.4

1. Новая ручная функция вызова WxMessageTemplate для обработки параметров при отправке сообщений.

#### 0.3.5

1. Повторно оптимизируйте логику обработки URL-адресов в сообщениях и меню.

#### 0.3.6

1. Добавлена ​​конфигурация wx.callback-url, которая заменяет wx.callback-domain, на основе которой можно настроить относительные пути в меню.
2. Исправлена ​​ошибка группового сообщения, и добавлена ​​функция предварительного просмотра группового сообщения.

#### 0.3.7

1. Проблема с репозиторием, загрузка не удалась, повторно выпущена как 0.3.8.

#### 0.3.8

1. Исправлена ​​ошибка нулевого указателя, возникающая при отсутствии настроенного wx.callback-xxx.
2. Исправлена ​​ошибка нулевого указателя при возврате значения типа WxMessage в методе контроллера, который не является запросом WeChat.
3. Исправлена ​​ошибка неверного идентификатора группы при отправке групповых сообщений.
4. Исправлена ​​ошибка невозможности перехвата исключений при асинхронной отправке сообщений.

#### ~~0.5.0~~

1. Поддержка Spring Boot 2.x.

#### 0.5.1

1. Исправлена ​​ошибка отсутствия MessageConverter.
2. Исправлена ​​ошибка Spring 5 FormHttpMessageConverter, заключающаяся в неправильном использовании charset в заголовке ContentType, что делает сервер WeChat несовместимым.
3. Оптимизированный WxRequest.Body для сцены.

#### 0.6.0

1. Добавление поддержки WxJsTicket.
2. Исправлена ​​ошибка обратного вызова группового сообщения.
3. Безопасность улучшена, чтобы предотвратить кражу кода.

#### 0.6.1

1. Переработана обработка сообщений.
2. Добавлен синтаксический анализатор выражений ${} для @WxButton.
3. Новое маленькое приложение в меню WeChat.
4. Исправлена ​​ситуация, когда возвращаемое содержимое было неправильным, если не было соответствующего подстановочного знака.

#### 0.6.2

1. Завершена поддержка шифрования сообщений.
2. Добавьте интерфейс для преобразования длинного соединения в короткое соединение.
3. Добавьте обработку ошибок access_token в интерфейсе вызова, и сначала принудительно обновите access_token, а затем повторно вызовите интерфейс, если access_token недействителен.
4. Переработан конвертер запросов WeChat и обработчик возвращаемых значений, оптимизируя исходную логику.
5. Добавлен конструктор тегов a в тексте сообщения WeChat в WxMessageUtils.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

На основе Spring Boot — ускоренная разработка фреймворка для публичных аккаунтов, управляемая аннотациями. Переопределение разработки публичного аккаунта с помощью аннотаций. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/kingshine-FastBootWeixin.git
git@api.gitlife.ru:oschina-mirror/kingshine-FastBootWeixin.git
oschina-mirror
kingshine-FastBootWeixin
kingshine-FastBootWeixin
master