详细介绍微信第三方小程序代开发

微信申请第三方之后可以获取授权方的很多权限,主要的是生码和待开发,生码的第三方授权之前已经写了一篇文章,最近做了小程序待开发,总结一下写下来供大家参考

需要注意:如果在调试过程中返回了错误码请到小程序代开发api页面查看,

      小程序代开发使用的域名是你申请第三方时候填写的域名,

     小程序代码模板最多只有50个,可以删除然后重新添加。

准备工作:

  申请微信第三方并且权限那边要选上代开发,第三方申请成功之后就是准备小程序了,需要两个小程序,一个作为小程序代码库,一个作为用户测试用,需要在第三方授权。

  添加小程序代码库: 在第三方那边将小程序添加为开发小程序,然后该小程序就成为了第三方的开发小程序,之后该小程序提交的代码都会存入第三方草稿箱,你可以选择版本添加为模板,一个第三方最             多只能有50个模板。

代开发流程:

  post请求公共方法,与微信服务器交互用

  代码如下

protectedfunction curl_post( $curlHttp, $postdata ) {
    $ch = curl_init();//用curl发送数据给api
    curl_setopt( $ch, CURLOPT_POST,true);
    curl_setopt( $ch, CURLOPT_POST,true);
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER,true);
    curl_setopt( $ch, CURLOPT_URL, $curlHttp );
    curl_setopt( $ch, CURLOPT_POSTFIELDS, $postdata );
    curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, FALSE );
    curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, FALSE );
    $response = curl_exec( $ch );
    curl_close( $ch );
    $result = json_decode( $response,true);
    return$result;
  }

get请求公共方法,与微信服务器交互用

  代码如下

protectedfunction buildRequestForm( array $param, $method, $target='',$jump=false) {
    $sHtml ="<meta http-equiv='Content-Type' content='text/html; charset=utf-8' /><form id='autoSubmit' action='".$target."' method='".$method."'>";
    if( !empty( $param ) ) {
      foreach( $param as $key => $value ) {
        $sHtml.="<input type='hidden' name='".$key."' value='".urldecode($value)."'/>";
      }
    }
    $sHtml .="</form>";
    if($jump) $sHtml = $sHtml."<script>document.getElementById(\"autoSubmit\").submit();</script>";
    return$sHtml;
  }

获取授权方api调用拼成access_token公共方法

  代码如下

protectd function getAccessToken( $appId ) {
    $accessToken ='';
    if( empty( $appId ) ) {
      return$accessToken;
    }
     
    // 中间的逻辑自己填充
    return$accessToken;
  }

首先是开发一套小程序并且上传,之后再第三方里边把该版本设置成模板,这个时候你就用了模板id(用于代码指定用)

  通过调用微信接口,给用户小程序指定小程序代码

  代码如下

public function commitCode() {
    $appId = input('app_id','' );
    $descript = input('descript','测试代码指定' );
    $version = input('version','V.1.0' );
    $templateId = input('template_id',1 );
    if( empty( $appId ) ) {
      $this->error( appid不能为空 );
      return;
    }
    if( empty( $templateId ) && ( $templateId !=0) ) {
      $this->error('模板id不能为空');
      return;
    }
    $accessToken = $this->getAccessToken( $appId );
    // 个人信息我给清除了,空字符部分请自己补充
    $extJson = array(
      'extAppid'=> $appId,
      'ext'=> array(
        'attr1'=>'value1'
      ),
      'extPages'=> array(
          'pages/index/index'=> array(
            'navigationBarTitleText' =>''
          ),
          'pages/media/media'=> array(
            'navigationBarTitleText' =>''
          )
      ),
      'pages'=> array(
          'pages/index/index',
          'pages/media/media'
      ),
      'window'=> array(
          'backgroundColor'     =>'#f8f8f8',
          'navigationBarTextStyle' =>'white',
          "navigationBarTitleText" =>"",
          'navigationBarBackgroundColor'=>'#2b3b48'
      ),
      'tabBar'=> array(
        'list'=> array(
          array(
            'text'  =>'',
            'pagePath'=>'pages/index/index',
          ),
          array(
            'text'  =>'',
            'pagePath'=>'pages/media/media',
          )
        )
      ),
      'networkTimeout'=> array(
          'request'   =>10000,
          'uploadFile' =>10000,
          'downloadFile'=>10000,
          'connectSocket'=>10000
      )
    );
    $params = array(
      'template_id' => $templateId,
      'user_version'=> $version,
      'user_desc'  => $descript,
      'ext_json'  => json_encode( $extJson, JSON_UNESCAPED_UNICODE )
    );
    $result = $this->curl_post('https://api.weixin.qq.com/wxa/commit?access_token='.$accessToken, json_encode( $params, JSON_UNESCAPED_UNICODE ) );
    if( empty( $result ) || !empty( $result['errcode'] ) ) {
      $this->error('代码指定错误');
      return;
    }
    $this->success('操作成功');
    return;
  }

指定代码之后就是查看功能是否正常了,所以就要调用微信接口获取体验二维码扫码体验,

  代码如下

public function getExpCode() {
    $appId = input('app_id','' );
    if( empty( $appId ) ) {
      $this->error( appid不能为空 );
      return;
    }
    $accessToken = $this->getAccessToken( $appId );
    if( empty( $accessToken ) ) {
      $this->error('获取授权accessToken错误');
      return;
    }
    $params = array(
      'access_token'=> $accessToken
    );
    $result = $this->buildRequestForm( $params,'GET','https://api.weixin.qq.com/wxa/get_qrcode?access_token='.$accessToken,true);
    echo $result;
    exit;
  }

如果授权用户没有体验权限则扫码之后不能进行小程序功能体验,这个时候就需要你通过微信接口将用户设置为体验者了,这一步可以在小程序平台用户管理里边操作,为了提高逼格,你可可以通过微       信接口进行体验者的添加和删除,添加的时候需要被添加者微信确认

  代码如下

public function bindTester() {
    $appId = input('app_id','' );
    $wxNumber = input('wx_number','' );
    if( empty( $appId ) ) {
      $this->error( appid不能为空 );
      return;
    }
    if( empty( $wxNumber ) ) {
      $this->error( 微信号不能为空 );
      return;
    }
    $accessToken = $this->getAccessToken( $appId );
    if( empty( $accessToken ) ) {
      $this->error('获取授权accessToken错误');
      return;
    }
    $params = array(
      'wechatid'=> $wxNumber
    );
    $result = $this->curl_post('https://api.weixin.qq.com/wxa/bind_tester?access_token='.$accessToken, json_encode( $params ) );
    print_r($result);
    exit;
    return;
  }
public function unBindTester() {
    $appId = input('app_id','' );
    $wxNumber = input('wx_number','' );
    if( empty( $appId ) ) {
      $this->error( appid不能为空 );
      return;
    }
    if( empty( $wxNumber ) ) {
      $this->error( 微信号不能为空 );
      return;
    }
    $accessToken = $this->getAccessToken( $appId );
    if( empty( $accessToken ) ) {
      $this->error('获取授权accessToken错误');
      return;
    }
    $params = array(
      'wechatid'=> $wxNumber
    );
    $result = $this->curl_post('https://api.weixin.qq.com/wxa/unbind_tester?access_token='.$accessToken, json_encode( $params ) );
    print_r($result);
    exit;
    return;
  }

如果体验功能有问题则重新调整小程序代码逻辑然后上传之后设置为模板,如果没有问题则将小程序代码提交审核,但是提交审核的时候需要指定category,所以需要调用微信接口查看

  如果授权用户没有设置的话,需要对方进入小程序平台,在填写小程序信息的地方添加服务条目

  代码如下

public function getCategory() {
    $appId = input('app_id','' );
    if( empty( $appId ) ) {
      $this->error( appid不能为空 );
      return;
    }
    $accessToken = $this->getAccessToken( $appId );
    if( empty( $accessToken ) ) {
      $this->error('获取授权accessToken错误');
      return;
    }
    $params = array(
      'access_token'=> $accessToken
    );
    $result = $this->buildRequestForm( $params,'GET','https://api.weixin.qq.com/wxa/get_category?access_token='.$accessToken,true);
    echo $result;
    exit;
  }

拿到服务条目之后就是提交代码审核了

  代码如下

public function submitAudit() {
    $appId = input('app_id','' );
    if( empty( $appId ) ) {
      $this->error( appid不能为空 );
      return;
    }
    $accessToken = $this->getAccessToken( $appId );
    if( empty( $accessToken ) ) {
      $this->error('获取授权accessToken错误');
      return;
    }
    $params = array(
      'item_list'=> array(
          array(
            'address'=>'pages/index/index',
            'tag'=>'IT科技',
            'first_class'=>'IT科技',
            'second_class'=>'硬件与设备',
            'title'=>'生成二维码'
          ),
          array(
            'address'=>'pages/media/media',
            'tag'=>'工具',
            'first_class'=>'工具',
            'second_class'=>'办公',
            'title'=>'多媒体上传'
          )
      )
    );
    $result = $this->curl_post('https://api.weixin.qq.com/wxa/submit_audit?access_token='.$accessToken, json_encode( $params, JSON_UNESCAPED_UNICODE ) );
    echo'<pre>';
    print_r($result);
    exit;
    $this->success('操作成功');
    return;
  }

提交审核之后,微信服务器会返回一个审核id,你可以通过该审核id查询审核状态

  当审核通过之后,微信会给你第三方注册的回调地址推送一个审核结果

  代码如下

public function getAuditStatus (){
    $appId = input('app_id','' );
    if( empty( $appId ) ) {
      $this->error( appid不能为空 );
      return;
    }
    $accessToken = $this->getAccessToken( $appId );
    if( empty( $accessToken ) ) {
      $this->error('获取授权accessToken错误');
      return;
    }
    $params = array(
      'auditid'=>12334
    );
    $result = $this->curl_post('https://api.weixin.qq.com/wxa/get_auditstatus?access_token='.$accessToken, json_encode( $params ) );
    print_r($result);
    exit;
    return;
  }

当小程序审核通过了接下来就是小程序发布了

  代码如下

public function release (){
    $appId = input('app_id','' );
    if( empty( $appId ) ) {
      $this->error( appid不能为空 );
      return;
    }
    $accessToken = $this->getAccessToken( $appId );
    if( empty( $accessToken ) ) {
      $this->error('获取授权accessToken错误');
      return;
    }
    $result = $this->curl_post('https://api.weixin.qq.com/wxa/release?access_token='.$accessToken,'{}');
    print_r($result);
    exit;
    return;
  }

就这样,小程序代开发就完成了,逻辑很简单,代码也没难度,本文章的代码仅供大家参考,如果有问题请评论指出,我尽量补充。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

微信第三方平台代小程序实现业务相关推荐

  1. 用微信第三方平台授权小程序业务

    如果本文对你有用,请爱心点个赞,提高排名,帮助更多的人.谢谢大家!❤ 如果解决不了,可以在文末进群交流. 本文章转自php中文网:http://www.php.cn/weixin-kaifa-4069 ...

  2. 详解微信开放平台第三方平台代小程序开发业务基本接口调用逻辑

    详解微信第三方小程序代开发 微信申请第三方之后可以获取授权方的很多权限,主要的是生码和待开发,生码的第三方授权之前已经写了一篇文章,最近做了小程序待开发,总结一下写下来供大家参考 由百牛信息技术bai ...

  3. 微信第三方平台:小程序模板开发与发布

    第三方平台帮助旗下已授权的小程序进行代码管理时,需先开发完成小程序模版,再将小程序模版部署到旗下小程序帐号中,具体流程如下: 第一步:绑定开发小程序 (1)第三方平台的开发人员需先到微信公众平台(mp ...

  4. 微信小程序 第三方平台授权小程序业务

    image 第一步:申请微信开放平台帐号并创建第三方平台 image.png image.png image.png image.png 第二步:公众号/小程序授权给第三方平台 <?php// ...

  5. 代小程序实现业务之代码管理

    代小程序实现业务之代码管理 本文将描述在公司开发平台实现小程序代码的上传审核,审核结果获取更新及代码的发布流程,详细资料可参阅官方文档代小程序实现业务-代码管理: 小程序第三方平台模板 将小程序授权给 ...

  6. 《微信公众平台与小程序开发——从零搭建整套系统》——第1章,第1.2节微信公众平台...

    本节书摘来自异步社区<微信公众平台与小程序开发--从零搭建整套系统>一书中的第1章,第1.2节微信公众平台,作者 张剑明,更多章节内容可以访问云栖社区"异步社区"公众号 ...

  7. 代小程序实现业务-添加业务域名89021错误

    设置业务域名|微信开放文档 添加业务域名时,调用微信api返回错误: {"errcode":89021,"errmsg":"request domai ...

  8. 小程序:微信公众平台:小程序

    ylbtech-小程序:微信公众平台:小程序 1. 首页(小程序发布流程)返回顶部 1. 小程序发布流程 已完成 查看详情 小程序信息 补充小程序的基本信息,如名称.图标.描述等 已绑定 查看详情 小 ...

  9. 微信公众平台发布小程序数据助手 可查看运营数据

    微信公众平台发布小程序数据助手 可查看运营数据 用手机也能看小程序后台数据了 " 微信公众平台发布官方小程序「小程序数据助手」,支持相关的开发和运营人员在手机端更方便.及时地查看运营数据.& ...

  10. 微信开放平台第三方平台授权小程序权限集id对应中文说明

    微信的官方文档没有找到完整的说明,以下数据是一个一个授权对比得到,特此备注 return ['17' => '帐号管理权限','18' => '开发管理与数据分析权限','19' => ...

最新文章

  1. 关于AD编程的一些资料
  2. file.delete删除不了文件_如何解决C盘莫名出现的msdia80.dll文件
  3. python运维实战--跨堡垒机连接二级服务器上传文件
  4. 苹果内购和 Apple Pay
  5. Android ViewFlipper滑动屏幕切换
  6. 2019 神策春招 | “数”天下神人,都“据”于此
  7. Symfony 4.3 发布,带来搜索引擎自动保护
  8. 《参考消息》出现大标题错别字硬伤
  9. Dead Pixel
  10. Eucalyptus
  11. 正则表达式应用(日期正则表达式)
  12. Microsoft Office Home and Student Edition 2013 All-in-One For Dummies 免积分下载
  13. 2020年9月程序员工资统计,平均14469元
  14. 树莓派开机自动运行shell脚本——记录开机时间
  15. 定义Point类,采用友元类的方式计算两个点之间的水平和垂直距离
  16. 2018上IEC计算机高级语言(C)作业 第3次作业
  17. 安装Tomcat服务器
  18. M.2、PCIe、mSATA接口的SSD 速度性能如何?哪一个是装机首选
  19. vue路由传参的三种方式区别(params,query)
  20. android开发之消息推送

热门文章

  1. acm--Lowest Bit
  2. 硬件负载均衡设备介绍
  3. go mod invalid pseudo-version
  4. c语言偶数求和while,C语言中编程计算1至100以内的奇数和偶数并分别求和,求代码...
  5. IOS开发-ERROR ITMS-90096: Your binary is not optimized for iPhone 5
  6. 【机智云专题】①:乐鑫esp8266巧用机智云自动代码生成功能,移植加入驱动单路继电器,实现智能定时插座。(附带demo)
  7. 在计算机中移动硬盘一般用作什么,移动硬盘是什么
  8. 分布式块存储Longhorn简介
  9. Longhorn 企业级云原生分布式容器存储-券(Volume)和节点(Node)
  10. 文件名字超出计算机无法删除,电脑文件名太长无法删除怎么办