Skip to content

Commit 4ff3f1e

Browse files
Copilotbinarywang
andcommitted
添加实名验证接口使用文档
Co-authored-by: binarywang <1343140+binarywang@users.noreply.github.com>
1 parent 5f96272 commit 4ff3f1e

File tree

1 file changed

+143
-0
lines changed

1 file changed

+143
-0
lines changed

weixin-java-pay/REAL_NAME_USAGE.md

Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
# 微信支付实名验证接口使用说明
2+
3+
## 概述
4+
5+
微信支付实名验证接口允许商户查询用户的实名认证状态,如果用户未实名认证,接口会返回引导用户进行实名认证的URL。
6+
7+
## 官方文档
8+
9+
https://pay.wechatpay.cn/doc/v2/merchant/4011987607
10+
11+
## 接口说明
12+
13+
### 查询用户实名认证信息
14+
15+
- **接口地址**`https://api.mch.weixin.qq.com/userinfo/realnameauth/query`
16+
- **请求方式**:POST(需要使用商户证书)
17+
- **请求参数**
18+
- `appid`:公众账号ID(自动填充)
19+
- `mch_id`:商户号(自动填充)
20+
- `openid`:用户在商户appid下的唯一标识
21+
- `nonce_str`:随机字符串(自动生成)
22+
- `sign`:签名(自动生成)
23+
24+
- **返回参数**
25+
- `return_code`:返回状态码
26+
- `return_msg`:返回信息
27+
- `result_code`:业务结果
28+
- `openid`:用户标识
29+
- `is_certified`:实名认证状态(Y-已实名认证,N-未实名认证)
30+
- `cert_info`:实名认证信息(加密,仅已实名时返回)
31+
- `guide_url`:引导用户进行实名认证的URL(仅未实名时返回)
32+
33+
## 使用示例
34+
35+
### 1. 获取实名验证服务
36+
37+
```java
38+
// 获取WxPayService实例
39+
WxPayService wxPayService = ... // 根据你的配置初始化
40+
41+
// 获取实名验证服务
42+
RealNameService realNameService = wxPayService.getRealNameService();
43+
```
44+
45+
### 2. 查询用户实名认证状态(完整方式)
46+
47+
```java
48+
import com.github.binarywang.wxpay.bean.realname.RealNameRequest;
49+
import com.github.binarywang.wxpay.bean.realname.RealNameResult;
50+
import com.github.binarywang.wxpay.exception.WxPayException;
51+
52+
try {
53+
// 构建请求对象
54+
RealNameRequest request = RealNameRequest.newBuilder()
55+
.openid("oUpF8uMuAJO_M2pxb1Q9zNjWeS6o") // 用户的openid
56+
.build();
57+
58+
// 调用查询接口
59+
RealNameResult result = realNameService.queryRealName(request);
60+
61+
// 处理返回结果
62+
if ("Y".equals(result.getIsCertified())) {
63+
System.out.println("用户已实名认证");
64+
System.out.println("认证信息:" + result.getCertInfo());
65+
} else {
66+
System.out.println("用户未实名认证");
67+
System.out.println("引导链接:" + result.getGuideUrl());
68+
// 可以将guide_url提供给用户,引导其完成实名认证
69+
}
70+
} catch (WxPayException e) {
71+
System.err.println("查询失败:" + e.getMessage());
72+
}
73+
```
74+
75+
### 3. 查询用户实名认证状态(简化方式)
76+
77+
```java
78+
import com.github.binarywang.wxpay.bean.realname.RealNameResult;
79+
import com.github.binarywang.wxpay.exception.WxPayException;
80+
81+
try {
82+
// 直接传入openid进行查询
83+
RealNameResult result = realNameService.queryRealName("oUpF8uMuAJO_M2pxb1Q9zNjWeS6o");
84+
85+
// 处理返回结果
86+
if ("Y".equals(result.getIsCertified())) {
87+
System.out.println("用户已实名认证");
88+
} else {
89+
System.out.println("用户未实名认证,引导链接:" + result.getGuideUrl());
90+
}
91+
} catch (WxPayException e) {
92+
System.err.println("查询失败:" + e.getMessage());
93+
}
94+
```
95+
96+
## 注意事项
97+
98+
1. **证书要求**:本接口需要使用商户证书进行请求,请确保已正确配置商户证书。
99+
100+
2. **OPENID获取**:openid是用户在商户appid下的唯一标识,需要通过微信公众平台或小程序获取。
101+
102+
3. **认证信息**`cert_info`字段返回的信息是加密的,需要使用相应的解密方法才能获取明文信息。
103+
104+
4. **引导链接**:当用户未实名时,返回的`guide_url`可以用于引导用户完成实名认证,建议在小程序或H5页面中使用。
105+
106+
5. **频率限制**:请注意接口调用频率限制,避免频繁查询同一用户的实名状态。
107+
108+
## 业务场景
109+
110+
- **转账前校验**:在进行企业付款到零钱等操作前,可以先查询用户的实名认证状态
111+
- **风控审核**:作为业务风控的一部分,确认用户已完成实名认证
112+
- **用户引导**:发现用户未实名时,引导用户完成实名认证以使用相关功能
113+
114+
## 错误处理
115+
116+
```java
117+
try {
118+
RealNameResult result = realNameService.queryRealName(openid);
119+
// 处理结果...
120+
} catch (WxPayException e) {
121+
// 处理异常
122+
String errorCode = e.getErrCode();
123+
String errorMsg = e.getErrCodeDes();
124+
125+
// 根据错误码进行相应处理
126+
switch (errorCode) {
127+
case "SYSTEMERROR":
128+
// 系统错误,建议稍后重试
129+
break;
130+
case "PARAM_ERROR":
131+
// 参数错误,检查openid是否正确
132+
break;
133+
default:
134+
// 其他错误
135+
break;
136+
}
137+
}
138+
```
139+
140+
## 相关链接
141+
142+
- [微信支付官方文档](https://pay.wechatpay.cn/doc/v2/merchant/4011987607)
143+
- [WxJava项目主页](https://github.com/binarywang/WxJava)

0 commit comments

Comments
 (0)