2016-04-20 17:22:55 eadio 阅读数 8601
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27819 人正在学习 去看看 秦子恒

     首先声明,在接下来一系列公众号第三方开发教程中,核心原理是参照下面博主的源码:

http://www.cnblogs.com/sujingnan/p/4397203.html

拓展业务需求的。

 

     为什么会有这个教程系列,主要是因为公司业务拓展。之前是我们需要向客户索要公众号,帮他们管理一系列东西,现在需求更改为,让客户一键授权给我们,自己管理图文跳转消息。

 

     那么,首先我们需要到微信开放平台【公众号第三方平台】创建属于自己的第三方平台。【前提是你需要注册一个开放平台账号,这个和以前注册的公众号是不一样的,不能直接拿来使用,需要另外注册】。


1、注册开放平台账号----进入管理中心----进入公众号第三方平台----点击创建...。然后跟着步骤一步一步填写完,这里我已经创建好了,但是要讲下第三步一些填写开放资料需要注意的。

 

2、我这里创建的是mvc项目,以下某些术语都是根据c#语法来的。

首先,授权流程相关----授权事件url,这个地址要具体填写到项目里头的方法,而且必须是post方法。


微信文档上说的太含糊了,不过也有可能是我笨,理解力不足!尴尬我这里解释下:其实是因为有了这个方法,微信每隔十分钟会请求这个地址。然后附加一些参数【签名啊、时间戳等等】,然后我们透过这些参数来获取component_verify_ticket协议。然后返回"success"字符串告诉微信我们已经获取到了协议串。大致可以理解为:jQueryajax方法,就是在前端开发的时候,只要先装好url,通过附加data参数,返回的值出来就好了。只不过微信请求的时候没有细致说附加了哪些参数。尤其是加密数据,因此才通过获取流数据方式读取。

3、授权后,其他的业务在公众号消息与事件接受url设定的地址上执行。最后提交审核。通过可以在管理中心查看,未全网发布前,还可以继续修改平台信息。


 


 

2019-08-16 15:28:32 qq_33741933 阅读数 78
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27819 人正在学习 去看看 秦子恒

1.登陆【微信公众号平台】,打开【设置】>>>【微信认证】检查当前公众号是否认证,如果没有,需要先进行微信认证。

2..打开【微信公众号平台】中的【基本配置】,将服务器的IP添加到【公众号开发信息】的【IP白名单】中

3.打开【微信公众号平台】中的【公众号设置】里面的【功能设置】,分别在【业务域名】和【JS接口安全域名】两项中填写当      前项目的二级域名(听说好像必须是二级域名,而且必须是备案过的),配置域名时****.txt这个文件存放的路径为服务器tomcat所映射的项目文件夹,比如:

    

    那么,你就需要把这个****.txt文件放在这里

     

       如果放的位置正确,那么填完域名确定的时候是会验证通过的。

4.设置完以上地方,现在就该使用微信的JSSDK进行分享页标题,概述,缩略图的自定义了

首先,在要分享的html中添加引用

<script type="text/javascript" src="https://res2.wx.qq.com/open/js/jweixin-1.4.0.js"></script>

然后

<script>
    $(function () {
        $.ajax({
            url: 'getWxConfig',
            type: 'POST',
            dataType: 'json',
            data: {"url": encodeURIComponent(window.location.href.split("#")[0])}
        }).done(function (res) {
            console.log(res)
            wx.config({
                debug: ture, //调试阶段建议开启,在线上时需要改为false
                appId: res.appId,//APPID
                timestamp: res.timestamp,//上面main方法中拿到的时间戳timestamp
                nonceStr: res.nonceStr,//上面main方法中拿到的随机数nonceStr
                signature: res.signature,//上面main方法中拿到的签名signature
                //需要调用的方法接口
                jsApiList: ['onMenuShareTimeline', 'onMenuShareAppMessage', 'onMenuShareWeibo', 'onMenuShareQQ', 'onMenuShareQZone']
            });
        })

        wx.ready(function () {
            wx.onMenuShareTimeline({
                title: "", // 分享标题
                link: window.location.href, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
                imgUrl: "", // 分享页的缩略图(绝对路径/在线引用路径)
                success: function () {
                    // alert("成功")
                    // 用户点击了分享后执行的回调函数
                    alert("分享成功!!!");
                }
            });
            wx.onMenuShareAppMessage({
                title: "", // 分享标题
                desc: "", // 分享描述
                link: window.location.href, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
                imgUrl: "", // 分享页的缩略图(绝对路径/在线引用路径)
                type: '', // 分享类型,music、video或link,不填默认为link
                dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
                success: function () {
                    // 用户点击了分享后执行的回调函数
                    alert("分享成功!!!");
                }
            });
        });
    })
</script>

然后后台编写一个名为WxController的controller

import net.sf.json.JSONObject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

/**
 * 微信分享
 *
 * @author cd
 * @date 2019-8-16
 */
@Controller
public class WxController {

    /**
     * 获取Access_token
     *
     * @param appId     公众号appId
     * @param appSecret 公众号密钥
     * @return
     */
    public static String getAccess_token(String appId, String appSecret) {
        String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appId + "&secret=" + appSecret;
        String accessToken = null;
        try {
            URL urlGet = new URL(url);
            HttpURLConnection http = (HttpURLConnection) urlGet.openConnection();
            // 必须是get方式请求
            http.setRequestMethod("GET");
            http.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
            http.setDoOutput(true);
            http.setDoInput(true);
            // 连接超时30秒
            System.setProperty("sun.net.client.defaultConnectTimeout", "30000");
            // 读取超时30秒
            System.setProperty("sun.net.client.defaultReadTimeout", "30000");
            http.connect();
            InputStream is = http.getInputStream();
            int size = is.available();
            byte[] jsonBytes = new byte[size];
            is.read(jsonBytes);
            String message = new String(jsonBytes, "UTF-8");
            JSONObject jsonObj = JSONObject.fromObject(message);
            accessToken = jsonObj.getString("access_token");
        } catch (Exception e) {
            e.printStackTrace();
        }
        return accessToken;
    }


    /**
     * 获得ACCESS_TICKET
     *
     * @param access_token
     * @return
     */
    public static String getAccess_ticket(String access_token) {
        String ticket = null;
        //这个url链接和参数不能变
        String url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + access_token + "&type=jsapi";
        try {
            URL urlGet = new URL(url);
            HttpURLConnection http = (HttpURLConnection) urlGet.openConnection();
            // 必须是get方式请求
            http.setRequestMethod("GET");
            http.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
            http.setDoOutput(true);
            http.setDoInput(true);
            // 连接超时30秒
            System.setProperty("sun.net.client.defaultConnectTimeout", "30000");
            // 读取超时30秒
            System.setProperty("sun.net.client.defaultReadTimeout", "30000");
            http.connect();
            InputStream is = http.getInputStream();
            int size = is.available();
            byte[] jsonBytes = new byte[size];
            is.read(jsonBytes);
            String message = new String(jsonBytes, "UTF-8");
            JSONObject demoJson = JSONObject.fromObject(message);
            System.out.println("JSON字符串:" + demoJson);
            ticket = demoJson.getString("ticket");
            is.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return ticket;
    }

    /**
     * 将字符串进行sha1加密
     *
     * @param decript
     * @return
     */
    public static String SHA1(String decript) {
        try {
            MessageDigest digest = java.security.MessageDigest.getInstance("SHA-1");
            digest.update(decript.getBytes());
            byte messageDigest[] = digest.digest();
            // Create Hex String
            StringBuffer hexString = new StringBuffer();
            // 字节数组转换为 十六进制 数
            for (int i = 0; i < messageDigest.length; i++) {
                String shaHex = Integer.toHexString(messageDigest[i] & 0xFF);
                if (shaHex.length() < 2) {
                    hexString.append(0);
                }
                hexString.append(shaHex);
            }
            return hexString.toString();

        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return "";
    }

    /**
     * 页面中wx.config所要调用的接口
     *
     * @param request
     * @param response
     */
    @RequestMapping("getWxConfig")
    @ResponseBody
    public void doPost(HttpServletRequest request, HttpServletResponse response) {
        //appId和appSecret
        String appId = "公众号appid";
        String appSecret = "公众号密钥";

        //外部传入url获取url url需要是微信中打开的url否则会报错。
        String URL = request.getParameter("url");
        //转换url

        String url = "";
        //需要转换解码url
        try {
            url = java.net.URLDecoder.decode(URL, "UTF-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }

        //获取access_token
        String aeecss_token = getAccess_token(appId, appSecret);

        //获取access_ticket
        String aeecss_ticket = getAccess_ticket(aeecss_token);

        //3、时间戳和随机字符串
        String nonceStr = UUID.randomUUID().toString().replace("-", "").substring(0, 16);
        String timestamp = String.valueOf(System.currentTimeMillis() / 1000);

        //4、获取url,将参数排序并拼接字符串
        String str = "jsapi_ticket=" + aeecss_ticket + "&noncestr=" + nonceStr + "&timestamp=" + timestamp + "&url=" + url;

        //6、将字符串进行sha1加密
        String signature = SHA1(str);

        Map<String, String> map = new HashMap();
        map.put("appId", appId);
        map.put("timestamp", timestamp);
        map.put("accessToken", aeecss_token);
        map.put("ticket", aeecss_ticket);
        map.put("nonceStr", nonceStr);
        map.put("signature", signature);
        JSONObject jsonObject = JSONObject.fromObject(map);

        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setContentType("application/json;charset=UTF-8");
        response.setCharacterEncoding("UTF-8");

        PrintWriter pw = null;
        try {
            pw = response.getWriter();
        } catch (IOException e1) {
            e1.printStackTrace();
        }
        pw.write(jsonObject.toString());
        pw.close();
    }

}

  最后,在微信中打开要分享的页面,点击右上角>>【发送给朋友】,就可以看到效果啦(需要在线上测试

2019-04-11 10:30:17 qq_31790023 阅读数 102
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27819 人正在学习 去看看 秦子恒

如果用户在微信公众号客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑。

关于网页授权回调域名的说明

1、在微信公众号请求用户网页授权之前,开发者需要先到公众平台官网中的“开发 - 接口权限 - 网页服务 - 网页帐号 - 网页授权获取用户基本信息”的配置选项中,修改授权回调域名。请注意,这里填写的是域名(是一个字符串),而不是URL,因此请勿加 http:// 等协议头;

2、授权回调域名配置规范为全域名,比如需要网页授权的域名为:www.qq.com,配置以后此域名下面的页面http://www.qq.com/music.html 、 http://www.qq.com/login.html 都可以进行OAuth2.0鉴权。但http://pay.qq.com 、 http://music.qq.comhttp://qq.com无法进行OAuth2.0鉴权

3、如果公众号登录授权给了第三方开发者来进行管理,则不必做任何设置,由第三方代替公众号实现网页授权即可

注意:配置的回调域名一定要是字符串,不能加地址符号,切记。

2016-11-15 10:56:04 wei389083222 阅读数 4115
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27819 人正在学习 去看看 秦子恒

个人感觉微信在第三方平台开发者这块的开发文档写的很不友好,很隐晦,我在开发的过程总结的一些东西,写出来给大家分享一下。恩,就这样吧。

一、注册第三方平台账号
打开https://open.weixin.qq.com/cgi-bin/index?t=home/index&lang=zh_CN页面,点击注册,按照提示步骤完成注册,并向微信交上300大洋完成认证。

二、创建公众号第三方平台
在管理中心,创建公众号第三方平台。如下图:

这里写图片描述

点击创建。下面是一些参数的必要介绍:
(1)权限集:即该第三方公众账号能替别人实现的业务模块有哪些。我这里选择了:网页服务权限,用户管理权限。详细权限集介绍点击这里
(2)开发者资料
1、登录授权相关:第三方公众号要代普通公众号实现业务首先要通过普通公众号的授权。

  • 登录授权发起页域名:该域名必须是在微信验证,且你的后台服务是发布在80端口的。
  • 授权测试公众号列表:这里填写的是普通公众号的原始ID,例如:gh_989XXXXX。不是appID.
  • 授权事件接受的URL:微信会每10分钟会向该接口地址推送一段加密的mxl,开发者需要接受解密xml获取和授权相关的有效信息。(具体代码实现我会在下篇写到)

2、授权后代替公众号实现业务

  • 公众号消息校验token: 用来和微信身份确认令牌,开发者自己注册后微信和该第三方公众号绑定用来确认身份。
  • 公众号消息加密解密key:也是有开发者自己注册,微信保存,用来加密和解密的key.
  • 公众号消息与事件接受URL:当公众号授权完成后,会接收到各种粉丝的事件,例如:关注和取消关注,上报地理位置等等,还有一些文本消息。这时候微信会向第三方平台该接口地址推送一段加密的xml,开发者需要解密后,并且向微信回复接收成功。

3、白名单

  • 开发测试阶段只能接受白名单测试公众号的授权,全网发布之后就可接受全体公众号的授权。
  • 白名单iP列表:填写授权域名的IP地址,和你测试用到的IP地址。

全部填写完成后,如下图:

这里写图片描述

三、创建完成,准备开发
创建完成后,就可以准备开发了,上述填写的这些资料都可以修改。
这里写图片描述

未完待续。。。

2017-09-19 16:52:28 jianai0602 阅读数 6145
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27819 人正在学习 去看看 秦子恒

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

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

需要注意:如果在调试过程中返回了错误码请到小程序代开发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;
  }

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

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


微信打开第三方app

阅读数 5796

没有更多推荐了,返回首页