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 smarty模版引擎中的缓存应用
Dec 11 PHP
php 获取一个月第一天与最后一天的代码
May 16 PHP
php下目前为目最全的CURL中文说明
Aug 01 PHP
php数组函数序列之in_array() 查找数组值是否存在
Oct 29 PHP
PHP使用GIFEncoder类生成gif动态滚动字幕
Jul 01 PHP
ThinkPHP中处理表单中的注意事项
Nov 22 PHP
PHP中的Trait 特性及作用
Apr 03 PHP
深入了解PHP中的Array数组和foreach
Nov 06 PHP
详谈配置phpstorm完美支持Codeigniter(CI)代码自动完成(代码提示)
Apr 07 PHP
PHP时间戳和日期相互转换操作实例小结
Dec 18 PHP
PHP-FPM和Nginx的通信机制详解
Feb 01 PHP
PHP FileSystem 文件系统常用api整理总结
Jul 12 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
SONY ICF-F10中波修复记
2021/03/02 无线电
解析PHP中的file_get_contents获取远程页面乱码的问题
2013/06/25 PHP
php中的strpos使用示例
2014/02/27 PHP
php使用cookie保存登录用户名的方法
2015/01/26 PHP
php实现Mongodb自定义方式生成自增ID的方法
2015/03/23 PHP
PHP错误机制知识汇总
2016/03/24 PHP
php微信开发之上传临时素材
2016/06/24 PHP
PHP中的self关键字详解
2019/06/23 PHP
IE6/7/8/9不支持exec的简写方式
2011/05/25 Javascript
Javascript Throttle & Debounce应用介绍
2013/03/19 Javascript
有关于JS辅助函数inherit()的问题
2013/04/07 Javascript
浅析js中的浮点型运算问题
2014/01/06 Javascript
一个JavaScript递归实现反转数组字符串的实例
2014/10/14 Javascript
js Object2String方便查看js对象内容
2014/11/24 Javascript
jQuery选择器源码解读(四):tokenize方法的Expr.preFilter
2015/03/31 Javascript
jQuery解析Json实例详解
2015/11/24 Javascript
利用python分析access日志的方法
2016/10/26 Javascript
使用Angular缓存父页面数据的方法
2017/01/03 Javascript
使用Vue.js开发微信小程序开源框架mpvue解析
2018/03/20 Javascript
taro开发微信小程序的实践
2019/05/21 Javascript
解决使用layui对select append元素无效或者未及时更新的问题
2019/09/18 Javascript
微信小程序自定义tabbar custom-tab-bar 6s出不来解决方案(cover-view不兼容)
2019/11/01 Javascript
ES11屡试不爽的新特性,你用上了几个
2020/10/21 Javascript
python使用xlrd模块读取xlsx文件中的ip方法
2019/01/11 Python
PyQt5内嵌浏览器注入JavaScript脚本实现自动化操作的代码实例
2019/02/13 Python
Python Process多进程实现过程
2019/10/22 Python
canvas实现扭蛋机动画效果的示例代码
2018/10/17 HTML / CSS
HTML5 3D旋转相册的实现示例
2019/12/03 HTML / CSS
美国领先的个性化礼品商城:Personalization Mall
2019/07/27 全球购物
室内设计自我鉴定
2013/10/15 职场文书
办公室内勤岗位职责范本
2013/12/09 职场文书
技校毕业生的自我评价
2013/12/27 职场文书
交通安全教育制度
2014/02/02 职场文书
网络编辑岗位职责范本
2014/02/10 职场文书
行政专员岗位职责说明书
2014/09/01 职场文书
本科毕业论文致谢词
2015/05/14 职场文书