微信服务端Java SDK使用指南

简介

微信服务端Java SDK是一套基于Java语言开发的工具包,用于与微信公众平台进行交互。通过使用该SDK,开发者可以方便地实现微信公众号的功能,如接收和发送消息、用户管理、支付等。本文将详细介绍如何使用微信服务端Java SDK,并提供相应的代码示例。

安装

首先,需要在项目的pom.xml文件中添加对微信服务端Java SDK的依赖:

<dependency>
    <groupId>cn.binarywang</groupId>
    <artifactId>weixin-java-mp</artifactId>
    <version>3.4.0</version>
</dependency>

配置

在使用微信服务端Java SDK之前,需要先进行一些配置。首先,在项目的配置文件中添加微信公众平台的相关配置项:

# 公众号的appid
wechat.mp.appId=YOUR_APP_ID
# 公众号的appsecret
wechat.mp.secret=YOUR_APP_SECRET
# 公众号的token
wechat.mp.token=YOUR_TOKEN
# 公众号的AES加密密钥
wechat.mp.aesKey=YOUR_AES_KEY

然后,创建一个配置类,用于读取上述配置项:

@Configuration
public class WechatConfig {
    
    @Value("${wechat.mp.appId}")
    private String appId;
    
    @Value("${wechat.mp.secret}")
    private String secret;
    
    @Value("${wechat.mp.token}")
    private String token;
    
    @Value("${wechat.mp.aesKey}")
    private String aesKey;
    
    @Bean
    public WxMpConfigStorage wxMpConfigStorage() {
        WxMpDefaultConfigImpl config = new WxMpDefaultConfigImpl();
        config.setAppId(appId);
        config.setSecret(secret);
        config.setToken(token);
        config.setAesKey(aesKey);
        return config;
    }
    
    @Bean
    public WxMpService wxMpService(WxMpConfigStorage configStorage) {
        WxMpServiceImpl service = new WxMpServiceImpl();
        service.setWxMpConfigStorage(configStorage);
        return service;
    }
}

使用SDK

接收消息

要接收微信公众号的消息,需要实现WxMpMessageHandler接口,并在配置类中注册相应的处理器:

@Component
public class MessageHandler implements WxMpMessageHandler {
    
    @Override
    public WxMpXmlOutMessage handle(WxMpXmlMessage message, Map<String, Object> context, WxMpService service, WxSessionManager sessionManager) throws WxErrorException {
        // 处理消息逻辑
        return null;
    }
}

@Configuration
public class WechatConfig {
    
    // ...
    
    @Autowired
    private MessageHandler messageHandler;
    
    @Bean
    public WxMpMessageRouter wxMpMessageRouter(WxMpService wxMpService) {
        WxMpMessageRouter router = new WxMpMessageRouter(wxMpService);
        router.rule().async(false).content("hello").handler(messageHandler).end();
        return router;
    }
}

发送消息

要发送消息给微信用户,可以使用WxMpService提供的方法:

@Service
public class MessageService {
    
    @Autowired
    private WxMpService wxMpService;
    
    public void sendTextMessage(String openid, String content) throws WxErrorException {
        WxMpKefuMessage message = WxMpKefuMessage.TEXT().toUser(openid).content(content).build();
        wxMpService.getKefuService().sendKefuMessage(message);
    }
}

用户管理

要获取用户的基本信息,可以使用WxMpService提供的方法:

@Service
public class UserService {
    
    @Autowired
    private WxMpService wxMpService;
    
    public WxMpUser getUserInfo(String openid) throws WxErrorException {
        return wxMpService.getUserService().userInfo(openid);
    }
}

支付

要实现微信支付功能,需要使用WxPayService提供的方法:

@Service
public class PayService {
    
    @Autowired
    private WxPayService wxPayService;
    
    public String createUnifiedOrder() throws WxPayException {
        WxPayUnifiedOrderRequest request = new WxPayUnifiedOrderRequest();
        // 设置订单参数
        // ...
        WxPayUnifiedOrderResult result = wxPayService.unifiedOrder(request);
        return result.getPrepayId();
    }
}

流程图

flowchart TD
    A[接收消息] --> B{消息类型}