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 相关文章推荐
桌面中心(四)数据显示
Oct 09 PHP
全文搜索和替换
Oct 09 PHP
PHP swfupload图片上传的实例代码
Sep 30 PHP
带密匙的php加密解密示例分享
Jan 29 PHP
采用header定义为文件然后readfile下载(隐藏下载地址)
Jan 31 PHP
PHP获取短链接跳转后的真实地址和响应头信息的方法
Jul 25 PHP
PHP获取音频文件的相关信息
Jun 22 PHP
Yii中CGridView实现批量删除的方法
Dec 28 PHP
linux下php上传文件注意事项
Jun 11 PHP
基于PHP实现短信验证码接口(容联运通讯)
Sep 06 PHP
CI框架AR数据库操作常用函数总结
Nov 21 PHP
Laravel5.0+框架邮件发送功能实现方法图文与实例详解
Apr 23 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数据库配置文件一般做法分享
2012/07/07 PHP
深入php函数file_get_contents超时处理的方法详解
2013/06/03 PHP
php上传文件,创建递归目录的实例代码
2013/10/18 PHP
很酷的javascript loading效果代码
2008/06/18 Javascript
BOM与DOM的区别分析
2010/10/26 Javascript
悄悄用脚本检查你访问过哪些网站的代码
2010/12/04 Javascript
Jquery使用Firefox FireBug插件调试Ajax步骤讲解
2013/12/02 Javascript
浅析javascript 定时器
2014/12/23 Javascript
javascript 动态创建表格
2015/01/08 Javascript
JavaScript模拟数组合并concat
2016/03/06 Javascript
使用Angular.js实现简单的购物车功能
2016/11/21 Javascript
微信小程序开发之录音机 音频播放 动画实例 (真机可用)
2016/12/08 Javascript
Javascript中常用类型的格式化方法小结
2016/12/26 Javascript
ajax图片上传,图片异步上传,更新实例
2016/12/30 Javascript
微信小程序左滑删除效果的实现代码
2017/02/20 Javascript
Node.js中的http请求客户端示例(request client)
2017/05/04 Javascript
vue2中filter()的实现代码
2017/07/09 Javascript
dts文件中删除一个node或属性的操作方法
2018/08/05 Javascript
解决Vue+Element ui开发中碰到的IE问题
2018/09/03 Javascript
Vue-cli打包后部署到子目录下的路径问题说明
2020/09/02 Javascript
在Vue中使用Select选择器拼接label的操作
2020/10/22 Javascript
Python 正则表达式实现计算器功能
2017/04/29 Python
浅述python2与python3的简单区别
2018/09/19 Python
python读取并定位excel数据坐标系详解
2019/06/26 Python
python生成word合同的实例方法
2021/01/12 Python
CSS3实现10种Loading效果
2016/07/11 HTML / CSS
捷克移动配件网上商店:ProMobily.cz
2019/03/15 全球购物
英国地毯卖家:The Rug Seller
2019/07/18 全球购物
HashMap和Hashtable的区别
2013/05/18 面试题
国贸专业个人求职信分享
2013/12/04 职场文书
中学教师师德承诺书
2014/05/23 职场文书
治安消防安全责任书
2014/07/23 职场文书
Vue中插槽slot的使用方法与应用场景详析
2021/06/08 Vue.js
了解Redis常见应用场景
2021/06/23 Redis
一篇文章带你深入了解Mysql触发器
2021/08/02 MySQL
MySQL 数据表操作
2022/05/04 MySQL