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 fgetcsv 定义和用法(附windows与linux下兼容问题)
May 29 PHP
PHP文章按日期(月日)SQL归档语句
Nov 29 PHP
PHP Class&Object -- PHP 自排序二叉树的深入解析
Jun 25 PHP
PHP变量内存分配问题记录整理
Nov 27 PHP
浅谈php的优缺点
Jul 14 PHP
php限制文件下载速度的代码
Oct 20 PHP
PHP与Ajax相结合实现登录验证小Demo
Mar 16 PHP
php 在字符串指定位置插入新字符的简单实现
Jun 28 PHP
PHP yii实现model添加默认值的方法(两种方法)
Nov 10 PHP
php生成毫秒时间戳的实例讲解
Sep 22 PHP
PHP封装的简单连接MongoDB类示例
Feb 13 PHP
PhpStorm+xdebug+postman调试技巧分享
Sep 15 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
短波收音机简介
2021/03/01 无线电
DOMXML函数笔记
2006/10/09 PHP
PHP编码规范的深入探讨
2013/06/06 PHP
Javascript 不能释放内存.
2006/09/07 Javascript
js Flash插入函数免激活代码
2009/03/31 Javascript
ExtJS TabPanel beforeremove beforeclose使用说明
2010/03/31 Javascript
电子商务网站上的常用的js放大镜效果
2011/12/08 Javascript
JS随机漂浮广告代码具体实例
2013/11/19 Javascript
javascript实现3D切换焦点图
2015/10/16 Javascript
javascript截图 jQuery插件imgAreaSelect使用详解
2016/05/04 Javascript
简单实现jQuery进度条轮播实例代码
2016/06/20 Javascript
iphone刘海屏页面适配方法
2019/05/07 Javascript
elementUI select组件使用及注意事项详解
2019/05/29 Javascript
JavaScript实现图片放大镜效果
2019/06/27 Javascript
基于axios 的responseType类型的设置方法
2019/10/29 Javascript
原生JS实现微信通讯录
2020/06/18 Javascript
vue npm install 安装某个指定的版本操作
2020/08/11 Javascript
vant时间控件使用方法详解
2020/12/24 Javascript
[04:13]2014DOTA2国际邀请赛 专访DC目前形势不容乐观
2014/07/12 DOTA
[01:33:14]LGD vs VP Supermajor 败者组决赛 BO3 第二场 6.10
2018/07/04 DOTA
实例讲解Python设计模式编程之工厂方法模式的使用
2016/03/02 Python
Django框架实现的分页demo示例
2019/05/25 Python
Django框架用户注销功能实现方法分析
2019/05/28 Python
Python编程学习之如何判断3个数的大小
2019/08/07 Python
python Kmeans算法原理深入解析
2019/08/23 Python
pycharm 实现本地写代码,服务器运行的操作
2020/06/08 Python
浅谈sklearn中predict与predict_proba区别
2020/06/28 Python
一家专门做特卖的网站:唯品会
2016/10/09 全球购物
英国羊绒服装购物网站:Pure Collection
2018/10/22 全球购物
幼儿园教学管理制度
2014/02/04 职场文书
低碳环保倡议书
2014/04/14 职场文书
理发店策划方案
2014/06/05 职场文书
《跨越海峡的生命桥》教学反思
2016/02/18 职场文书
AI:如何训练机器学习的模型
2021/04/16 Python
一篇文章弄懂MySQL查询语句的执行过程
2021/05/07 MySQL
MySQL表字段数量限制及行大小限制详情
2022/07/23 MySQL