wechat_minapp/
lib.rs

1//! `wechat_minapp` - 微信小程序服务端 API 封装库
2//!
3//! 这是一个为微信小程序服务端 API 提供的 Rust 封装库,旨在简化与微信小程序后端的交互。
4//! 提供了诸如用户登录、内容安全检测、小程序码生成等常用功能的易用接口。
5//!
6//! ## 主要模块
7//!
8//! - [`client`]: 核心客户端,负责 API 请求和访问令牌管理。
9//! - [`user`][]: 用户信息管理,包括用户数据解密和手机号获取。
10//! - [`minapp_security`][]: 内容安全检测,用于审核用户生成的内容。
11//! - [`qr_code`][]: 小程序码生成,支持自定义参数和环境。
12//!
13//! ## 核心特性
14//!
15//! - **易用性**: 提供简洁的 API 和链式构建器,简化开发流程。
16//! - **安全性**: 自动处理访问令牌的获取和刷新,保障数据安全。
17//! - **可靠性**: 针对网络请求和 API 错误进行处理,提供稳定的服务。
18//! - **灵活性**: 支持自定义 HTTP 客户端配置,方便集成和测试。
19//! - **并发性**: 支持在并发环境中使用。
20//!
21//! ## 快速开始
22//!
23//! ```no_run
24//! use wechat_minapp::{Client, minapp_security::{Args, Scene}, QrCodeArgs};
25//!
26//! #[tokio::main]
27//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
28//!     // 初始化客户端
29//!     let client = Client::new("your_app_id", "your_app_secret");
30//!
31//!     // 1) 登录(code -> openid, session_key)
32//!     let cred = client.login("code").await?;
33//!
34//!     // 2) 内容安全检测
35//!     let args = Args::builder()
36//!         .content("需要检测的文本内容")
37//!         .scene(Scene::Comment)
38//!         .openid("user_openid")
39//!         .build()?;
40//!     let sec = client.msg_sec_check(&args).await?;
41//!     if sec.is_pass() {
42//!         println!("内容通过");
43//!     }
44//!
45//!     // 3) 生成小程序码
46//!     let qr_args = QrCodeArgs::builder()
47//!         .path("pages/index/index")
48//!         .width(300)
49//!         .build()?;
50//!     let qr = client.qr_code(qr_args).await?;
51//!     std::fs::write("qrcode.png", qr.buffer())?;
52//!
53//!     Ok(())
54//! }
55//! ```
56//!
57//! ## 模块详解
58//!
59//! ### [`client`] 模块
60//!
61//! 提供了与微信小程序后端 API 交互的核心功能。
62//!
63//! - [`Client`]: 客户端实例,用于发起 API 请求。
64//! - `login()`: 用户登录凭证校验,换取 OpenID 和 Session Key。
65//! - `access_token()`: 获取访问令牌,自动处理令牌刷新。
66//! - `stable_access_token()`: 获取稳定版访问令牌,有效期更长。
67//!
68//! ### [`user`][] 模块
69//!
70//! 提供了获取和处理微信小程序用户信息的功能。
71//!
72//! - [`User`][]: 微信用户基本信息,包括昵称、性别、地区等。
73//! - [`Contact`][]: 用户手机号信息,需要前端传递 code 获取。
74//! - `get_contact()`: 通过 code 换取用户手机号。
75//!
76//! ### [`minapp_security`] 模块
77//!
78//! 提供了微信小程序内容安全检测功能,用于检测文本内容是否包含违规信息。
79//!
80//! - [`Args`][minapp_security]: 内容安全检测参数,包括检测内容、场景、用户 OpenID 等。
81//! - [`Scene`][minapp_security]: 内容安全检测场景,如资料、评论、论坛等。
82//! - `msg_sec_check()`: 发起内容安全检测请求。
83//! - [`MsgSecCheckResult`][minapp_security]: 内容安全检测结果,包含详细的检测信息。
84//!
85//! ### [`qr_code`] 模块
86//!
87//! 提供了生成微信小程序码的功能,支持自定义参数和环境。
88//!
89//! - [`QrCodeArgs`][]: 小程序码生成参数,包括页面路径、宽度、颜色等。
90//! - [`MinappEnvVersion`][]: 小程序环境版本,如开发版、体验版、正式版。
91//! - `qr_code()`: 生成小程序码图片数据。
92//! - [`QrCode`][]: 小程序码图片数据,可以保存为文件或直接返回给前端。
93//!
94//! ## 错误处理
95//!
96//! 所有 API 调用都可能返回 [`Result`],其中 [`Error`][error] 枚举类型包含了各种可能的错误情况,
97//! 例如网络错误、API 错误、参数错误等。建议在应用层统一处理这些错误。
98//!
99
100mod access_token;
101mod client;
102mod credential;
103mod qr_code;
104mod response;
105
106pub mod constants;
107pub mod error;
108pub mod minapp_security;
109pub mod user;
110
111pub type Result<T> = std::result::Result<T, error::Error>;
112pub use client::Client;
113pub use qr_code::{MinappEnvVersion, QrCode, QrCodeArgs, Rgb};