2026-09-09 22:05:00 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* 实名认证服务(API_INVENTORY 行 30-31)
|
|
|
|
|
|
*
|
|
|
|
|
|
* 封装提交与查询两个端点。
|
|
|
|
|
|
* 提交走 POST + 幂等键(同一身份证不可重复提交)。
|
|
|
|
|
|
* 身份证号等敏感字段由 stores/userStore 在收集阶段加密传输,本层不缓存明文。
|
|
|
|
|
|
*/
|
|
|
|
|
|
const api = require('../utils/api');
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 提交实名认证(API_INVENTORY 行 30)
|
|
|
|
|
|
* @param {{ realName: string, idCardNumber: string, faceImageUrl?: string }} payload
|
|
|
|
|
|
* @returns {Promise<{ submitted: true, status: 'pending' }>}
|
|
|
|
|
|
*/
|
|
|
|
|
|
function submit(payload) {
|
|
|
|
|
|
// 幂等键:身份证号后4位 + 当前秒,避免用户多次点击
|
|
|
|
|
|
const tail = (payload.idCardNumber || '').slice(-4).toUpperCase();
|
2026-09-18 16:37:33 +08:00
|
|
|
|
const idempotencyKey = api.idempotencyKey('verification-submit', tail);
|
2026-09-09 22:05:00 +08:00
|
|
|
|
return api.post('/verification/submit', payload, undefined, idempotencyKey);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 查询认证状态(API_INVENTORY 行 31)
|
|
|
|
|
|
* @returns {Promise<{ status: 'not_submitted'|'pending'|'approved'|'rejected', rejectReason?: string, submittedAt?: number, reviewedAt?: number }>}
|
|
|
|
|
|
*/
|
|
|
|
|
|
function getStatus() {
|
|
|
|
|
|
return api.get('/verification/status');
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
module.exports = {
|
|
|
|
|
|
submit,
|
|
|
|
|
|
getStatus,
|
|
|
|
|
|
};
|