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上传文件中文文件名乱码的解决方法
Nov 01 PHP
PHP开发框架Laravel数据库操作方法总结
Sep 03 PHP
推荐25款php中非常有用的类库
Sep 29 PHP
php中JSON的使用与转换
Jan 14 PHP
PHP中使用foreach()遍历二维数组的简单实例
Jun 13 PHP
将PHP的session数据存储到数据库中的代码实例
Jun 24 PHP
PHP的消息通信机制测试实例
Nov 10 PHP
ThinkPHP Where 条件中常用表达式示例(详解)
Mar 31 PHP
PHP封装XML和JSON格式数据接口操作示例
Mar 06 PHP
thinkphp5修改view到根目录实例方法
Jul 02 PHP
thinkphp5框架调用其它控制器方法 实现自定义跳转界面功能示例
Jul 03 PHP
PHP常量及变量区别原理详解
Aug 14 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 变量类型的强制转换
2009/10/23 PHP
PHP文件打开、关闭、写入的判断与执行代码
2011/05/24 PHP
php工具型代码之印章抠图
2018/07/18 PHP
通用于ie和firefox的函数 GetCurrentStyle (obj, prop)
2006/12/27 Javascript
拉动滚动条加载数据的jquery代码
2012/05/03 Javascript
设为首页加入收藏兼容360/火狐/谷歌/IE等主流浏览器的代码
2013/03/26 Javascript
jQuery setTimeout()函数使用方法
2013/04/07 Javascript
javascript实现淘宝幻灯片广告展示效果
2015/04/27 Javascript
优化RequireJS项目的相关技巧总结
2015/07/01 Javascript
jQuery实现的简单提示信息插件
2015/12/08 Javascript
轻松实现jquery手风琴效果
2016/01/14 Javascript
js中实现字符串和数组的相互转化详解
2016/01/24 Javascript
AngularJS入门教程之AngularJS指令
2016/04/18 Javascript
Boostrap入门准备之border box
2016/05/09 Javascript
JavaScript中闭包之浅析解读(必看篇)
2016/08/25 Javascript
angular ng-click防止重复提交实例
2017/06/16 Javascript
浅谈js中的this问题
2017/08/31 Javascript
vue v-model实现自定义样式多选与单选功能
2018/07/05 Javascript
vue.js中toast用法及使用toast弹框的实例代码
2018/08/27 Javascript
javascript中的闭包概念与用法实践分析
2019/07/26 Javascript
javascript利用键盘控制小方块的移动
2020/04/20 Javascript
Vue中computed及watch区别实例解析
2020/08/01 Javascript
[01:45]亚洲邀请赛互动指南虚拟物品介绍
2015/01/30 DOTA
[01:02]DOTA2上海特锦赛SHOWOPEN
2016/03/25 DOTA
[02:23]2018DOTA2亚洲邀请赛趣味视频——反应测试
2018/04/04 DOTA
python如何读写csv数据
2018/03/21 Python
python获取指定字符串中重复模式最高的字符串方法
2018/06/29 Python
Python 写了个新型冠状病毒疫情传播模拟程序
2020/02/14 Python
Python计算信息熵实例
2020/06/18 Python
CSS3实现div从下往上滑入滑出效果示例
2020/04/28 HTML / CSS
IE9下html5初试小刀
2010/09/21 HTML / CSS
JAVA招聘远程笔试题
2015/07/23 面试题
点菜员岗位职责范本
2014/02/14 职场文书
伊琍体标语
2014/06/25 职场文书
销售会议开幕词
2016/03/04 职场文书
Python 语言实现六大查找算法
2021/06/30 Python