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的无限分类实现想法~
Jan 02 PHP
一个简单的php实现的MySQL数据浏览器
Mar 11 PHP
php下删除一篇文章生成的多个静态页面
Aug 08 PHP
PHP开发工具ZendStudio下Xdebug工具使用说明详解
Nov 11 PHP
使用php批量删除数据库下所有前缀为prefix_的表
Jun 09 PHP
php中get_object_vars()方法用法实例
Feb 08 PHP
php微信公众平台开发之获取用户基本信息
Aug 17 PHP
Symfony实现行为和模板中取得request参数的方法
Mar 17 PHP
php微信高级接口调用方法(自定义菜单接口、客服接口、二维码)
Nov 28 PHP
php 数组元素快速去重
May 05 PHP
TP5(thinkPHP框架)实现后台清除缓存功能示例
May 29 PHP
PHP dirname(__FILE__)原理及用法解析
Oct 28 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文本数据库的搜索方法
2006/10/09 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(三)
2014/06/23 PHP
详解PHP数据压缩、加解密(pack, unpack)
2016/12/17 PHP
轻松实现php文件上传功能
2017/02/17 PHP
PHP设计模式之建造者模式(Builder)原理与用法案例详解
2019/12/12 PHP
利用div+jquery自定义滚动条样式的2种方法
2013/07/18 Javascript
解析JavaScript中delete操作符不能删除的对象
2013/12/03 Javascript
node.js操作mongoDB数据库示例分享
2014/11/26 Javascript
nodejs中实现路由功能
2014/12/29 NodeJs
浅谈Javascript实现继承的方法
2015/07/06 Javascript
JS自动倒计时30秒后按钮才可用(两种场景)
2015/08/31 Javascript
Bootstrap使用基础教程详解
2016/09/05 Javascript
Easyui Datagrid自定义按钮列(最后面的操作列)
2017/07/13 Javascript
详解在vue-cli中引用jQuery、bootstrap以及使用sass、less编写css
2017/11/08 jQuery
vue1.0和vue2.0的watch监听事件写法详解
2018/09/11 Javascript
微信小程序纯文本实现@功能
2020/04/08 Javascript
解决vue props传Array/Object类型值,子组件报错的情况
2020/11/07 Javascript
[02:55]DOTA2英雄基础教程 发条技师
2013/12/04 DOTA
python实现基于SVM手写数字识别功能
2020/05/27 Python
Python+request+unittest实现接口测试框架集成实例
2018/03/16 Python
python实现批量修改图片格式和尺寸
2018/06/07 Python
python 实现按对象传值
2019/12/26 Python
Django models filter筛选条件详解
2020/03/16 Python
python如何求100以内的素数
2020/05/27 Python
深入了解python列表(LIST)
2020/06/08 Python
装上这 14 个插件后,PyCharm 真的是无敌的存在
2021/01/11 Python
HTML5中语义化 b 和 i 标签
2008/10/17 HTML / CSS
HTML5中的Web Notification桌面通知功能的实现方法
2019/07/29 HTML / CSS
C#中有没有静态构造函数,如果有是做什么用的?
2016/06/04 面试题
《盘古开天地》教学反思
2014/02/28 职场文书
奥林匹克运动会口号
2014/06/19 职场文书
温馨提示标语
2014/06/26 职场文书
婚庆公司计划书
2014/09/15 职场文书
家庭贫困证明
2014/09/23 职场文书
小学生2015教师节演讲稿
2015/03/19 职场文书
草房子读书笔记
2015/06/29 职场文书