# Web端检查支付密码接口文档 ## 模块概述 本模块提供商户用户支付密码检查功能,支持检查用户是否设置了支付密码,以及可选的密码验证功能。 --- ## 接口信息 ### 检查是否设置支付密码 #### 接口详情 - **接口名称**: 检查是否设置支付密码 - **接口路径**: `GET /merchantUser/checkPayPassword` - **请求方式**: GET - **接口描述**: 检查指定商户用户是否设置了支付密码,并可选择验证密码是否正确 - **登录验证**: ❌ 不需要(公开接口) --- ## 请求参数 | 参数名 | 类型 | 必填 | 说明 | 示例值 | |--------|------|------|------|--------| | storeUserId | String | 是 | 用户ID | "114" | | password | String | 否 | 支付密码(如果提供则验证密码是否正确) | "123456" | **参数说明**: - `storeUserId`: 商户用户的唯一标识ID - `password`: - 如果不提供,只检查用户是否设置了支付密码 - 如果提供,除了检查是否设置,还会验证密码是否正确 --- ## 请求示例 ### 示例1: 只检查是否设置支付密码 ```http GET /merchantUser/checkPayPassword?storeUserId=114 ``` ```bash curl "http://localhost:8080/merchantUser/checkPayPassword?storeUserId=114" ``` ### 示例2: 检查并验证支付密码 ```http GET /merchantUser/checkPayPassword?storeUserId=114&password=123456 ``` ```bash curl "http://localhost:8080/merchantUser/checkPayPassword?storeUserId=114&password=123456" ``` --- ## 响应参数 ### 成功响应(通用格式) ```json { "code": 200, "success": true, "data": { "code": 200, "message": "...", "data": "true/false" }, "msg": "操作成功" } ``` ### 响应字段说明 | 字段名 | 类型 | 说明 | |--------|------|------| | code | Integer | HTTP状态码 | | success | Boolean | 是否成功 | | data | Map | 详细结果数据 | | data.code | Integer | 业务状态码(固定为200) | | data.message | String | 结果描述信息 | | data.data | String | 验证结果("true"或"false") | | msg | String | 提示信息 | **data.data 字段值说明**: - `"true"`: 用户已设置支付密码(且密码验证通过,如果提供了password参数) - `"false"`: 用户未设置支付密码或密码验证失败 --- ## 响应示例 ### 场景1: 用户已设置支付密码(不验证密码) **请求**: ``` GET /merchantUser/checkPayPassword?storeUserId=114 ``` **响应**: ```json { "code": 200, "success": true, "data": { "code": 200, "message": "用户已设置支付密码", "data": "true" }, "msg": "操作成功" } ``` --- ### 场景2: 用户未设置支付密码 **请求**: ``` GET /merchantUser/checkPayPassword?storeUserId=114 ``` **响应**: ```json { "code": 200, "success": true, "data": { "code": 200, "message": "用户未设置支付密码", "data": "false" }, "msg": "操作成功" } ``` --- ### 场景3: 用户不存在 **请求**: ``` GET /merchantUser/checkPayPassword?storeUserId=999999 ``` **响应**: ```json { "code": 200, "success": true, "data": { "code": 200, "message": "未查询到用户", "data": "false" }, "msg": "操作成功" } ``` --- ### 场景4: 密码验证成功 **请求**: ``` GET /merchantUser/checkPayPassword?storeUserId=114&password=123456 ``` **响应**: ```json { "code": 200, "success": true, "data": { "code": 200, "message": "用户已设置支付密码", "data": "true" }, "msg": "操作成功" } ``` --- ### 场景5: 密码验证失败 **请求**: ``` GET /merchantUser/checkPayPassword?storeUserId=114&password=wrong_password ``` **响应**: ```json { "code": 200, "success": true, "data": { "code": 200, "message": "密码错误", "data": "false" }, "msg": "操作成功" } ``` --- ### 场景6: 系统异常 **响应**: ```json { "code": 500, "success": false, "data": null, "msg": "查询失败:{异常信息}" } ``` --- ## 业务逻辑说明 ### 处理流程 ``` ┌─────────────────────────────────────────────┐ │ 1. 接收请求参数 │ │ - storeUserId (必填) │ │ - password (可选) │ └─────────────────┬───────────────────────────┘ ↓ ┌─────────────────────────────────────────────┐ │ 2. 根据用户ID查询用户信息 │ │ storeUserMapper.selectById(storeUserId) │ └─────────────────┬───────────────────────────┘ ↓ ┌─────────────────────────────────────────────┐ │ 3. 检查用户是否存在 │ │ IF storeUser == null │ │ RETURN "未查询到用户", data="false" │ └─────────────────┬───────────────────────────┘ ↓ ┌─────────────────────────────────────────────┐ │ 4. 检查是否设置了支付密码 │ │ IF payPassword == null │ │ RETURN "用户未设置支付密码", data="false" │ └─────────────────┬───────────────────────────┘ ↓ ┌─────────────────────────────────────────────┐ │ 5. 如果提供了password参数,验证密码 │ │ IF password != null │ │ IF password != payPassword │ │ RETURN "密码错误", data="false" │ └─────────────────┬───────────────────────────┘ ↓ ┌─────────────────────────────────────────────┐ │ 6. 验证通过 │ │ RETURN "用户已设置支付密码", data="true" │ └─────────────────────────────────────────────┘ ``` ### 验证逻辑详解 #### 步骤1: 用户存在性检查 ```java StoreUser storeUser = storeUserMapper.selectById(storeUserId); if (storeUser == null) { // 用户不存在 return {"message": "未查询到用户", "data": "false"}; } ``` #### 步骤2: 支付密码设置检查 ```java if (storeUser.getPayPassword() == null) { // 用户未设置支付密码 return {"message": "用户未设置支付密码", "data": "false"}; } ``` #### 步骤3: 密码验证(可选) ```java if (password != null) { if (!password.equals(storeUser.getPayPassword())) { // 密码错误 return {"message": "密码错误", "data": "false"}; } } // 验证通过 return {"message": "用户已设置支付密码", "data": "true"}; ``` --- ## 数据库查询 ### 涉及的表 #### store_user(商户用户表) **查询SQL**: ```sql SELECT * FROM store_user WHERE id = ? ``` **使用字段**: - `id`: 用户ID - `pay_password`: 支付密码 --- ## 业务场景 ### 场景1: 支付前检查 **背景**: 用户发起支付操作前,先检查是否设置了支付密码 **请求**: ``` GET /merchantUser/checkPayPassword?storeUserId=114 ``` **响应处理**: ```javascript if (response.data.data === "true") { // 已设置支付密码,弹出密码输入框 showPasswordInput(); } else { // 未设置支付密码,引导用户设置 showSetPasswordTip(); } ``` --- ### 场景2: 提现前验证 **背景**: 用户申请提现时,验证支付密码是否正确 **请求**: ``` GET /merchantUser/checkPayPassword?storeUserId=114&password=123456 ``` **响应处理**: ```javascript if (response.data.data === "true") { // 密码验证通过,允许提现 proceedWithdrawal(); } else { // 密码验证失败,提示错误 showError(response.data.message); } ``` --- ### 场景3: 修改支付密码前验证 **背景**: 用户修改支付密码前,验证旧密码是否正确 **请求**: ``` GET /merchantUser/checkPayPassword?storeUserId=114&password=old_password ``` **响应处理**: ```javascript if (response.data.data === "true") { // 旧密码正确,允许修改 showChangePasswordForm(); } else if (response.data.message === "密码错误") { // 旧密码错误 showError("原密码错误,请重新输入"); } else { // 其他错误 showError(response.data.message); } ``` --- ### 场景4: 忘记密码判断 **背景**: 用户点击"忘记密码",判断是否已设置过密码 **请求**: ``` GET /merchantUser/checkPayPassword?storeUserId=114 ``` **响应处理**: ```javascript if (response.data.data === "false" && response.data.message === "用户未设置支付密码") { // 从未设置过密码,引导设置 showSetPasswordPage(); } else { // 已设置密码,进入重置流程 showResetPasswordPage(); } ``` --- ## 前端集成示例 ### Vue.js 示例 ```javascript // API调用方法 async checkPayPassword(userId, password = null) { try { const params = { storeUserId: userId }; if (password) { params.password = password; } const response = await axios.get('/merchantUser/checkPayPassword', { params: params }); if (response.data.success) { const result = response.data.data; return { hasPassword: result.data === "true", message: result.message }; } return { hasPassword: false, message: "查询失败" }; } catch (error) { console.error("检查支付密码失败:", error); return { hasPassword: false, message: "网络错误" }; } } // 使用示例1: 检查是否设置支付密码 async function checkIfPasswordSet() { const result = await checkPayPassword("114"); if (result.hasPassword) { console.log("用户已设置支付密码"); } else { console.log("用户未设置支付密码:", result.message); } } // 使用示例2: 验证支付密码 async function verifyPayPassword(password) { const result = await checkPayPassword("114", password); if (result.hasPassword) { console.log("密码验证成功"); return true; } else { console.log("密码验证失败:", result.message); return false; } } ``` ### React 示例 ```javascript import { useState } from 'react'; import axios from 'axios'; function PaymentComponent() { const [hasPassword, setHasPassword] = useState(false); const [message, setMessage] = useState(''); // 检查支付密码 const checkPayPassword = async (userId, password = null) => { try { const params = { storeUserId: userId }; if (password) params.password = password; const response = await axios.get('/merchantUser/checkPayPassword', { params }); if (response.data.success) { const result = response.data.data; setHasPassword(result.data === "true"); setMessage(result.message); return result.data === "true"; } } catch (error) { console.error('检查失败:', error); setMessage('查询失败'); } return false; }; return (
{message}