最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解微信第三方小程序開發(fā)

 更新時間:2017年06月23日 15:20:09   作者:湖邊油紙傘  
這篇文章主要介紹了詳解微信第三方小程序開發(fā)的相關(guān)資料,需要的朋友可以參考下

詳解微信第三方小程序開發(fā)

微信申請第三方之后可以獲取授權(quán)方的很多權(quán)限,主要的是生碼和開發(fā),生碼的第三方授權(quán)之前已經(jīng)寫了一篇文章,最近做了小程序開發(fā),總結(jié)一下寫下來供大家參考

注意事項:如果在調(diào)試過程中返回了錯誤碼請到小程序開發(fā)api頁面查看,

      小程序開發(fā)使用的域名是你申請第三方時候填寫的域名,

     小程序代碼模板最多只有50個,可以刪除然后重新添加。

準備工作:

  申請微信第三方并且權(quán)限那邊要選上開發(fā),第三方申請成功之后就是準備小程序了,需要兩個小程序,一個作為小程序代碼庫,一個作為用戶測試用,需要在第三方授權(quán)。

  添加小程序代碼庫: 在第三方那邊將小程序添加為開發(fā)小程序,然后該小程序就成為了第三方的開發(fā)小程序,之后該小程序提交的代碼都會存入第三方,你可以選擇版本添加為模板,一個第三方最             多只能有50個模板。

開發(fā)流程:

  post請求公共方法,與微信服務(wù)器交互用

  代碼如下

protected function curl_post( $curlHttp, $postdata ) {
    $ch = curl_init(); //用curl發(fā)送數(shù)據(jù)給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請求公共方法,與微信服務(wù)器交互用

  代碼如下

protected 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."<script>document.getElementById(\"autoSubmit\").submit();</script>";

    return $sHtml;
  }

  獲取授權(quán)方api調(diào)用拼成access_token公共方法

  代碼如下

protectd function getAccessToken( $appId ) {
    $accessToken = '';

    if ( empty( $appId ) ) {
      return $accessToken;
    }
    
    // 中間的邏輯自己填充

    return $accessToken;
  }

  首先是開發(fā)一套小程序并且上傳,之后再第三方里邊把該版本設(shè)置成模板,這個時候你就用了模板id(用于代碼指定用)

  通過調(diào)用微信接口,給用戶小程序指定小程序代碼

  代碼如下

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;
  }

  指定代碼之后就是查看功能是否正常了,所以就要調(diào)用微信接口獲取體驗二維碼掃碼體驗,

  代碼如下

public function getExpCode() {
    $appId = input( 'app_id', '' );
    if ( empty( $appId ) ) {
      $this->error( appid不能為空 );
      return;
    }

    $accessToken = $this->getAccessToken( $appId );
    if ( empty( $accessToken ) ) {
      $this->error( '獲取授權(quán)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;
  }

  如果授權(quán)用戶沒有體驗權(quán)限則掃碼之后不能進行小程序功能體驗,這個時候就需要你通過微信接口將用戶設(shè)置為體驗者了,這一步可以在小程序平臺用戶管理里邊操作,你可可以通過接口進行體驗者的添加和刪除,添加的時候需要被添加者微信確認

  代碼如下

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( '獲取授權(quán)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( '獲取授權(quán)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;
  }

  如果體驗功能有問題則重新調(diào)整小程序代碼邏輯然后上傳之后設(shè)置為模板,如果沒有問題則將小程序代碼提交審核,但是提交審核的時候需要指定category,所以需要調(diào)用微信接口查看

  如果授權(quán)用戶沒有設(shè)置的話,需要對方進入小程序平臺,在填寫小程序信息的地方添加服務(wù)條目

  代碼如下

public function getCategory() {
    $appId = input( 'app_id', '' );
    if ( empty( $appId ) ) {
      $this->error( appid不能為空 );
      return;
    }

    $accessToken = $this->getAccessToken( $appId );
    if ( empty( $accessToken ) ) {
      $this->error( '獲取授權(quán)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;
  }

  拿到服務(wù)條目之后就是提交代碼審核了

  代碼如下

public function submitAudit() {
    $appId = input( 'app_id', '' );
    if ( empty( $appId ) ) {
      $this->error( appid不能為空 );
      return;
    }

    $accessToken = $this->getAccessToken( $appId );
    if ( empty( $accessToken ) ) {
      $this->error( '獲取授權(quán)accessToken錯誤' );
      return;
    }

    $params = array(
      'item_list' => array(
          array(
            'address' => 'pages/index/index',
            'tag' => 'IT科技',
            'first_class' => 'IT科技',
            'second_class' => '硬件與設(shè)備',
            '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;
  }

  提交審核之后,微信服務(wù)器會返回一個審核id,你可以通過該審核id查詢審核狀態(tài)

  當(dāng)審核通過之后,微信會給你第三方注冊的回調(diào)地址推送一個審核結(jié)果

  代碼如下

public function getAuditStatus (){
    $appId = input( 'app_id', '' );
    if ( empty( $appId ) ) {
      $this->error( appid不能為空 );
      return;
    }

    $accessToken = $this->getAccessToken( $appId );
    if ( empty( $accessToken ) ) {
      $this->error( '獲取授權(quán)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;
  }

  當(dāng)小程序?qū)徍送ㄟ^了接下來就是小程序發(fā)布了

  代碼如下

public function release (){
    $appId = input( 'app_id', '' );
    if ( empty( $appId ) ) {
      $this->error( appid不能為空 );
      return;
    }

    $accessToken = $this->getAccessToken( $appId );
    if ( empty( $accessToken ) ) {
      $this->error( '獲取授權(quán)accessToken錯誤' );
      return;
    }
    $result = $this->curl_post( 'https://api.weixin.qq.com/wxa/release?access_token='.$accessToken, '{}' );
    print_r($result);
    exit;
    return;
  }

就這樣,小程序開發(fā)就完成了,邏輯很簡單,代碼也沒難度,本文章的代碼僅供大家參考,如果有問題請評論指出,我盡量補充。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • Evil.js項目源碼解讀

    Evil.js項目源碼解讀

    這篇文章主要為大家介紹了最近火爆全網(wǎng)的?Evil.js?源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • js實現(xiàn)兔年轉(zhuǎn)圈圈動畫示例

    js實現(xiàn)兔年轉(zhuǎn)圈圈動畫示例

    這篇文章主要為大家介紹了js實現(xiàn)兔年轉(zhuǎn)圈圈動畫示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • 微信小程序 支付功能(前端)的實現(xiàn)

    微信小程序 支付功能(前端)的實現(xiàn)

    這篇文章主要介紹了微信小程序 支付功能(前端)的實現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • Nest.js 之依賴注入原理及實現(xiàn)過程詳解

    Nest.js 之依賴注入原理及實現(xiàn)過程詳解

    這篇文章主要為大家介紹了Nest.js 之依賴注入原理及實現(xiàn)過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • 一文解析Express框架view對象使用

    一文解析Express框架view對象使用

    這篇文章主要介紹了Express框架view對象使用解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • 載入進度條 效果

    載入進度條 效果

    載入進度條 效果...
    2006-07-07
  • JS前端使用canvas實現(xiàn)擴展物體類和事件派發(fā)

    JS前端使用canvas實現(xiàn)擴展物體類和事件派發(fā)

    這篇文章主要為大家介紹了JS前端使用canvas實現(xiàn)擴展物體類和事件派發(fā)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • 微信小程序 wx.uploadFile在安卓手機上面the same task is working問題解決

    微信小程序 wx.uploadFile在安卓手機上面the same task is working問題解決

    這篇文章主要介紹了微信小程序 wx.uploadFile在安卓手機上面the same task is working問題解決的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • JavaScript實現(xiàn)優(yōu)先級隊列

    JavaScript實現(xiàn)優(yōu)先級隊列

    這篇文章主要介紹了JavaScript如何實現(xiàn)優(yōu)先級隊列,在計算機里,隊列是一種先進先出的數(shù)據(jù)結(jié)構(gòu)。就跟我們平時排隊一樣,先到的排在前面,前面的優(yōu)先處理,下面我們就來看看在JavaScript里面的優(yōu)先隊列又當(dāng)如何
    2021-12-12
  • ECMAScript?modules規(guī)范示例詳解

    ECMAScript?modules規(guī)范示例詳解

    這篇文章主要為大家介紹了ECMAScript?modules規(guī)范示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11

最新評論

甘洛县| 咸丰县| 成都市| 黔江区| 德阳市| 盘锦市| 墨竹工卡县| 宜君县| 甘谷县| 扶风县| 龙岩市| 青铜峡市| 乡宁县| 南澳县| 昌都县| 清苑县| 台前县| 武夷山市| 安化县| 益阳市| 九江县| 江西省| 宝兴县| 荆州市| 顺昌县| 枣强县| 八宿县| 商南县| 江北区| 惠来县| 徐汇区| 沅江市| 铅山县| 边坝县| 玉环县| 久治县| 雷波县| 皋兰县| 山西省| 三亚市| 大同市|