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 相关文章推荐
Mysql的GROUP_CONCAT()函数使用方法
Mar 28 PHP
php htmlspecialchars加强版
Feb 16 PHP
php中的一些数组排序方法分享
Jul 20 PHP
解析htaccess伪静态的规则
Jun 18 PHP
php根据一个给定范围和步进生成数组的方法
Jun 19 PHP
php获取、检查类名、函数名、方法名的函数方法
Jun 25 PHP
php上传图片生成缩略图(GD库)
Jan 06 PHP
php上传大文件设置方法
Apr 14 PHP
php 解决扫描二维码下载跳转问题
Jan 13 PHP
php实现的mongoDB单例模式操作类
Jan 20 PHP
Laravel使用Queue队列的技巧汇总
Sep 02 PHP
laravel ajax curd 搜索登录判断功能的实现
Apr 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
允许phpmyadmin空密码登录的配置方法
2011/05/29 PHP
php 获取百度的热词数据的代码
2012/02/18 PHP
php如何实现不借助IDE快速定位行数或者方法定义的文件和位置
2017/01/17 PHP
IIS 7.5 asp Session超时时间设置方法
2017/04/17 PHP
php微信开发之关键词回复功能
2018/06/13 PHP
PHP网站常见安全漏洞,及相应防范措施总结
2021/03/01 PHP
不错的一个日期输入 动态
2006/11/06 Javascript
javascript编程起步(第五课)
2007/02/27 Javascript
JavaScript Prototype对象
2009/01/07 Javascript
js转义字符介绍
2013/11/05 Javascript
javascript调试过程中找不到哪里出错的可能原因
2013/12/16 Javascript
js实现动态改变字体大小代码
2014/01/02 Javascript
js定时器的使用(实例讲解)
2014/01/06 Javascript
JavaScript实现按Ctrl键打开新页面
2014/09/04 Javascript
js实现移动端微信页面禁止字体放大
2017/02/16 Javascript
EasyUI为Numberbox添加blur事件的方法
2017/03/05 Javascript
javascript编程实现栈的方法详解【经典数据结构】
2017/04/11 Javascript
js获取元素的偏移量offset简单方法(必看)
2017/07/05 Javascript
从0到1构建vueSSR项目之路由的构建
2019/03/07 Javascript
详解小程序用户登录状态检查与更新实例
2019/05/15 Javascript
原生JS实现九宫格抽奖
2020/09/13 Javascript
[02:37]2018DOTA2亚洲邀请赛赛前采访-EG篇
2018/04/03 DOTA
[48:38]DOTA2亚洲邀请赛 3.31 小组赛 B组 Mineski vs Secret
2018/03/31 DOTA
[10:21]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster 选手采访
2021/03/11 DOTA
numpy中索引和切片详解
2017/12/15 Python
itchat-python搭建微信机器人(附示例)
2019/06/11 Python
python 接口实现 供第三方调用的例子
2019/08/13 Python
Python中内建模块collections如何使用
2020/05/27 Python
scrapy实践之翻页爬取的实现
2021/01/05 Python
如何用python实现一个HTTP连接池
2021/01/14 Python
聪明的粉丝购买门票的地方:TickPick
2018/03/09 全球购物
医大实习自我鉴定
2013/12/07 职场文书
四年级数学教学反思
2014/02/02 职场文书
房产销售独家委托书范本
2014/10/01 职场文书
党的群众路线教育实践活动个人自我剖析材料
2014/10/07 职场文书
旷工辞退通知书
2015/04/17 职场文书