Files
danyang-match/miniapp/services/verificationService.js
T

34 lines
1.2 KiB
JavaScript
Raw Normal View History

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();
const idempotencyKey = 'verification-submit:' + tail + ':' + Math.floor(Date.now() / 1000);
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,
};