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开启安全模式后禁用的函数集合
Jun 26 PHP
PHP+Memcache实现wordpress访问总数统计(非插件)
Jul 04 PHP
ThinkPHP中使用ajax接收json数据的方法
Dec 18 PHP
php从数组中随机选择若干不重复元素的方法
Mar 14 PHP
php检查字符串中是否有外链的方法
Jul 29 PHP
PHP 生成微信红包代码简单
Mar 25 PHP
PHP实现加密文本文件并限制特定页面的存取的效果
Oct 21 PHP
php+redis在实际项目中HTTP 500: Internal Server Error故障排除
Feb 05 PHP
浅谈Yii乐观锁的使用及原理
Jul 25 PHP
php实现微信原生支付(扫码支付)功能
May 30 PHP
PHP中PCRE正则解析代码详解
Apr 26 PHP
使用swoole 定时器变更超时未支付订单状态的解决方案
Jul 24 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用正则表达式匹配中文实例详解
2013/11/06 PHP
php获取表单中多个同名input元素的值
2014/03/20 PHP
php基于mcrypt的加密解密实例
2014/10/27 PHP
php购物车实现方法
2015/01/03 PHP
PHP对称加密函数实现数据的加密解密
2016/10/27 PHP
PHP实现转盘抽奖算法分享
2020/04/15 PHP
Laravel 添加多语言提示信息的方法
2019/09/29 PHP
做网页的一些技巧
2007/02/01 Javascript
JavaScript Cookie 直接浏览网站分网址
2009/12/08 Javascript
Javascript 检测键盘按键信息及键码值对应介绍
2013/01/03 Javascript
javascipt基础内容--需要注意的细节
2013/04/10 Javascript
JavaScript中的索引数组、关联数组和静态数组、动态数组讲解
2014/11/08 Javascript
深入分析jquery解析json数据
2014/12/09 Javascript
js实现带按钮的上下滚动效果
2015/05/12 Javascript
jquery实现简单实用的打分程序实例
2015/07/23 Javascript
将页面table内容与样式另存成excel文件的方法
2015/08/05 Javascript
JS+DIV+CSS实现的经典标签切换效果代码
2015/09/14 Javascript
JS解决iframe之间通信和自适应高度的问题
2016/08/24 Javascript
JS轮播图实现简单代码
2021/02/19 Javascript
checkbox:click事件触发span元素内容改变的方法
2017/09/11 Javascript
React/Redux应用使用Async/Await的方法
2017/11/16 Javascript
详解Node.JS模块 process
2020/08/31 Javascript
解决DataFrame排序sort的问题
2018/06/07 Python
python pandas实现excel转为html格式的方法
2018/10/23 Python
Python 多维List创建的问题小结
2019/01/18 Python
解决安装pycharm后不能执行python脚本的问题
2019/01/19 Python
在python中对变量判断是否为None的三种方法总结
2019/01/23 Python
使用PIL(Python-Imaging)反转图像的颜色方法
2019/01/24 Python
Python使用pandas和xlsxwriter读写xlsx文件的方法示例
2019/04/09 Python
python判断所输入的任意一个正整数是否为素数的两种方法
2019/06/27 Python
对python特殊函数 __call__()的使用详解
2019/07/02 Python
Python lambda表达式原理及用法解析
2020/08/18 Python
大班上学期幼儿评语
2014/04/30 职场文书
先进班组材料范文
2014/12/25 职场文书
检讨书模板大全
2015/05/07 职场文书
解决Mysql报错 Table 'mysql.user' doesn't exist
2022/05/06 MySQL