仰望星辰工作室

better-staridc-MNBT

Z zfhsh first commit 2 天前
1<?php
2/**
3 * 用户端 - 实名认证申请页
4 */
5if (!defined('IN_CRONLITE')) { exit; }
6$page_title = '实名认证';
7$auth = $auth ?? null;
8ob_start();
9$submitUrl = realname_url('realname/api/submit');
10$ocrUrl = realname_asset_url('ocr/tesseract.min.js');
11?>
12
13<div class="rn-card rn-apply-card">
14 <div class="rn-card-head">
15 <h2>实名认证</h2>
16 <p>根据平台要求,购买产品前需完成实名认证。信息全程本地识别,不经过第三方接口。</p>
17 </div>
18
19 <?php if ($auth && $auth['status'] === 'rejected'): ?>
20 <div class="rn-alert rn-alert-danger">
21 上次认证未通过:<?= htmlspecialchars((string)$auth['audit_note']) ?>,请核对后重新提交。
22 </div>
23 <?php endif; ?>
24
25 <?php if ($auth && $auth['status'] === 'pending'): ?>
26 <div class="rn-alert rn-alert-warn">
27 当前认证正在人工复核中,请耐心等待。可到「认证状态」页查看进度。
28 </div>
29 <?php endif; ?>
30
31 <form id="rnForm" class="rn-form" autocomplete="off">
32 <?= function_exists('mnbt_csrf_field') ? mnbt_csrf_field() : '' ?>
33 <div class="rn-field">
34 <label>姓名 <span class="rn-required">*</span></label>
35 <input type="text" id="rnRealName" name="real_name" maxlength="20" placeholder="与身份证一致的真实姓名" required>
36 <div class="rn-hint">将用于 OCR 自动比对(识别失败时转人工审核)</div>
37 </div>
38
39 <div class="rn-field">
40 <label>手机号 <span class="rn-required">*</span></label>
41 <input type="text" id="rnPhone" name="phone" maxlength="11" placeholder="请输入 11 位手机号" required>
42 </div>
43
44 <div class="rn-field">
45 <label>身份证号 <span class="rn-required">*</span></label>
46 <input type="text" id="rnIdCard" name="id_card" maxlength="18" placeholder="18 位身份证号(上传正面照片后将自动识别填入)" required>
47 </div>
48
49 <div class="rn-uploads">
50 <div class="rn-upload-item">
51 <div class="rn-upload-box" id="rnFrontBox">
52 <input type="file" id="rnFront" accept="image/jpeg,image/png" data-type="front">
53 <div class="rn-upload-inner">
54 <span class="rn-upload-ico">&#128196;</span>
55 <span>身份证正面</span>
56 <small>点击上传 · 识别姓名与身份证号</small>
57 </div>
58 <img class="rn-upload-preview" alt="">
59 <button type="button" class="rn-upload-clear">&times;</button>
60 </div>
61 <div class="rn-ocr-state" id="rnOcrState" style="display:none">
62 <span class="rn-spinner"></span> 正在本地识别身份证正面…
63 </div>
64 </div>
65 <div class="rn-upload-item">
66 <div class="rn-upload-box" id="rnBackBox">
67 <input type="file" id="rnBack" accept="image/jpeg,image/png" data-type="back">
68 <div class="rn-upload-inner">
69 <span class="rn-upload-ico">&#128196;</span>
70 <span>身份证反面</span>
71 <small>点击上传</small>
72 </div>
73 <img class="rn-upload-preview" alt="">
74 <button type="button" class="rn-upload-clear">&times;</button>
75 </div>
76 </div>
77 <div class="rn-upload-item">
78 <div class="rn-upload-box" id="rnHandBox">
79 <input type="file" id="rnHand" accept="image/jpeg,image/png" data-type="hand">
80 <div class="rn-upload-inner">
81 <span class="rn-upload-ico">&#128247;</span>
82 <span>手持身份证</span>
83 <small>面部与证件清晰可见</small>
84 </div>
85 <img class="rn-upload-preview" alt="">
86 <button type="button" class="rn-upload-clear">&times;</button>
87 </div>
88 </div>
89 </div>
90
91 <div class="rn-ocr-result" id="rnOcrResult" style="display:none">
92 <div class="rn-ocr-result-title">&#10003; 已自动识别(请核对,可手动修改)</div>
93 <div class="rn-ocr-result-row"><span>识别姓名</span><b id="rnOcrName"></b></div>
94 <div class="rn-ocr-result-row"><span>识别身份证号</span><b id="rnOcrIdCard"></b></div>
95 </div>
96
97 <div class="rn-form-tip">
98 上传即表示本人已阅读并同意《实名认证服务协议》,保证所提交身份信息真实、合法、有效。
99 </div>
100
101 <button type="submit" class="rn-btn rn-btn-block" id="rnSubmit">提交认证</button>
102 </form>
103</div>
104
105<input type="hidden" id="rnOcrNameVal" value="">
106<input type="hidden" id="rnOcrIdCardVal" value="">
107
108<script>
109window.RN_OCR_URL = <?= json_encode($ocrUrl) ?>;
110window.RN_OCR_LANG_URL = <?= json_encode(realname_asset_url('ocr/lang/')) ?>;
111window.RN_OCR_WORKER_URL = <?= json_encode(realname_asset_url('ocr/worker.min.js')) ?>;
112window.RN_OCR_CORE_URL = <?= json_encode(realname_asset_url('ocr/tesseract-core.wasm.js')) ?>;
113window.RN_SUBMIT_URL = <?= json_encode($submitUrl) ?>;
114window.RN_STATUS_URL = <?= json_encode(realname_url('realname/status')) ?>;
115</script>
116<script src="<?= realname_asset_url('realname.js') ?>"></script>
117
118<?php
119$content = ob_get_clean();
120include __DIR__ . '/layout.php';