微信小程序> 详解微信第三方小程序代开发

详解微信第三方小程序代开发

浏览量:945 时间: 来源:Ga_Galin

详解微信第三方小程序代开发

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

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

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

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

准备工作:

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

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

代开发流程:

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

  代码如下

?
123456789101112131415protected function 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请求公共方法,与微信服务器交互用

  代码如下

?
1234567891011121314protected function 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."scriptdocument.getElementById("autoSubmit").submit();/script";     return $sHtml;  }

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

  代码如下

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

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

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

  代码如下

?
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576public 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;  }

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

  代码如下

?
1234567891011121314151617181920public 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;  }

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

  代码如下

?
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051public 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,所以需要调用微信接口查看

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

  代码如下

?
123456789101112131415161718192021public 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;  }

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

  代码如下

?
123456789101112131415161718192021222324252627282930313233343536373839public 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'

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎