API提交A号码个人实名信息

在使用API对企业资质新增实际使用人白名单时,需上传正面人像(照片清晰,人脸无遮挡)照片、选择上传身份证正反面照片(非必选)。请您根据本文方法将相关材料上传至OSS后,在API中提交文件路径参数。资料完善有助于审核人员了解您的业务详情,提高审核效率;如未按规范提交或不提交,可能会影响您的审核流程。

image

操作步骤

前提条件:已提交企业资质并通过审核。

  1. 确认报备信息

    1. 登录号码隐私保护控制台。

    2. 在左侧导航栏,选择资质管理

    3. 在通过审核的资质A号码白名单栏单击查看详情

      image

    4. 白名单号码组详情页顶部查看白名单号码组id。

      image

  2. 获取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
    }
  3. 上传图片

    获取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());
            }
        }
    
    }

    相关Maven依赖

    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.5.3</version>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.0</version>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.6</version>
    </dependency>
    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpmime</artifactId>
      <version>4.5.14</version>
    </dependency>
  4. 提交报备信息

    图片上传成功后,使用示例代码中返回的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
    }