# alien-store-platform Web端商户平台 - 身份验证接口配置说明

## 接口说明

本次开发在 `alien-store-platform` 服务中新增了商户身份信息验证接口，复用了 `alien-store` 服务中的支付宝身份验证业务逻辑。

### 接口地址

```
GET /merchantAuth/verifyIdInfo
```

### 请求参数

| 参数名 | 类型 | 必填 | 说明 | 默认值 |
|--------|------|------|------|--------|
| name | String | 是 | 姓名 | - |
| idCard | String | 是 | 身份证号 | - |
| appType | Integer | 是 | 端区分(0:用户, 1:商家) | 1 |

### 请求示例

```http
GET /merchantAuth/verifyIdInfo?name=张三&idCard=440123199001011234&appType=1
```

### 响应示例

**成功响应：**
```json
{
  "code": 200,
  "success": true,
  "msg": "身份验证成功",
  "data": "身份验证成功"
}
```

**失败响应：**
```json
{
  "code": 500,
  "success": false,
  "msg": "该身份证已实名认证过",
  "data": null
}
```

或

```json
{
  "code": 500,
  "success": false,
  "msg": "身份证号与姓名不一致，请检查后重新填写",
  "data": null
}
```

## 业务逻辑说明

1. **身份证重复校验**：根据 `appType` 参数判断查询用户表（`life_user`）或商家表（`store_user`），检查该身份证和姓名是否已实名认证
2. **支付宝身份验证**：调用支付宝二要素核验接口，验证身份证号与姓名是否一致
3. **返回验证结果**：根据验证结果返回相应的成功或失败信息

## Nacos 配置要求

在 Nacos 配置中心的 `alien-store-platform.yml` 配置文件中，需要添加以下支付宝相关配置：

```yaml
# 支付宝商家端配置
app:
  business:
    # 商家端应用ID
    appId: your_app_id_here
    # 商家端应用私钥
    appPrivateKey: your_private_key_here
    # 商家端应用公钥
    appPublicKey: your_public_key_here
    
    # Windows环境证书路径
    win:
      # 应用公钥证书文件路径
      appCertPath: D:/path/to/appCertPublicKey.crt
      # 支付宝公钥证书文件路径
      alipayPublicCertPath: D:/path/to/alipayCertPublicKey_RSA2.crt
      # 支付宝根证书文件路径
      alipayRootCertPath: D:/path/to/alipayRootCert.crt
    
    # Linux环境证书路径
    linux:
      # 应用公钥证书文件路径
      appCertPath: /path/to/appCertPublicKey.crt
      # 支付宝公钥证书文件路径
      alipayPublicCertPath: /path/to/alipayCertPublicKey_RSA2.crt
      # 支付宝根证书文件路径
      alipayRootCertPath: /path/to/alipayRootCert.crt
```

**注意事项：**
- 配置值需要从 `alien-store` 服务的 Nacos 配置中获取，确保使用相同的支付宝账号配置
- 证书文件需要上传到服务器对应的路径
- Windows 和 Linux 环境的证书路径需要分别配置

## 代码结构

### 新增文件列表

```
alien-store-platform/
├── src/main/java/shop/alien/storeplatform/
│   ├── controller/
│   │   └── MerchantAuthController.java          # 商户身份验证控制器
│   ├── service/
│   │   ├── MerchantAuthService.java             # 商户身份验证服务接口
│   │   └── impl/
│   │       └── MerchantAuthServiceImpl.java     # 商户身份验证服务实现
│   └── util/
│       └── AliApiUtil.java                      # 支付宝API工具类
```

### 核心类说明

1. **MerchantAuthController**：Web端商户身份验证管理控制器
   - 提供 `/merchantAuth/verifyIdInfo` 接口
   - 参数校验和日志记录

2. **MerchantAuthService & MerchantAuthServiceImpl**：商户身份验证服务
   - 实现身份证重复校验逻辑
   - 调用支付宝验证接口
   - 处理返回结果

3. **AliApiUtil**：支付宝API工具类
   - 封装支付宝身份证二要素核验接口
   - 支持Windows和Linux环境自适应
   - 订单号生成等公共方法

## 技术栈

- Spring Boot 2.3.2.RELEASE
- MyBatis-Plus 3.2.0
- 支付宝 SDK
- Swagger 2.9.2

## 测试访问

启动服务后，可通过以下方式访问：

1. **Swagger UI**：`http://localhost:{port}/doc.html`
2. **直接调用**：`http://localhost:{port}/merchantAuth/verifyIdInfo?name=xxx&idCard=xxx&appType=1`

## 注意事项

1. 确保 Nacos 配置中心已添加必要的支付宝配置
2. 确保支付宝证书文件已上传到指定路径
3. 接口调用时需要传递正确的 `appType` 参数
4. 身份证号和姓名必须真实有效才能通过支付宝验证

