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中全面阻止SQL注入式攻击分析小结
Jan 30 PHP
CI框架源码阅读,系统常量文件constants.php的配置
Feb 28 PHP
PHP 数组和字符串互相转换实现方法
Mar 26 PHP
在PHP上显示JFreechart画的统计图方法
Nov 03 PHP
php警告Creating default object from empty value 问题的解决方法
Apr 02 PHP
php图片处理函数获取类型及扩展名实例
Nov 19 PHP
php多重接口的实现方法
Jun 20 PHP
微信自定义菜单的创建/查询/取消php示例代码
Aug 05 PHP
php 三元运算符实例详细介绍
Dec 15 PHP
Laravel框架使用monolog_mysql实现将系统日志信息保存到mysql数据库的方法
Aug 16 PHP
PHP实现微信对账单处理
Oct 01 PHP
详解在YII2框架中使用UEditor编辑器发布文章
Nov 02 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
索尼ICF-SW100收音机评测
2021/03/02 无线电
浅析PHP的ASCII码转换类
2013/07/05 PHP
ThinkPHP水印功能实现修复PNG透明水印并增加JPEG图片质量可调整
2014/11/05 PHP
PHP文件及文件夹操作之创建、删除、移动、复制
2016/07/13 PHP
Jquery Select操作方法集合脚本之家特别版
2010/05/17 Javascript
jquery验证手机号码、邮箱格式是否正确示例代码
2013/07/28 Javascript
JS测试显示屏分辨率以及屏幕尺寸的方法
2013/11/22 Javascript
总结Javascript中的隐式类型转换
2016/08/24 Javascript
微信小程序 绘图之饼图实现
2016/10/24 Javascript
微信小程序 基础知识css样式media标签
2017/02/15 Javascript
解决bootstrap下拉菜单点击立即隐藏bug的方法
2017/06/13 Javascript
Windows下使用Nodejs运行js的方法
2017/09/02 NodeJs
详解Webpack-dev-server的proxy用法
2018/09/08 Javascript
小程序实现授权登陆的解决方案
2018/12/02 Javascript
vue的三种图片引入方式代码实例
2019/11/19 Javascript
React实现全选功能
2020/08/25 Javascript
Python和GO语言实现的消息摘要算法示例
2015/03/10 Python
研究Python的ORM框架中的SQLAlchemy库的映射关系
2015/04/25 Python
Python双精度浮点数运算并分行显示操作示例
2017/07/21 Python
Python实现的tcp端口检测操作示例
2018/07/24 Python
Python函数参数操作详解
2018/08/03 Python
python 实现GUI(图形用户界面)编程详解
2019/07/17 Python
Python定时任务APScheduler的实例实例详解
2019/07/22 Python
python如何判断IP地址合法性
2020/04/05 Python
python 5个实用的技巧
2020/09/27 Python
Selenium获取登录Cookies并添加Cookies自动登录的方法
2020/12/04 Python
如何用 Python 处理不平衡数据集
2021/01/04 Python
荷兰网上药店:Drogisterij.net
2019/09/03 全球购物
简单英文演讲稿
2014/01/01 职场文书
青年文明号复核材料
2014/02/11 职场文书
儿童生日会策划方案
2014/05/15 职场文书
工作会议方案
2014/05/21 职场文书
小学生安全教育主题班会
2015/08/12 职场文书
Python语言规范之Pylint的详细用法
2021/06/24 Python
Go Plugins插件的实现方式
2021/08/07 Golang
5种方法告诉你如何使JavaScript 代码库更干净
2021/09/15 Javascript