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 程序员应该使用的10个组件
Oct 31 PHP
gd库图片下载类实现下载网页所有图片的php代码
Aug 20 PHP
PHP获取中英混合字符串长度的方法
Jun 07 PHP
php实现通用的信用卡验证类
Mar 24 PHP
PHP中读取文件的几个方法总结(推荐)
Jun 03 PHP
JSON两种结构之对象和数组的理解
Jul 19 PHP
Zend Framework入门教程之Zend_Registry组件用法详解
Dec 09 PHP
PHP实现的分页类定义与用法示例
Jul 05 PHP
PHP实现的Redis多库选择功能单例类
Jul 27 PHP
PHP实现求连续子数组最大和问题2种解决方法
Dec 26 PHP
PHP7中I/O模型内核剖析详解
Apr 14 PHP
laravel5.6中的外键约束示例
Oct 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 array_flip() 删除重复数组元素专用函数
2010/05/16 PHP
php自定义apk安装包实例
2014/10/20 PHP
PHP生成和获取XML格式数据的方法
2016/03/04 PHP
浅谈Laravel中的一个后期静态绑定
2017/08/11 PHP
wordpress之js库集合研究介绍
2007/08/17 Javascript
js下通过getList函数实现分页效果的代码
2010/09/17 Javascript
JavaScript继承基础讲解(原型链、借用构造函数、混合模式、原型式继承、寄生式继承、寄生组合式继承)
2014/08/16 Javascript
Linux下使用jq友好的打印JSON技巧分享
2014/11/18 Javascript
jQuery中on()方法用法实例详解
2015/02/06 Javascript
JS获取Table中td值的方法
2015/03/19 Javascript
jQuery中closest和parents的区别分析
2015/05/07 Javascript
Javascript将图片的绝对路径转换为base64编码的方法
2018/01/11 Javascript
微信小程序实现的一键连接wifi功能示例
2019/04/24 Javascript
Python 3.x读写csv文件中数字的方法示例
2017/08/29 Python
Python 判断是否为质数或素数的实例
2017/10/30 Python
TensorFlow搭建神经网络最佳实践
2018/03/09 Python
cmd运行python文件时对结果进行保存的方法
2018/05/16 Python
python多进程提取处理大量文本的关键词方法
2018/06/05 Python
Python通用函数实现数组计算的方法
2019/06/13 Python
Django ORM多对多查询方法(自定义第三张表&ManyToManyField)
2019/08/09 Python
python单向链表的基本实现与使用方法【定义、遍历、添加、删除、查找等】
2019/10/24 Python
python中def是做什么的
2020/06/10 Python
解决redis与Python交互取出来的是bytes类型的问题
2020/07/16 Python
Python urllib库如何添加headers过程解析
2020/10/05 Python
阻止移动设备(手机、pad)浏览器双击放大网页的方法
2014/06/03 HTML / CSS
爱尔兰领先的在线体育用品零售商:theGAAstore
2018/04/16 全球购物
销售人员获奖感言
2014/02/05 职场文书
交通事故私了协议书
2014/04/16 职场文书
儿园租房协议书范本
2014/12/02 职场文书
出租车拒载检讨书
2015/01/28 职场文书
2015年中秋节活动总结
2015/03/23 职场文书
学校教学工作总结2015
2015/05/19 职场文书
小学校园广播稿
2015/08/18 职场文书
2016教师学习党章心得体会
2016/01/15 职场文书
关于JavaScript轮播图的实现
2021/11/20 Javascript
golang操作rocketmq的示例代码
2022/04/06 Golang