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代码的53条建议
Mar 27 PHP
php中文字符截取防乱码
Mar 28 PHP
php实现向javascript传递数组的方法
Jul 27 PHP
php实现递归的三种基本方式
Jul 04 PHP
Linux(CentOS)下PHP扩展PDO编译安装的方法
Apr 07 PHP
Yii CDBCriteria常用方法实例小结
Jan 19 PHP
PHPCMS手机站伪静态设置详细教程
Feb 06 PHP
ThinkPHP中类的构造函数_construct()与_initialize()的区别详解
Mar 13 PHP
在 Laravel 中 “规范” 的开发短信验证码发送功能
Oct 26 PHP
php post换行的方法
Feb 03 PHP
php数值计算num类简单操作示例
May 15 PHP
PhpStorm连接服务器并实现自动上传功能
Dec 09 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
3.从实例开始
2006/10/09 PHP
PHP 小心urldecode引发的SQL注入漏洞
2011/10/27 PHP
四个PHP非常实用的功能
2015/09/29 PHP
PHP环境中Memcache的安装和使用
2015/11/05 PHP
PHP设计模式之简单工厂和工厂模式实例分析
2019/03/25 PHP
laravel-admin自动生成模块,及相关基础配置方法
2019/10/08 PHP
才发现的超链接js导致网页中GIF动画停止的解决方法
2007/11/02 Javascript
javascript 跳转代码集合
2009/12/03 Javascript
JavaScript学习笔记(十)
2010/01/17 Javascript
chrome下判断点击input上标签还是其余标签的实现方法
2016/09/18 Javascript
KnockoutJS 3.X API 第四章之事件event绑定
2016/10/10 Javascript
vuejs开发组件分享之H5图片上传、压缩及拍照旋转的问题处理
2017/03/06 Javascript
使用vue与jquery实时监听用户输入状态的操作代码
2017/09/19 jQuery
vue实现Excel文件的上传与下载功能的两种方式
2019/06/28 Javascript
Vue——前端生成二维码的示例
2020/12/19 Vue.js
[52:26]完美世界DOTA2联赛决赛 FTD vs Phoenix 第一场 11.08
2020/11/11 DOTA
完美解决python遍历删除字典里值为空的元素报错问题
2016/09/11 Python
Python的标准模块包json详解
2017/03/13 Python
python学习教程之Numpy和Pandas的使用
2017/09/11 Python
python将一个英文语句以单词为单位逆序排放的方法
2018/12/20 Python
python使用suds调用webservice接口的方法
2019/01/03 Python
PyQt5图形界面播放音乐的实例
2019/06/17 Python
python pyinstaller打包exe报错的解决方法
2019/11/02 Python
PyTorch加载预训练模型实例(pretrained)
2020/01/17 Python
python实现用类读取文件数据并计算矩形面积
2020/01/18 Python
python matplotlib.pyplot.plot()参数用法
2020/04/14 Python
pycharm不以pytest方式运行,想要切换回普通模式运行的操作
2020/09/01 Python
关于多种方式完美解决Python pip命令下载第三方库的问题
2020/12/21 Python
Html5 video标签视频的最佳实践
2020/02/26 HTML / CSS
Yves Rocher捷克官方网站:植物化妆品的创造者
2019/07/31 全球购物
《九寨沟》教学反思
2014/04/08 职场文书
2014年党员评议表自我评价
2014/09/27 职场文书
支部书记四风问题对照检查材料
2014/10/04 职场文书
升职自荐信怎么写
2015/03/05 职场文书
家装电话营销开场白
2015/05/29 职场文书
2015年度工程师评职称工作总结
2015/10/14 职场文书