微信第三方平台之代开发小程序(二)

第二部分 快速创建小程序(必须全网发布成功)

注:第一部分,全网发布前的准备 请看我前面的文章

1、权限集准备:(全网发布成功后才可生效)

2、第三方收集法人微信、法人姓名、企业名称、信用代码四个商户信息外加第三方客服电话

3、企业名称需与工商部门登记信息一致;法人姓名与绑定微信银行卡的姓名一致。信息收集时要确保四个信息的对应关系,否则接口无法成功调用。

4、通过法人&企业主体校验,平台向法人微信下发模板消息。法人需在24 小时内点击消息,进行身份证信息与人脸识别信息收集;

5、信息收集完毕,验证通过后,即可创建已认证的小程序。第三方平台服务器可以收到创建 appid 信息(通过授权登录相关-授权事件接收 URL 接收信息);

6、第三方获得小程序 appid 后,可调用代码开发相关接口,完成后续的小程序代码开发。

以上6个步骤就是官方给咱们文档 ,我也只是copy主要的一部分展示 ,另外第五步,就是咱们上一篇文章里提到过的用来接收创建成功的小程序appid

依旧话不多说 ,直接上代码 快速创建小程序!!!

public static function createMini($id){

       $data = DB::table('shop_legal')
              ->where('id',$id)
              ->select('name','code','code_type','legal_persona_wechat','legal_persona_name','component_phone')
              ->first();

       $token = WxOtherController::getMiniToken();
		   
       if(!$token){
          return $data = ['status'=>"error"];
       }

        $url = "https://api.weixin.qq.com/cgi-bin/component/fastregisterweapp?action=create&component_access_token=".$token;
    	//$data = json_encode($data,256);
    	$data = json_encode($data,JSON_UNESCAPED_UNICODE);
		
        $res = postUrl($url,$data);
        $result = json_decode($res,true, 512, JSON_BIGINT_AS_STRING);

        return $result;
    }
	 /**
     * 授权事件接收URL (获取ticket与接收appid)
     * @access public
     *
     */
    public function verify_ticket(Request $request){
       	    ........
      ##############(上面是获取ticket部分,上一篇有就不占地方了)#############
            elseif($infoType == 'notify_third_fasteregister'){
                $status = $xml->getElementsByTagName('status')->item(0)->nodeValue;
                if($status == 0){
                    $appid = $xml->getElementsByTagName('appid')->item(0)->nodeValue;
                    $auth_code = $xml->getElementsByTagName('auth_code')->item(0)->nodeValue;
                    $str = "APPID:$appid,AUTH_CODE:$auth_code";
                    file_put_contents(storage_path('logs/Mini/MiniAppid.log'), '['.date('Y-m-d : h:i:s',time()).']'.$str."\r\n",FILE_APPEND);
                    DB::table('shop_legal')->where('id',DB::table('shop_legal')->max('id'))->update(['status'=>'1','appid'=>$appid]);

                    //获取授权方的帐号基本信息
                    $res = $this->getAuthorizerInfo($appid);
                    if($res['status'] == 'error'){
                        file_put_contents(storage_path('logs/Mini/MiniInfo.log'),'['.date('Y-m-d : h:i:s',time()).']'.$res['info']."\r\n",FILE_APPEND);
                    }
                   
                }else{
                     file_put_contents(storage_path('logs/Mini/Minierror.log'), '['.date('Y-m-d : h:i:s',time()).']'.$status."\r\n",FILE_APPEND);
                     if(in_array($status,array_keys(self::$info))){
                        $msg = self::$info[$status];
                     }
                     DB::table('shop_legal')->where('id',DB::table('shop_legal')->max('id'))->update(['msg'=>$msg,'status'=>'2']);
                }
                echo 'success';
            }
    }
	 /**
     * 获取授权方的帐号基本信息 包括头像,昵称,帐号类型,认证类型,微信号,原始ID和二维码图片URL
     * 注意:公众号和小程序的接口返回结果不一样
     * @param $authorizer_appid 授权方 appid
     * @access public
     *
     */
    public function getAuthorizerInfo($authorizer_appid)
    {
        $returnArray = ['status'=>'error','info'=>''];
       
        if($componentAccessToken = self::getMiniToken()){
            
            if($authorizer_appid){

                $row = json_encode(array(
                    'component_appid' => self::$appId,
                    'authorizer_appid' => $authorizer_appid
                ));
                
                $url = 'https://api.weixin.qq.com/cgi-bin/component/api_get_authorizer_info?component_access_token='.$componentAccessToken;

                $output = json_decode(postUrl($url,$row),true);
                
                //判断授权信息并且存入数据库中
                if(!empty($output['authorizer_info'])){
                    $info = $output['authorizer_info'];
                    $data = [
                            'create_time'      =>  time(),
                            'nick_name'        =>  $info['nick_name'],
                            'head_img'         =>  array_key_exists('head_img',$info)?$info['head_img']:'',
                            'verify_type_info' =>  json_encode($info['verify_type_info']),
                            'user_name'        =>  $info['user_name'],
                            'qrcode_url'       =>  $info['qrcode_url'],
                            'business_info'    =>  json_encode($info['business_info']),
                            'principal_name'   =>  $info['principal_name'],
                            'signature'        =>  $info['signature'],
                            'miniprograminfo'  =>  json_encode($info['MiniProgramInfo']),
                        ];

                    if(DB::table('shop_wxmini')->where('authorizer_appid',$authorizer_appid)->count()){
                        if(false !== DB::table('shop_wxmini')->where('authorizer_appid',$authorizer_appid)->update($data)){
                                $returnArray['status'] = 'success';
                        }else{
                            $returnArray['info'] = 'update error';
                        }
                    }else{
                        $data['authorizer_appid'] = $authorizer_appid;
                        if(DB::table('shop_wxmini')->insert($data)){
                            $returnArray['status'] = 'success';
                        }else{
                            $returnArray['info'] = 'insert error';
                        }
                    }

                }else{

                    $returnArray['info'] = 'not found authorizer_info';
                }
            }else{
    
                $returnArray['info'] = 'not found $authorizer_appid';
            }
        }else{

            $returnArray['info'] = 'get component_access_token fail';
        }
        
        return $returnArray;
    }

1.这里的 WxOtherController::getMiniToken(); 上一篇文章里有
2.JSON_UNESCAPED_UNICODE(中文不转为unicode ,对应的数字 256)
3. s t r = " A P P I D : str = "APPID: str="APPID:appid,AUTH_CODE:$auth_code"; 前者是新创建小程序appid 后者是授权码(这里多一嘴,此处的授权码就是留存,官方说最好别用)
在这里插入图片描述

写到这里 通过接口创建小程序已经ok啦 !!! 下一篇写授权流程

差点忘了 附上错误信息:

 //声明错误信息数组
    static public $info = [
                    "100001"=>  "已下发的模板消息法人并未确认且已超时(24h),未进行身份证校验",
                    "100002"=>  "已下发的模板消息法人并未确认且已超时(24h),未进行人脸识别校验",
                    "100003"=>  "已下发的模板消息法人并未确认且已超时(24h)",
                    "101"   =>  "工商数据返回:“企业已注销”",
                    "102"   =>  "工商数据返回:“企业不存在或企业信息未更新”",
                    "103"   =>  "工商数据返回:“企业法定代表人姓名不一致”",
                    "104"   =>  "工商数据返回:“企业法定代表人身份证号码不一致”",
                    "105"   =>  "法定代表人身份证号码,工商数据未更新,请 5-15 个工作日之后尝试",
                    "1000"  =>  "工商数据返回:“企业信息或法定代表人信息不一致”",
                    "1001"  =>  "主体创建小程序数量达到上限",
                    "1002"  =>  "主体违规命中黑名单",
                    "1003"  =>  "管理员绑定账号数量达到上限",
                    "1004"  =>  "管理员违规命中黑名单",
                    "1005"  =>  "管理员手机绑定账号数量达到上限",
                    "1006"  =>  "管理员手机号违规命中黑名单",
                    "1007"  =>  "管理员身份证创建账号数量达到上限",
                    "1008"  =>  "管理员身份证违规命中黑名单",
                    "-1"    =>  "企业与法人姓名不一致",
                ];

你可能感兴趣的:(微信第三方平台之代开发小程序)