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

news2025/1/10 23:53:00

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.coloradmin.cn/o/981805.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

医院空调冷热源设计方案VR元宇宙模拟演练的独特之处

作为一个备受关注的技术-元宇宙,毋庸置疑的是,因为建筑本身契合了时尚、前卫、高端、虚拟、科幻、泛在、协作、互通等元素特征,因此在建筑行业更需要元宇宙,以居民建筑环境冷热源设计来说,元宇宙会打破既定的现实阻碍和…

【MySQL】MySQL 数据库基础

MySQL 数据库基础 一. 数据库的操作1. 显示当前的数据库2. 创建数据库3. 使用数据库4. 删除数据库 二. 常用数据类型1. 数据类型2. 字符串类型3. 日期类型 三. 表的操作1. 查看表结构2. 创建表4. 删除表 一. 数据库的操作 1. 显示当前的数据库 SHOW DATABASES;MySQL 不区分大…

PHP设备检验系统Dreamweaver开发mysql数据库web结构php编程计算机网页代码

一、源码特点 PHP设备检验系统是一套完善的web设计系统,对理解php编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 下载地址 https://download.csdn.net/download/qq_41221322/88306259 php设备检验系统1 …

海康机器人工业相机IP设置方式

文章目录 一.什么情况下需要修改相机IP二.网口相机IP地址修改方式 一.什么情况下需要修改相机IP 二.网口相机IP地址修改方式

IO多路转接poll和epoll

文章目录 pollpoll和select的区别poll的底层实现方式什么是epollepoll执行原理epoll接口struct epoll_event是什么结构 epoll的两种触发方式epoll底层实现epoll总结 poll #include <poll.h> int poll(struct pollfd *fds, nfds_t nfds, int timeout);参数&#xff1a; …

大数据(八):Pandas的基础应用详解(五)

专栏介绍 结合自身经验和内部资料总结的Python教程&#xff0c;每天3-5章&#xff0c;最短1个月就能全方位的完成Python的学习并进行实战开发&#xff0c;学完了定能成为大佬&#xff01;加油吧&#xff01;卷起来&#xff01; 全部文章请访问专栏&#xff1a;《Python全栈教…

MySQL表的CURD

CRUD : Create(创建), Retrieve(读取)&#xff0c;Update(更新)&#xff0c;Delete&#xff08;删除&#xff09; Create 语法 INSERT [INTO] table_name [(column [, column] ...)] VALUES (value_list) [, (value_list)] ... value_list: value, [, value] ... 示例&#x…

第 2 章 线性表(学生健康登记表实现)

1. 示例代码 1) status.h /* DataStructure 预定义常量和类型头文件 */#ifndef STATUS_H #define STATUS_H/* 函数结果状态码 */ #define TRUE 1 /* 返回值为真 */ #define FALSE 0 /* 返回值为假 */ #define RET_OK 0 /* 返回值正确 */ #define INFEASI…

Datax抽取mysql的bit类型数据

背景&#xff1a;使用datax抽取mysql的一张表&#xff0c;里面有两个bit类型的字段&#xff0c;抽取出来显示如下&#xff1a; 需要在抽取reader里面进行处理配置 最终生成的datax的json文件reader的配置会转换为具体的数值 最终查询效果&#xff1a;

python1图书点评推荐系统的设计与实现vue

本次设计任务是要设计一个图书点评网&#xff0c;通过这个系统能够满足用户对图书信息下载、收藏功能。系统的主要功能包括&#xff1a;首页、个人中心、用户管理、图书分类管理、图书信息管理、留言板管理、系统管理等功能。 管理员可以根据系统给定的账号进行登录&#xff0c…

新版edge浏览器读取谷歌浏览器上的历史记录

上一篇&#xff1a;(3条消息) 新版edge浏览器读取谷歌浏览器上的历史记录_learningbilibili的博客-CSDN博客https://blog.csdn.net/learningbilibili/article/details/123662218 关于上次的读取历史记录的问题是现在的edge浏览器最近的版本更新后出现了每次启动时从 Google Chr…

为IT服务台构建自定义Zia操作

Zia是manageengine的商业人工智能助手&#xff0c;是ServiceDesk Plus Cloud的虚拟会话支持代理。使用Zia&#xff0c;您可以优化帮助台管理&#xff0c;还可以缩小最终用户与其帮助台之间的差距&#xff0c;Zia通过执行预配置的操作来帮助用户完成他们的服务台任务。 例如&…

【Linux】线程池读写锁

文章目录 线程池应用场景线程池原理构造线程池代码实现 读写锁应用场景读写锁的三种状态读写锁的接口初始化接口销毁接口以读模式加锁以写模式加锁解锁接口 常见问题 乐观锁/悲观锁乐观锁悲观锁自旋锁 线程池 应用场景 线程池不仅要提高程序运行效率&#xff0c;还要提高程序…

读SQL学习指南(第3版)笔记13_读后总结与感想兼导读

1. 基本信息 SQL学习指南(第3版) Learning SQL, Third Edition [美] 艾伦博利厄 &#xff08;Alan Beaulieu&#xff09; 人民邮电出版社,2022年4月出版 1.1. 读薄率 书籍总字数424千字&#xff0c;笔记总字数25969字。 读薄率25969424000≈6.13% 1.2. 读厚方向 SQL入门经…

探索多线程编程:线程的本质、状态和属性

目录 什么是线程线程状态新建线程可运行线程阻塞和等待线程终止线程 线程属性优先级线程名守护线程中断线程未捕获异常的处理器 在现代计算机编程中&#xff0c;多线程是一个重要而强大的概念。它使得我们能够更有效地利用多核处理器、提高程序性能并实现并发操作。 什么是线程…

docker从零部署jenkins保姆级教程(下)

上一篇文章&#xff0c;我们完成了以下工作。 1)、docker部署jenkins 2)、建立第一个jenkins job 3)、通过jenkins job自动编译构建我们的github项目 上面所做的3个工作&#xff0c;其实都是为了这一篇文章打基础&#xff0c;不管是部署docker还是部署jenkins&#xff0c;我们最…

d435i 相机和imu标定

一、IMU 标定 使用 imu_utils 功能包标定 IMU&#xff0c;由于imu_utils功能包的编译依赖于code_utils&#xff0c;需要先编译code_utils&#xff0c;主要参考 相机与IMU联合标定_熊猫飞天的博客-CSDN博客 Ubuntu20.04编译并运行imu_utils&#xff0c;并且标定IMU_学无止境的…

补码:将减法运算转化为另一种形式的加法运算

文章目录 解析 个人见解&#xff0c;如有错误&#xff0c;请多包涵。 解析 对于人来说&#xff0c;减法是简单容易的。 被减数和减数列式相减&#xff0c;从低位到高位分别计算&#xff0c;有需要的借位就可以了。 这是一种可以在计算机上成立的理论方案&#xff0c;但是由于…

SpringMVC常用注解介绍及参数传递说明

前言 上一篇文章介绍了SpringMVC是什么以及它的工作流程和核心组件&#xff0c;介绍入门示例时&#xff0c;提到了RequestMapping注解&#xff0c;那么这篇文章就来介绍SpringMVC中更多的常用的注解&#xff0c;以及它的参数传递。 一. SpringMVC常用注解 1.1 RequestParam …

Homebrew安装cocoapods: zsh: command not found: brew解决方法

问题描述: 通过Homebrew安装cocoapods时,输入命令行 brew install cocoapods出现如下报错: zsh: command not found: brew zsh:找不到命令&#xff1a;brew 问题解决: 使用以下命令,重新安装Homebrew. /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/ra…