Comprehensive Java SDK for WeChat MiniApp development with complete platform integration
npx @tessl/cli install tessl/maven-com-github-binarywang--weixin-java-miniapp@4.7.0A comprehensive Java SDK for WeChat MiniApp development providing complete platform integration. This library enables Java developers to interact with WeChat's mini program ecosystem through well-structured interfaces covering authentication, messaging, e-commerce, analytics, live streaming, and 40+ other service areas.
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-miniapp</artifactId>
<version>4.7.0</version>
</dependency>implementation 'com.github.binarywang:weixin-java-miniapp:4.7.0'import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.config.WxMaConfig;
import cn.binarywang.wx.miniapp.config.impl.WxMaDefaultConfigImpl;// Configure the service
WxMaDefaultConfigImpl config = new WxMaDefaultConfigImpl();
config.setAppid("your-appid");
config.setSecret("your-secret");
config.setToken("your-token"); // For message encryption
config.setAesKey("your-aes-key"); // For message encryption
// Create service instance
WxMaService wxService = new WxMaServiceImpl();
wxService.setWxMaConfig(config);
// Get access token (managed automatically)
String accessToken = wxService.getAccessToken();
// User authentication - exchange login code for session
WxMaJscode2SessionResult session = wxService.getUserService().getSessionInfo(jsCode);
String openid = session.getOpenid();
String sessionKey = session.getSessionKey();
// Send customer service message
WxMaKefuMessage message = WxMaKefuMessage.newTextBuilder()
.toUser(openid)
.content("Welcome to our mini program!")
.build();
wxService.getMsgService().sendKefuMsg(message);
// Generate QR code
File qrFile = wxService.getQrcodeService().createWxaCodeUnlimit(
"scene=user123", "pages/index/index"
);The WeChat MiniApp SDK follows a service-oriented architecture:
The SDK is designed for production use with thread-safe operations, automatic token management, built-in retry logic, and comprehensive error handling.
Essential functionality including service configuration, authentication, access token management, and basic WeChat platform operations.
public interface WxMaService {
// Configuration
WxMaConfig getWxMaConfig();
void setWxMaConfig(WxMaConfig maConfig);
boolean switchover(String mpId);
// Authentication & Tokens
String getAccessToken();
String getAccessToken(boolean forceRefresh);
WxMaJscode2SessionResult jsCode2SessionInfo(String jsCode);
String getPaidUnionId(String openid, String transactionId, String mchId, String outTradeNo);
// Platform Operations
boolean checkSignature(String timestamp, String nonce, String signature);
void setDynamicData(int lifespan, String type, int scene, String data);
}User authentication, profile information, phone number access, and user data management for WeChat MiniApp users.
public interface WxMaUserService {
WxMaJscode2SessionResult getSessionInfo(String jsCode);
WxMaUserInfo getUserInfo(String sessionKey, String encryptedData, String ivStr);
WxMaPhoneNumberInfo getPhoneNumber(String code);
boolean checkUserInfo(String sessionKey, String rawData, String signature);
void setUserStorage(Map<String, String> kvMap, String sessionKey, String openid);
}Comprehensive messaging capabilities including customer service messages, subscription messages, template messages, and dynamic messages.
public interface WxMaMsgService {
boolean sendKefuMsg(WxMaKefuMessage message);
void sendSubscribeMsg(WxMaSubscribeMessage subscribeMessage);
void sendUniformMsg(WxMaUniformMessage uniformMessage);
JsonObject createUpdatableMessageActivityId();
void setUpdatableMsg(WxMaUpdatableMsg msg);
}Generate various types of QR codes and mini program codes with customizable styling and parameters.
public interface WxMaQrcodeService {
// Mini Program Codes (Interface A)
File createWxaCode(String path, int width);
byte[] createWxaCodeBytes(String path, String envVersion, int width, boolean autoColor,
WxMaCodeLineColor lineColor, boolean isHyaline);
// Unlimited Mini Program Codes (Interface B)
File createWxaCodeUnlimit(String scene, String page);
byte[] createWxaCodeUnlimitBytes(String scene, String page, boolean checkPath,
String envVersion, int width, boolean autoColor,
WxMaCodeLineColor lineColor, boolean isHyaline);
// Traditional QR Codes (Interface C)
File createQrcode(String path, int width);
byte[] createQrcodeBytes(String path, int width);
}Comprehensive analytics and data insights including user trends, visit patterns, retention analysis, and user demographics.
public interface WxMaAnalysisService {
// Trend Analysis
List<WxMaSummaryTrend> getDailySummaryTrend(Date beginDate, Date endDate);
List<WxMaVisitTrend> getDailyVisitTrend(Date beginDate, Date endDate);
List<WxMaVisitTrend> getWeeklyVisitTrend(Date beginDate, Date endDate);
List<WxMaVisitTrend> getMonthlyVisitTrend(Date beginDate, Date endDate);
// User Analysis
WxMaVisitDistribution getVisitDistribution(Date beginDate, Date endDate);
WxMaRetainInfo getDailyRetainInfo(Date beginDate, Date endDate);
List<WxMaVisitPage> getVisitPage(Date beginDate, Date endDate);
WxMaUserPortrait getUserPortrait(Date beginDate, Date endDate);
}Complete e-commerce platform integration including shop management, product catalogs, order processing, payments, and logistics.
// Shop Management
public interface WxMaShopAccountService {
// Account operations
}
public interface WxMaShopSpuService {
// Product management
}
public interface WxMaShopOrderService {
// Order processing
}
public interface WxMaShopPayService {
// Payment handling
}
public interface WxMaShopDeliveryService {
// Logistics management
}Complete live streaming functionality including room management, broadcast control, product integration, and audience management.
public interface WxMaLiveService {
// Room Management
WxMaCreateRoomResult createRoom(WxMaLiveRoomInfo roomInfo);
boolean deleteRoom(Integer roomId);
boolean editRoom(WxMaLiveRoomInfo roomInfo);
WxMaLiveResult getLiveInfo(Integer start, Integer limit);
// Room Features
String getPushUrl(Integer roomId);
WxMaLiveSharedCode getSharedCode(Integer roomId, String params);
boolean updatefeedpublic(Integer roomId, Integer isFeedsPublic);
boolean updatereplay(Integer roomId, Integer closeReplay);
// Product Management
boolean addGoodsToRoom(Integer roomId, List<Integer> goodsIds);
boolean onsale(Integer roomId, Integer goodsId, Integer onSale);
boolean push(Integer roomId, Integer goodsId);
}Media file management, content security, and content moderation services for images, videos, and other media types.
public interface WxMaMediaService {
// Media upload and management
}
public interface WxMaSecurityService {
// Content security and moderation
}WeChat Cloud Development integration including cloud functions, database operations, and cloud storage management.
public interface WxMaCloudService {
// Cloud development operations
}Express delivery integration and logistics management including shipping, tracking, and delivery services.
public interface WxMaExpressService {
// Express delivery operations
}
public interface WxMaImmediateDeliveryService {
// Immediate delivery services
}Comprehensive development and management tools including code deployment, API management, plugin support, and testing utilities for the complete mini program development lifecycle.
public interface WxMaCodeService {
// Version Control and Deployment
boolean commitCode(String templateId, String userVersion, String userDesc, ExtJson extJson);
WxMaCodeVersionsResult getCodeVersions();
boolean releaseCode(String userVersion);
boolean rollbackRelease();
// Code Auditing
WxMaSubmitAuditResult submitAudit();
WxMaSubmitAuditResult submitAudit(List<WxMaCategory> categoryList);
WxMaGetAuditStatusResult getAuditStatus(String auditId);
WxMaGetLatestAuditStatusResult getLatestAuditStatus();
boolean undoCodeAudit();
}
public interface WxMaJsapiService {
// JSAPI Configuration
String getJsapiTicket();
String getJsapiTicket(boolean forceRefresh);
WxJsapiSignature createJsapiSignature(String url);
}
public interface WxMaPluginService {
// Plugin Management
boolean applyPlugin(String action, String pluginAppid, String reason);
WxMaPluginListResult getPluginList();
boolean setDevPluginList(String action, String appid, String userVersion);
WxMaDevPluginResult getDevPlugin();
}
public interface WxMaOpenApiService {
// API Quota Management
WxOpenMaQuotaGetResult getApiQuota(String cgiPath);
WxOpenMaQueryQuotaResult queryQuota(String cgiPath);
boolean clearQuota(String appid, String cgiPath);
}Short drama and video content management including content publishing, review, and analytics.
public interface WxMaVodService {
// Content Management
WxMaVodUploadDramaResult uploadDrama(WxMaVodDramaInfo dramaInfo);
WxMaVodSingleVideoResult singleFileTest(String mediaUrl, Integer mediaType);
WxMaVodListDramasResult listDramas(Integer start, Integer limit);
// Audit and Review
WxMaVodAuditDramaResult auditDrama(String dramaId);
WxMaVodGetDramaResult getDrama(String dramaId);
}Virtual goods payment processing for mini games and digital content purchases.
public interface WxMaXPayService {
// Virtual Payment Operations
WxMaXPayCreateOrderResult createOrder(WxMaXPayCreateOrderRequest request);
WxMaXPayQueryOrderResult queryOrder(String orderId);
WxMaXPayRefundResult refundOrder(WxMaXPayRefundRequest request);
// Goods Management
boolean presentGoods(String openid, String billNo);
WxMaXPayGoodsResult queryUserGoods(String openid, String goodsType);
}Marketing campaign management, promotion codes, and advertising integration services.
public interface WxMaMarketingService {
// Campaign Management
WxMaMarketingCampaignResult createCampaign(WxMaMarketingCampaignRequest request);
boolean pauseCampaign(String campaignId);
boolean resumeCampaign(String campaignId);
// Promotion Codes
WxMaPromotionCodeResult generatePromotionCode(String campaignId, Integer count);
}Electronic invoice management for reimbursement and expense tracking integration.
public interface WxMaReimburseInvoiceService {
// Invoice Operations
WxMaInvoiceResult getInvoiceInfo(String cardId, String encryptCode);
WxMaInvoiceBatchResult getInvoiceBatch(List<WxMaInvoiceItem> items);
boolean updateInvoiceStatus(String cardId, String encryptCode, String reimburseStatus);
}Order shipping and logistics coordination for physical goods delivery management.
public interface WxMaOrderShippingService {
// Shipping Management
boolean uploadShippingInfo(String orderId, WxMaShippingInfo shippingInfo);
WxMaShippingResult queryShipping(String orderId);
boolean notifyConfirmReceive(String orderId, Integer received);
// Delivery Templates
WxMaDeliveryTemplateResult getDeliveryTemplate();
}Comprehensive configuration management supporting memory-based and Redis-based storage with multi-app support.
public interface WxMaConfig {
// Basic Configuration
String getAppid();
String getSecret();
String getToken();
String getAesKey();
// Access Token Management
String getAccessToken();
boolean isAccessTokenExpired();
void updateAccessToken(String accessToken, int expiresInSeconds);
Lock getAccessTokenLock();
// HTTP Configuration
String getHttpProxyHost();
int getHttpProxyPort();
int getRetrySleepMillis();
int getMaxRetryTimes();
}// Configure multiple mini programs
WxMaService wxService = new WxMaServiceImpl();
wxService.addConfig("app1", config1);
wxService.addConfig("app2", config2);
// Switch between apps dynamically
wxService.switchoverTo("app1");
// All operations now use app1's configuration
wxService.switchoverTo("app2");
// All operations now use app2's configurationAll service methods that interact with WeChat APIs throw WxErrorException on failure:
try {
WxMaJscode2SessionResult result = wxService.getUserService().getSessionInfo(jsCode);
// Process successful result
} catch (WxErrorException e) {
int errorCode = e.getError().getErrorCode();
String errorMsg = e.getError().getErrorMsg();
// Handle specific WeChat error codes
switch (errorCode) {
case 40029:
// Invalid js_code
break;
case 45011:
// API quota exceeded
break;
case 40001:
// Invalid access token
break;
}
}The SDK is designed for production environments:
WxMaService instance per mini program and reuse itWxMaOpenApiService