1、首先去阿里云申请号码隐私保护服务,申请号码池以及专属号码,获取有效的阿里云AK。

2、导入以下两个依赖

<dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-dyplsapi</artifactId><version>1.2.0</version></dependency><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.1.0</version></dependency>

3、在yml文件中写入有效的AK

oss:product: Dyplsapidomain: dyplsapi.aliyuncs.comaccessKeyId: XXXXXXXXXXXXXXXXXXXXXXaccessKeySecret: XXXXXXXXXXXXXXXX

4、调用代码

/*** 阿里云号码隐私拨号保护API** @author shiwen* @date 2020/9/15*/
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.dyplsapi.model.v20170525.*;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;@Configuration
public class PhoneEncryption {@Autowiredprivate RedisUtils redisUtils;@Value("${oss.product}")private String product;@Value("${oss.domain}")private String domain;@Value("${oss.accessKeyId}")private String accessKeyId;@Value("${oss.accessKeySecret}")private String accessKeySecret;/*** AXB绑定示例** @return* @throws ClientException*/public BindAxbResponse bindAxb(String phoneA, String phoneB) throws ClientException {//设置超时时间-可自行调整System.setProperty("sun.net.client.defaultConnectTimeout", "10000");System.setProperty("sun.net.client.defaultReadTimeout", "10000");//初始化ascClient,暂时不支持多regionIClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);IAcsClient acsClient = new DefaultAcsClient(profile);//AXB绑定请求结构体-参数说明详见参数说明BindAxbRequest request = new BindAxbRequest();//必填:号池Key-详见概览页面的号池管理功能request.setPoolKey("XXXXXXXXXXXXXX");//必填:AXB关系中的A号码request.setPhoneNoA(phoneA);//必选:AXB中的B号码request.setPhoneNoB(phoneB);//可选:指定X号码选号request.setPhoneNoX("XXXXXXXXXXXXXX");//可选:指定需要分配归属城市的X号码//request.setExpectCity("北京');//必填:绑定关系对应的失效时间-不能早于当前系统时间(100秒)request.setExpiration(DateTimeHelper.timestampToLocalDateTimeStr((System.currentTimeMillis() + 100000L)));//可选:是否需要录制音频-默认是falserequest.setIsRecordingEnabled(false);//hint 此处可能会抛出异常,注意catchBindAxbResponse response = acsClient.getAcsResponse(request);if (response.getCode() != null && response.getCode().equals("OK")) {//请求成功return response;}return null;}/*** 订购关系解绑示例(解绑接口不区分AXB、AXN)** @return* @throws ClientException*/public UnbindSubscriptionResponse unbind(String subsId, String secretNo) throws ClientException {//可自助调整超时时间System.setProperty("sun.net.client.defaultConnectTimeout", "10000");System.setProperty("sun.net.client.defaultReadTimeout", "10000");//初始化acsClient,暂不支持region化IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);IAcsClient acsClient = new DefaultAcsClient(profile);//组装请求对象UnbindSubscriptionRequest request = new UnbindSubscriptionRequest();//必填:对应的号池Keyrequest.setPoolKey("XXXXXXXXXXXXXXXXXXXX");//必填-分配的X小号-对应到绑定接口中返回的secretNo;request.setSecretNo(secretNo);//可选-绑定关系对应的ID-对应到绑定接口中返回的subsId;request.setSubsId(subsId);UnbindSubscriptionResponse response = acsClient.getAcsResponse(request);return response;}public Boolean phoneEncryption(String phoneA, String phoneB) {// 这一步需要先拿到最新的redis保存的subsId, 解绑我们的隐私号码, 然后才能进行电话的拨打操作String cacheSubsId = redisUtils.get(CACHE_KEY);// 如果数据库中已经存在subsId的话, 就直接让它失效if (GeneralUtil.isNotNullAndEmpty(cacheSubsId)) {try {// 解绑之前的手机号unbind(cacheSubsId, "XXXXXXXXXXXXXXXXXXXX");} catch (ClientException e) {e.printStackTrace();}}// 如果subsId不为空的话,就直接绑定AXBBindAxbResponse axbResponse = null;try {axbResponse = bindAxb(phoneA, phoneB);} catch (ClientException e) {e.printStackTrace();}String axbSubsId = axbResponse.getSecretBindDTO() == null ? null : axbResponse.getSecretBindDTO().getSubsId();if (GeneralUtil.isObjNotNull(axbResponse) && GeneralUtil.isNotNullAndEmpty(axbSubsId)) {redisUtils.set(CACHE_KEY, axbSubsId);LogUtil.info("Processing phoneEncryption success!Code = %s , RequestId = %s , subsId = %s", axbResponse.getCode(), axbResponse.getRequestId(), axbSubsId);return true;}return false;}}

Springboot项目调用阿里云号码隐私保护服务【真实有用】相关推荐

  1. Java对接阿里云号码隐私保护

    一.前期准备 阿里云号码隐私保护地址:https://help.aliyun.com/document_detail/110258.htm 二.目前需求概括 配送服务 需要将用户手机号脱敏处理 配送员 ...

  2. springboot项目调用阿里云短信接口(包括短信上行)

    最近一直在做项目,很久没有写过博客了,最近做的一个项目中遇到了一个业务需要用到短信功能包括了发送短信和短信回复之后要收到回复内容,阿里云短信服务是一个非常好的平台,里面提供了多种短信接口可以供我们使用 ...

  3. 你还在担心用户的真实号码被泄露?号码隐私保护服务PNS来了

    奥地利著名作家茨威格的小说<一个陌生女人的来信>,告诉我们一件事,只要你不使用真实姓名,对方很难发现你是谁.而这要在互联网时代,即使你的名字从"苏大强"到"朝 ...

  4. springboot项目整合阿里云oss的内容审核

    springboot项目整合阿里云 内容审核 第一 添加依赖 <dependency><groupId>com.aliyun</groupId><artifa ...

  5. 华为云号码隐私保护AXB AXYB模式代码二次封装

    在华为云号码隐私保护给的样例代码上进行二次封装 controller import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSO ...

  6. java:阿里云号码隐私服务使用

    阿里云号码隐私服务使用 产品最近的需求是,客户通过短链接点过预约之后,门店店员收到意向后联系客户进行引导,同时要对双方的号码进行隐私保护 (前提:入驻阿里云,获取阿里云访问密钥,开通号码隐私保护服务) ...

  7. 利用Jenkins自动化部署springboot项目到阿里云服务器(centos8)

    背景: 最近想部署一个springboot项目到阿里云服务器里面.捣鼓了很久,构建了很多次,都失败了!实在是一脸辛酸,有点气馁~ 在此想记录一下构建的过程. 不了解Jenkins之前,觉得Jenkin ...

  8. 阿里通信为饿了么提供号码隐私保护服务 最快6月上线

    用饿了么叫外卖,今后用户的个人信息将完全受到保护. 近日,阿里通信和饿了么共同宣布,饿了么最快将在6月份上线由阿里通信提供的号码隐私保护服务,每一笔订单的买家姓名.手机号等信息都作自动屏蔽处理,用户无 ...

  9. 号码隐私保护服务:保障亿万消费者的隐私安全

    如何从繁杂的数据指标中精确识别出异常情况,是保障系统高可用的关键. 一.引言 近年来,针对电商的电信诈骗层出不穷. 不法分子借助非法手段获取到消费者的个人信息,假冒电商客服人员:利用"退换货 ...

最新文章

  1. [C#]从URL中获取路径的最简单方法-new Uri(url).AbsolutePath
  2. shell中uniq与sort -u 两种去重的对别
  3. Java 内存区域和GC机制
  4. offsetLeft 、offsetWidth、scrollHeight等的区别
  5. DataGrid内容的导出
  6. boost::function_types::is_function_reference的测试程序
  7. 【CV论文阅读】Rank Pooling for Action Recognition
  8. Google安装Kopernio插件
  9. javaweb(11) Listener监听器与Filter过滤器
  10. $.ajax和$.post的区别(前者根据key-value/后者根据形参)
  11. 怎么中文读_来新国大读中文系是一种怎样的体验?
  12. html-mp3格式转换器,mp3格式转换器
  13. 用Excel和Python编程完成线性规划问题的求解
  14. 使用C语言编写一个算数的除法运算(保留n位小数)
  15. 《信息安全技术—个人信息安全影响评估指南》pdf下载
  16. Unity3D Terrain 变成粉色(紫色/洋红色)解决方案!
  17. VUE Router Error matched of undefined
  18. Android安卓身份证识别SDK
  19. 币图_教你什么是IM 去中心化概念模型与架构设计
  20. web网页设计期末课程大作业:我的家乡文化主题网站设计——山西

热门文章

  1. Python实现自动发送B站直播弹幕软件
  2. Matlab中xticklabels如何换行?
  3. freesurfer并行处理体会
  4. FreeSurfer 安装(Ubuntu20.04)
  5. 梯度消亡--学习笔记
  6. 全球及中国冷链物流产业需求前景与投资竞争力研究报告2022版
  7. 导致403错误的原因和解决方法
  8. 王者该服务器未获取角色信息,王者荣耀荣耀榜尚未获取定位信息是怎么回事[多图]...
  9. 201712 CCF
  10. spring boot课程评价系统毕业设计源码211004