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


Posted in PHP onApril 06, 2021

博主使用的fastadmin 封装框架

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

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

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

效果如下:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

//隐私号码绑定
  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;//打印接口返回参数
  }

到此这篇关于PHP对接阿里云虚拟号的实现(号码隐私保护)的文章就介绍到这了,更多相关PHP对接阿里云虚拟号内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

PHP 相关文章推荐
PHP 实现多服务器共享 SESSION 数据
Aug 15 PHP
PHP显示今天、今月、上月、今年的起点/终点时间戳的代码
May 25 PHP
php数组的一些常见操作汇总
Jul 17 PHP
mac下安装nginx和php
Nov 04 PHP
PHP 二维数组根据某个字段排序的具体实现
Jun 03 PHP
PHP分页类集锦
Nov 18 PHP
php匹配字符中链接地址的方法
Dec 22 PHP
CI配置多数据库访问的方法
Mar 28 PHP
PHP入门教程之日期与时间操作技巧总结(格式化,验证,获取,转换,计算等)
Sep 11 PHP
apache集成php7.3.5的详细步骤
Jun 20 PHP
thinkPHP5框架接口写法简单示例
Aug 05 PHP
解决laravel5中auth用户登录其他页面获取不到登录信息的问题
Oct 08 PHP
PHP 对接美团大众点评团购券(门票)的开发步骤
PHP 技巧 * SVG 保存为图片(分享图生成)
Apr 02 #PHP
PHP解决高并发问题
php引用传递
Apr 01 #PHP
PhpSpreadsheet中文文档 | Spreadsheet操作教程实例
Apr 01 #PHP
PHP判断是否是json字符串
Apr 01 #PHP
php TP5框架生成二维码链接
Apr 01 #PHP
You might like
ThinkPHP的SAE开发相关注意事项详解
2016/10/09 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
2019/12/30 PHP
php操作redis数据库常见方法实例总结
2020/02/20 PHP
javascript 二进制运算技巧解析
2012/11/27 Javascript
JavaScript onkeypress事件入门实例(按下或按住一个键盘按键)
2014/10/17 Javascript
javascript实现当前页导航激活的方法
2015/02/27 Javascript
javascript中关于&& 和 || 表达式的小技巧分享
2015/04/10 Javascript
JavaScript获取两个数组交集的方法
2015/06/09 Javascript
javascript中setInterval的用法
2015/07/19 Javascript
详解JavaScript实现设计模式中的适配器模式的方法
2016/05/18 Javascript
JavaScript 闭包机制详解及实例代码
2016/10/10 Javascript
JS使用插件cryptojs进行加密解密数据实例
2017/05/11 Javascript
vue2.0 自定义日期时间过滤器
2017/06/07 Javascript
老生常谈javascript的面向对象思想
2017/08/22 Javascript
详解JavaScript 中 if / if...else...替换方式
2018/07/15 Javascript
tweenjs缓动算法的使用实例分析
2019/08/26 Javascript
在vue中利用v-html按分号将文本换行的例子
2019/11/14 Javascript
使用PYTHON接收多播数据的代码
2012/03/01 Python
Python使用xlrd读取Excel格式文件的方法
2015/03/10 Python
python中查看变量内存地址的方法
2015/05/05 Python
python更新列表的方法
2015/07/28 Python
windows10系统中安装python3.x+scrapy教程
2016/11/08 Python
解决Python中list里的中文输出到html模板里的问题
2018/12/17 Python
Pandas 缺失数据处理的实现
2019/11/04 Python
python使用openCV遍历文件夹里所有视频文件并保存成图片
2020/01/14 Python
Tensorflow中批量读取数据的案列分析及TFRecord文件的打包与读取
2020/06/30 Python
matplotlib图例legend语法及设置的方法
2020/07/28 Python
详解python os.path.exists判断文件或文件夹是否存在
2020/11/16 Python
英国知名的护肤彩妆与时尚配饰大型综合零售电商:Unineed
2016/11/21 全球购物
澳大利亚香水在线商店:City Perfume
2020/09/02 全球购物
大整数数相乘的问题
2012/07/22 面试题
2014年党员自我评议(5篇)
2014/09/12 职场文书
学生抄作业检讨书(2篇)
2014/10/17 职场文书
2015年社区工会工作总结
2015/05/26 职场文书
mysql中between的边界,范围说明
2021/06/08 MySQL
Python实现Excel文件的合并(以新冠疫情数据为例)
2022/03/20 Python