Перед использованием данного фреймворка рекомендуется ознакомиться с документацией по разработке WeChat Public Accounts, хотя даже без знания этой документации можно создать простой WeChat Public Account с помощью этого фреймворка.
В настоящее время фреймворк совместим с Spring Boot 1.4+ и Spring Boot 2.x. Мы приветствуем предложения по улучшению и вклад в проект. Также приглашаем присоединиться к группе 627254793 для обсуждения. Открытые проекты требуют совместного участия, спасибо!
Ссылка на заявку на тестирование WeChat Public Account
<!-- Поддержка 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>
В каталоге ресурсов создайте файл конфигурации application.properties или другой поддерживаемый Spring Boot файл конфигурации и добавьте следующие настройки:
Пример кода:
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() + "отписался от публичного аккаунта"); }
/**
/**
/**
После версии 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 )