PHP对接阿里云虚拟号的实现(号码隐私保护)

fastadmin 封装框架

实现功能:AXN隐私号绑定、解绑;

场景:为店铺手机号开通虚拟号,用户联系店铺展示虚拟号码;

官方开放文档地址:https://help.aliyun.com/document_detail/59655.html?spm=a2c4g.11174283.6.661.b8365d50CKM5Ma

效果如下:

参考官网开放文档,下载SDK;解压得到 aliyun-dypls-php-sdk 文件夹;

将解压的文件夹内的 api_sdk 文件夹与 api_demo 文件夹内的 PlsDemo.php,拷贝到项目 vendor 目录下,笔者这里是放在了yinsi文件夹

随后打开 PlsDemo.php文件,修改 getAcsClient 方法内对应的 AccessKeyId、AccessKeySecret

还是PlsDemo.php文件,修改绑定时的号码池

还是PlsDemo.php文件,修改解绑时的号码池

最后在用户列表控制器内,添加以下代码:


/*** 编辑*/public function edit($ids = null){$row = $this->model->get($ids);if (!$row) {$this->error(__('No Results were found'));}$adminIds = $this->getDataLimitAdminIds();if (is_array($adminIds)) {if (!in_array($row[$this->dataLimitField], $adminIds)) {$this->error(__('You have no permission'));}}if ($this->request->isPost()) {$params = $this->request->post("row/a");if ($params) {
//        print_r($params);exit;//开通虚拟号if ($params['privacydata'] == '2'){vendor("yinsi.PlsDemo");$response = \PlsDemo::bindAxn($params['mobile']) ;if ($response->Code == 'OK'){$params['privacy_tel'] = $response->SecretBindDTO->SecretNo;$params['subsid'] = $response->SecretBindDTO->SubsId;}else{$this->error($response->Message);}}else{vendor("yinsi.PlsDemo");$response = \PlsDemo::unbindSubscription($params['subsid'],$params['privacy_tel']) ;if ($response->Code == 'OK'){$params['privacy_tel'] = '';$params['subsid'] = '';}};$params = $this->preExcludeFields($params);$result = false;Db::startTrans();try {//是否采用模型验证if ($this->modelValidate) {$name = str_replace("\\model\\", "\\validate\\", get_class($this->model));$validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.edit' : $name) : $this->modelValidate;$row->validateFailException(true)->validate($validate);}$result = $row->allowField(true)->save($params);Db::commit();} catch (ValidateException $e) {Db::rollback();$this->error($e->getMessage());} catch (PDOException $e) {Db::rollback();$this->error($e->getMessage());} catch (Exception $e) {Db::rollback();$this->error($e->getMessage());}if ($result !== false) {$this->success();} else {$this->error(__('No rows were updated'));}}$this->error(__('Parameter %s can not be empty', ''));}$this->view->assign("row", $row);return $this->view->fetch();}

与原始的修改方法区别如下接口描述:

不需要后台管理的笔友,用以下代码:

简单的通过接口绑定、解绑虚拟号。 

//隐私号码绑定public function yinsi(){$type = $this->request->request('type');//1绑定2解绑$mobile = $this->request->request('mobile');//需要绑定的手机号vendor("yinsi.PlsDemo");$response = \PlsDemo::bindAxn($mobile) ;print_r($response);exit;//打印接口返回参数}//隐私号码解绑public function Unbundling(){$subsid = $this->request->request('subsid');//绑定接口中返回的subsId;$secretNo = $this->request->request('secretNo');//绑定接口中返回的secretNo;vendor("yinsi.PlsDemo");$response = \PlsDemo::unbindSubscription($subsid,$secretNo) ;print_r($response);exit;//打印接口返回参数}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/125142.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

闪存芯片的冷知识

闪存芯片不带电存储数据的原理 闪存芯片是一种非易失性的存储器,即它可以在断电后保持数据不丢失。闪存芯片的核心部分是浮栅晶体管(Floating Gate Transistor),它是一种特殊的MOSFET(金属氧化物半导体场效应晶体管&a…

深度学习环境搭建笔记(二):mmdetection-CPU安装和训练

文章目录 第一步:安装anaconda第二步:安装虚拟环境第三步:安装torch和torchvision第四步: 安装mmcv-full第五步: 安装mmdetection第六步:测试环境第七步:训练-目标检测7.1 准备数据集7.2 检查数据集7.3 训练网络 第一步…

微服务[Nacos]

CAP 1)一致性(Consistency) (所有节点在同一时间具有相同的数据) 2)可用性(Availability)(保证每个请求不管成功或者失败都有响应) 3)分区容错(Partition tolerance)(系统中任意信息的丢失或失败不会影响系统的继续运作) 一、虚拟机镜像准备 …

Tomcat 安装

1.关闭防火墙 2.安装JDK包 3. 4。添加环境变量 5.刷新配置文件 6.解压文件 7.启动tomcat 8. 9.编写tomcat.service文件 vim /etc/systemd/system/tomcat.service 10.刷新服务 11.打开浏览器访问:192.168.2.100:8080/,正常可以看到以下界面

Web3.0时代什么时候到来,Web3.0有什么机会?

🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师…

cookies 设置过期时间

1.如何在浏览器中查看cookie过期时间 F12-Application-Cookies可以查看到网页所有设置cookie值, 如果设置了过期时间的cookie是可以看到过期时间的持久cookie(persistent cookie), 没有设置过期时间的是会话cookie(s…

智安网络|面临日益增长的安全威胁:云安全和零信任架构的重要性

随着云计算技术的快速发展和广泛应用,云安全和零信任架构变得愈发重要。在数字化时代,云计算技术得到了广泛的应用和推广。企业和组织借助云服务提供商的强大能力,实现了高效、灵活和可扩展的IT基础设施。然而,随着云环境的快速发…

继承和组合

C中,继承和组合是面向对象编程中的两种重要的代码复用方式。 继承is-a 通常用于描述父子的关系,比如植物-花。 组合has-a通常用于描述整体与部分的关系,比如一个汽车由引擎、轮胎等部件组成。 下面是一个简单的示例来说明继承和组合的使用…

OceanBase 4.1解读:读写兼备的DBLink让数据共享“零距离”

梁长青,OceanBase 高级研发工程师,从事 SQL 执行引擎相关工作,目前主要负责 DBLink、单机引擎优化等方面工作。 沈大川,OceanBase 高级研发工程师,从事 SQL 执行引擎相关工作,曾参与 TPC-H 项目攻坚&#x…

Windows安装单节点Zookeeper

刚学习Dubbo,在Centos7中docker安装的zookeeper3.7.1。然后在启动provider时一直报错,用尽办法也没有解决。然后zookeeper相关的知识虽然以前学习过,但是已经忘记的差不多了。现在学习dubbo只能先降低版本使用了,之后再复习zookee…

2023年高教社杯数学建模国赛C题详细版思路

C 题 蔬菜类商品的自动定价与补货决策 2023年国赛如期而至,为了方便大家尽快确定选题,这里将对C题进行解题思路说明,以分析C题的主要难点、出题思路以及选择之后可能遇到的难点进行说明,方便大家尽快找到C题的解题思路。 难度排…

Notepad++ 的安装及配置

由于电脑重装了Win11系统,干脆重头开始,重新安装每一个软件~~~ 很多博客或者博主都会推荐notepad的官网:https://notepad-plus-plus.org/ 但大家亲自点开就会发现是无响应,如下图 同时,也会有很多博主直接给网盘地址…

微信分账报错1908(请求中含有未在API文档中定义的参数)

开发指引-分账 | 微信支付合作伙伴平台文档中心 问题描述:根据微信分账文档,在下单接口添加是否分账参数后,报错如下 Client error: POST https://api.mch.weixin.qq.com/v3/pay/partner/transactions/jsapi 400 Bad Request {"code…

激光切割机在现代灯具的生产过程中的应用

灯饰在现代家庭装修中承担着举足轻重的角色,随着人类生活水平的提升,对家居用品的要求愈发严格,作为家庭装饰的必备品,灯饰从满足功能性需求转向追求个性化定制需求。 金属本身具有独特的质感,与个性化激光图案相结合&…

开启Clash和系统代理后Chrome无法打开网页但Edge正常

今天早上打开电脑准备摸鱼,发现Chrome打不开网页了。检查Clash正常,切换了节点,依然不行。关闭系统的代理可以解决。不然只提示ERR_TIMED_OUT。 各种研究配置,然后发现Edge却又不受影响。 通过火绒发现Chrome是有连接到7890端口的…

电商类面试问题--01Elasticsearch与Mysql数据同步问题

在实现基于关键字的搜索时,首先需要确保MySQL数据库和ES库中的数据是同步的。为了解决这个问题,可以考虑两层方案。 全量同步:全量同步是在服务初始化阶段将MySQL中的数据与ES库中的数据进行全量同步。可以在服务启动时,对ES库进…

2023年03月 C/C++(八级)真题解析#中国电子学会#全国青少年软件编程等级考试

C/C编程&#xff08;1~8级&#xff09;全部真题・点这里 第1题&#xff1a;最短路径问题 平面上有n个点&#xff08;n<100&#xff09;&#xff0c;每个点的坐标均在-10000~10000之间。其中的一些点之间有连线。 若有连线&#xff0c;则表示可从一个点到达另一个点&#xff…

运维Shell脚本小试牛刀(七):在函数文脚本件中调用另外一个脚本文件中函数|函数递归调用|函数后台执行

运维Shell脚本小试牛刀(一) 运维Shell脚本小试牛刀(二) 运维Shell脚本小试牛刀(三)::$(cd $(dirname $0)&#xff1b; pwd)命令详解 运维Shell脚本小试牛刀(四): 多层嵌套if...elif...elif....else fi_蜗牛杨哥的博客-CSDN博客 Cenos7安装小火车程序动画 运维Shell脚本小试…

Blender中的高级边缘控制和纹理映射

推荐&#xff1a;使用 NSDT场景编辑器 快速搭建3D应用场景 步骤 1 首先&#xff0c;您需要创建一组无阴影材质&#xff0c;每种材质具有不同的颜色&#xff0c;确保您有足够的材质来覆盖模型&#xff0c;而不会有相同的颜色相互重叠。然后&#xff0c;切换到“着色”&#xff…

前端自动化部署,Devops,CI/CD

DevOps 提到 Jenkins&#xff0c;想到的第一个概念就是 CI/CD 在这之前应该再了解一个概念。 DevOps Development 和 Operations 的组合&#xff0c;是一种方法论&#xff0c;并不特指某种技术或者工具。DevOps 是一种重视 Dev 开发人员和 Ops 运维人员之间沟通、协作的流程。…