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有道翻译api调用方法实例
Dec 22 PHP
php截取html字符串及自动补全html标签的方法
Jan 15 PHP
PHP删除指定目录中的所有目录及文件的方法
Feb 26 PHP
php实现的简单检验登陆类
Jun 18 PHP
thinkphp微信开之安全模式消息加密解密不成功的解决办法
Dec 02 PHP
深入理解PHP中的count函数
May 31 PHP
PHP微信开发之查询城市天气
Jun 23 PHP
php文件类型MIME对照表(比较全)
Oct 07 PHP
PHP判断是手机端还是PC端 PHP判断是否是微信浏览器
Mar 15 PHP
浅谈PHP无限极分类原理
Mar 14 PHP
php libevent 功能与使用方法详解
Mar 04 PHP
详解phpstorm2020最新破解方法
Sep 17 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
php无限遍历文件夹示例分享
2014/03/04 PHP
PHP获取当前所在目录位置的方法
2014/11/26 PHP
PHP查询快递信息的方法
2015/03/07 PHP
PHP快速生成各种信息提示框的方法
2016/02/03 PHP
Javascript实例教程(19) 使用HoTMetal(3)
2006/12/23 Javascript
使用JQuery和s3captche实现一个水果名字的验证
2009/08/14 Javascript
JS 日期验证正则附asp日期格式化函数
2009/09/11 Javascript
JS继承--原型链继承和类式继承
2013/04/08 Javascript
关于javaScript注册click事件传递参数的不成功问题
2014/07/18 Javascript
JavaScript中getUTCMinutes()方法的使用详解
2015/06/10 Javascript
ECMAScript6函数默认参数
2015/06/12 Javascript
JavaScript快速切换繁体中文和简体中文的方法及网站支持简繁体切换的绝招
2016/03/07 Javascript
jQuery的Each比JS原生for循环性能慢很多的原因
2016/07/05 Javascript
JavaScript实现输入框与清空按钮联动效果
2016/09/09 Javascript
D3.js实现散点图和气泡图的方法详解
2016/09/21 Javascript
移动适配的几种方案(三种方案)
2016/11/25 Javascript
Vue.js教程之axios与网络传输的学习实践
2017/04/29 Javascript
vue-cli3搭建项目的详细步骤
2018/12/05 Javascript
react实现同页面三级跳转路由布局
2019/09/26 Javascript
Vue学习笔记之计算属性与侦听器用法
2019/12/07 Javascript
python读取一个目录下所有txt里面的内容方法
2018/06/23 Python
Python闭包函数定义与用法分析
2018/07/20 Python
Django之Mode的外键自关联和引用未定义的Model方法
2018/12/15 Python
Python pandas RFM模型应用实例详解
2019/11/20 Python
检测tensorflow是否使用gpu进行计算的方式
2020/02/03 Python
django创建超级用户时指定添加其它字段方式
2020/05/14 Python
找到您丢失的钥匙、钱包和手机:Tile
2017/05/19 全球购物
东南亚旅游平台:The Trip Guru
2018/01/01 全球购物
英国手机零售商:Metrofone
2019/03/18 全球购物
Clarks西班牙官方在线商店:clarks鞋
2019/05/03 全球购物
服务标语大全
2014/06/18 职场文书
践行党的群众路线心得体会
2014/11/05 职场文书
解除劳动合同通知书范本
2015/04/16 职场文书
公司员工离职感言
2015/08/03 职场文书
职场新人刚入职工作总结该怎么写?
2019/05/15 职场文书
MySQL 数据表操作
2022/05/04 MySQL