在使用API对企业资质新增实际使用人白名单时,需上传正面人像(照片清晰,人脸无遮挡)照片、选择上传身份证正反面照片(非必选)。请您根据本文方法将相关材料上传至OSS后,在API中提交文件路径参数。资料完善有助于审核人员了解您的业务详情,提高审核效率;如未按规范提交或不提交,可能会影响您的审核流程。
操作步骤
前提条件:已提交企业资质并通过审核。
确认报备信息
登录号码隐私保护控制台。
在左侧导航栏,选择资质管理。
在通过审核的资质A号码白名单栏单击查看详情。
在白名单号码组详情页顶部查看白名单号码组id。
获取OSS配置信息
通过GetDyplsOSSInfoForUploadFile接口获取OSS配置信息。
说明入参
BizType
请传phone_card
(固定值)。请求参数:
参数名称
类型
是否必填
含义
BizType
String
是
业务类型
返回示例:
{ "RequestId": "E2FD3B2F-5028-16E3-9F83-2F76F99B3873", "Message": "OK", "Data": { "Policy": "eyJleHBpcmF0aW9uIjoiMjAyN******************************************9udGVudC1sZW5ndGgtcmFuZ2UiLDAsMTA0ODU3NjAwMF0sWyJzdGFydHMtd2l0***sIiRrZXkiLCIiXV19", "StartPath": "123456", "AccessKeyId": "ACCESS_KEY_ID", "Signature": "BXnwCW**********aoZHZfli5KE=", "Host": "https://alicom-**********-cn-zhangjiakou.aliyuncs.com", "ExpireTime": "1744613007" }, "Code": "OK", "Success": true }
上传图片
获取OSS配置后,需上传正面人像(照片清晰,人脸无遮挡)照片、选择上传身份证正反面照片(非必选)到指定OSS,逐次进行上传,每次fileKey参数返回对应图片的地址。
说明支持png、jpg、jpeg格式,文件大小不要超过2M。
OSS上传成功后http status参数返回有效值:200、201、204(默认)。
请您在ExpireTime过期时间之前上传图片。过期请重新请求GetDyplsOSSInfoForUploadFile获取OSS配置信息。
本文给出Java服务端上传示例代码,更多详情请参见PostObject。
说明请您对文件名进行处理(添加时间戳),避免提交导致文件覆盖,参见示例代码中
getFileName
。import org.apache.commons.io.FilenameUtils; import org.apache.commons.lang3.StringUtils; import org.apache.http.HttpEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.ContentType; import org.apache.http.entity.mime.MultipartEntityBuilder; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.util.EntityUtils; import java.io.File; import java.io.IOException; import java.nio.charset.StandardCharsets; public class HttpOssClient { // 对应返回值中的 Signature private String signature = "BXnwCW**********aoZHZfli5KE="; // 对应返回值中的 Policy private String policy = "eyJleHBpcmF0aW9uIjoiMjAyN******************************************9udGVudC1sZW5ndGgtcmFuZ2UiLDAsMTA0ODU3NjAwMF0sWyJzdGFydHMtd2l0***sIiRrZXkiLCIiXV19"; // 您要上传的本地文件路径 private String localFilePath = "<PATH_TO_YOUR_FILE>"; // 对应返回值中的 AccessKeyId private String accessKeyId = "<ACCESS_KEY_ID>"; // 对应返回值中的 StartPath,注意以 / 结尾 private String startPath = "123456" + "/"; // 对应返回值中的 Host private String url = "https://alicom-**********-cn-zhangjiakou.aliyuncs.com"; public static void main(String[] args) throws Exception { new HttpOssClient().upload(); } private String getFileName() { String fileName = localFilePath; if(localFilePath.contains(File.separator)){ fileName = FilenameUtils.getName(localFilePath); } String extension = FilenameUtils.getExtension(fileName); String prefFileName = StringUtils.substringBefore(fileName,"."); // 文件名进行编码 String encodeFileName = new String(prefFileName.getBytes(),StandardCharsets.UTF_8); // 加一个时间戳,防止文件重名覆盖 fileName = encodeFileName + System.currentTimeMillis() + FilenameUtils.EXTENSION_SEPARATOR + extension ; return fileName; } private void upload() throws Exception { CloseableHttpClient httpClient = HttpClientBuilder.create().build(); CloseableHttpResponse httpResponse = null; HttpPost httpPost = new HttpPost(url); ContentType contentType = ContentType.create("text/plain",StandardCharsets.UTF_8); String fileName = getFileName(); String fileKey = this.startPath + fileName; File file = new File(localFilePath); HttpEntity requestHttpEntity = MultipartEntityBuilder.create() .addTextBody("OSSAccessKeyId", this.accessKeyId) .addTextBody("Signature", this.signature) .addTextBody("policy", this.policy) .setContentType(ContentType.MULTIPART_FORM_DATA) .addTextBody("key", fileKey,contentType) .addBinaryBody("file", file) .setCharset(StandardCharsets.UTF_8) .build(); httpPost.setEntity(requestHttpEntity); httpPost.setHeader("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.6)"); httpPost.setHeader("Accept", "*/*"); httpResponse = httpClient.execute(httpPost); HttpEntity entity = httpResponse.getEntity(); int statusCode = httpResponse.getStatusLine().getStatusCode(); System.out.println("http status " + statusCode); if (null != entity) { String str = EntityUtils.toString(entity); System.out.println("http res: " + str); } EntityUtils.consume(entity); httpClient.close(); if (httpResponse != null) { httpResponse.close(); } if (statusCode >= 200 && statusCode < 300) { System.out.println("fileKey : " + fileKey); } else { throw new IOException("Server returned HTTP response code: " + statusCode + " for URL: " + this.url.toString()); } } }
提交报备信息
图片上传成功后,使用示例代码中返回的fileKey进行提交。请根据您报备的号码类型选择对应的接口进行报备:
分别将逐次返回的fileKey设置为接口中的IdCardFrontPhoto-身份证正面(国徽面)照片OSS路径地址、IdCardBackPhoto-身份证反面(人像面)照片OSS路径地址、IdCardAlivePhoto-正面人像照OSS路径地址的参数值。
填写示例:
"123456/test1719383196031.jpg"
;以返回的fileKey为准 。无需添加前缀或修改。说明接口的单用户QPS限制为50次/秒。超过限制,API调用会被限流,这可能会影响您的业务,请合理调用。
提交A号码手机号个人实名信息
请求参数:
参数名称
类型
是否必填
含义
PhoneNoA
String
是
手机号。
DocumentType
Integer
是
证件类型,默认填写 1。
ANoWhiteGroupId
Long
是
所属A号码组ID。在资质管理页面所属资质的A号码白名单栏单击查看详情。
CustName
String
是
姓名。
DocumentNumber
String
是
证件号码。
IdCardFrontPhoto
String
否
身份证正面照片(国徽面)OSS路径地址。
IdCardBackPhoto
String
否
身份证反面(人像面)照片OSS路径地址。
IdCardAlivePhoto
String
是
正面人像照片OSS路径地址。
Remark
String
否
备注。
返回参数:
返回值名称
类型
含义
RequestId
String
返回ID。
Code
String
请求状态码。
Success
Boolean
请求是否成功。取值:
true:成功。
false:失败。
Data
A号码报备结果结构体。
CreateResult
Boolean
创建结果。取值:
true:成功。
false:失败。
FailType
Integer
创建类型枚举,1为成功,负数表示创建失败。取值:
1:成功。
-1:该手机号已经提交报备,无需再次提交报备。
-2:该手机号已报备成功,无需再次报备。
返回示例:
{ "RequestId": "1D73E648-0978-18A5-B089-3BB27E45711C", "Data": { "CreateResult": true, "FailType": 1 }, "Code": "200", "Success": true }
提交A号码固话个人实名信息
请求参数:
参数名称
类型
是否必填
含义
FixedNoA
String
是
A号码(固话)。
ANoWhiteGroupId
Long
是
所属A号码组ID。在资质管理页面所属资质的A号码白名单栏单击查看详情。
DocumentType
Long
是
证件类型,填写1表示身份证。
CustName
String
是
姓名。
DocumentNumber
String
是
证件号码。
CustType
Long
是
固话客户类型。取值:
1:法定代表人。
2:经办人。
FixedLineWorkId
String
否
固话申请时线下服务大厅工单号。
IdCardFrontPhoto
String
否
身份证正面(国徽面)照片OSS路径地址。
IdCardBackPhoto
String
否
身份证反面(人像面)照片OSS路径地址。
IdCardAlivePhoto
String
是
正面人像照片OSS路径地址。
Remark
String
否
备注(用户自身的业务备注)。
CustPhoneNo
String
否
法定代表人/经办人手机号。
说明若该资质下有移动X号码,则此字段必填,否则将审核不通过。
返回参数:
返回值名称
类型
含义
AccessDeniedDetail
String
访问被拒绝详细信息。
RequestId
String
返回 ID。
Message
String
失败错误提示。
Data
Object
A 号码报备结果结构体。
CreateResult
Boolean
创建结果。
FailType
Long
创建类型枚举,1 表示成功,负数表示创建失败。取值:
1:成功。
-1:该手机号已经提交报备,无需再次提交报备。
-2:该手机号已报备成功,无需再次报备。
Code
String
请求状态码。
Success
Boolean
请求是否成功。
返回示例:
{ "AccessDeniedDetail": "0", "RequestId": "1D73E648-0978-18A5-B089-3BB2", "Message": "固话号码***已存在", "Data": { "CreateResult": true, "FailType": 1 }, "Code": "200", "Success": true }