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 相关文章推荐
example2.php
Oct 09 PHP
用PHP读取RSS feed的代码
Aug 01 PHP
PHP 实现多服务器共享 SESSION 数据
Aug 15 PHP
php中强制下载文件的代码(解决了IE下中文文件名乱码问题)
May 09 PHP
php中3des加密代码(完全与.net中的兼容)
Aug 02 PHP
php中mail函数发送邮件失败的解决方法
Dec 24 PHP
PHP实现多维数组转字符串和多维数组转一维数组的方法
Aug 08 PHP
php+ajax实现无刷新分页
Nov 18 PHP
Yii2框架实现注册和登录教程
Sep 30 PHP
php实现连接access数据库并转txt写入的方法
Feb 08 PHP
thinkPHP5框架分页样式类完整示例
Sep 01 PHP
PHP使用HTML5 FormData对象提交表单操作示例
Jul 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
解析如何去掉CodeIgniter URL中的index.php
2013/06/25 PHP
php中stdClass的用法分析
2015/02/27 PHP
如何使用微信公众平台开发模式实现多客服
2016/01/06 PHP
PHP判断FORM表单或URL参数来的数据是否为整数的方法
2016/03/25 PHP
PHP的openssl加密扩展使用小结(推荐)
2016/07/18 PHP
javascript 禁止复制网页
2009/06/11 Javascript
location.search在客户端获取Url参数的方法
2010/06/08 Javascript
Juqery Html(),append()等方法的Bug解决方法
2010/12/13 Javascript
常规表格多表头查询示例
2014/02/21 Javascript
jQuery Ajax中的事件详细介绍
2015/04/16 Javascript
详解Bootstrap glyphicons字体图标
2016/01/04 Javascript
利用bootstrapValidator验证UEditor
2016/09/14 Javascript
AngularJS Controller作用域
2017/01/09 Javascript
canvas实现探照灯效果
2017/02/07 Javascript
Avalonjs 实现简单购物车功能(实例代码)
2017/02/07 Javascript
100多个基础常用JS函数和语法集合大全
2017/02/16 Javascript
微信小程序使用progress组件实现显示进度功能【附源码下载】
2017/12/12 Javascript
手把手教您实现react异步加载高阶组件
2020/04/07 Javascript
python3.3教程之模拟百度登陆代码分享
2014/01/16 Python
django js实现部分页面刷新的示例代码
2018/05/28 Python
Python利用ORM控制MongoDB(MongoEngine)的步骤全纪录
2018/09/13 Python
Python检查ping终端的方法
2019/01/26 Python
python 缺失值处理的方法(Imputation)
2019/07/02 Python
python使用原始套接字发送二层包(链路层帧)的方法
2019/07/22 Python
python提取照片坐标信息的实例代码
2019/08/14 Python
Windows10下Tensorflow2.0 安装及环境配置教程(图文)
2019/11/21 Python
python爬虫scrapy基本使用超详细教程
2021/02/20 Python
纬创Java面试题笔试题
2014/10/02 面试题
法律专业个人实习自我鉴定
2013/09/23 职场文书
观看《永远的雷锋》心得体会
2014/03/12 职场文书
班主任个人工作反思
2014/04/28 职场文书
企业消防安全责任书
2014/07/23 职场文书
2014党支部对照检查材料思想汇报
2014/10/05 职场文书
2015年度质量工作总结报告
2015/04/27 职场文书
Mysql官方性能测试工具mysqlslap的使用简介
2021/05/21 MySQL
nginx七层负载均衡配置详解
2022/07/15 Servers