Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >微信开发--微信公众号(一)

微信开发--微信公众号(一)

作者头像
生南星
发布于 2019-07-22 06:35:55
发布于 2019-07-22 06:35:55
23.1K00
代码可运行
举报
文章被收录于专栏:生南星生南星
运行总次数:0
代码可运行

工具: 微信公众号,新浪云(还有云豆

),SourceTree

准备: 开通一个微信测试号并关注(毕竟不是测试号我们没有那么多权限啦.)

微信公众平台开发者文档--接入指南

1.在新浪云服务器的仓库里新建PHP文件,右键url访问,复制url地址在 微信测试账号的 接口配置信息里,Token 随便起一个 (好记的)名字

2.配置PHP文件并上传服务器,配置按照 微信公众号开发者文档 接入指南,第一步已经在第一条完成

3, 第二步 下载PHP示例代码,解压打开PHP文件夹下的 sha1.php 文件, 修改文件信息如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php
include_once "errorCode.php";
/**
 * SHA1 class
 *
 * 计算公众平台的消息签名接口.
 */
class SHA1
{
  /**
   * 用SHA1算法生成安全签名
   * @param string $token 票据
   * @param string $timestamp 时间戳
   * @param string $nonce 随机字符串
   * @param string $encrypt 密文消息
   */
  function getSHA1($token, $timestamp, $nonce)
{
      $array = array($token, $timestamp, $nonce);
      sort($array, SORT_STRING);
      $str = implode($array);
      return array(sha1($str));
  }
}
?>

4. 将上传服务器的PHP文件在本地修改上传服务器, PHP文件(暂时取名 wecart.php)代码示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php
function getSHA1($token, $timestamp, $nonce)
{
      $array = array($token, $timestamp, $nonce);
      sort($array, SORT_STRING);
      $str = implode($array);
      return array(sha1($str));
    }

    //消息验证
    function checkSign(){
        // 获取get请求来的四个参数和token
        $signature = $_GET["signature"];
        $timestamp = $_GET["timestamp"];
        $nonce = $_GET["nonce"];
        $echostr = $_GET["echostr"];
        $token = "njb";
        
        $arr = getSHA1($token, $timestamp, $nonce);
        if($arr[0] == $signature){
            echo $echostr;
        }
    }
?>

此PHP代码执行途中 2,4,5步骤,验证消息是否来自微信服务器,微信服务器将消息传给第三方服务器时进入的就是这个文档.

完成这些步骤后,接口就配置成功啦.

微信公众平台开发者文档--获取access_token

官方文档是这样说的.

access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。

5. 将封装的网络请求PHP文件 network.php 放进仓库, 代码示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php
//把网络请求封装成函数, 写到该文件中, 如果需要使用网络请求, 就导入该文件
//使用php来发送请求

//通过curl的方式发送请求(微信公众号推荐的方式)

function httpGet($url) {
  //A.初始化curl请求
  $curl = curl_init();
  //B.配置请求  
  //1.返回的数据以文件流的形式返回
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
  //2.超时时间
  curl_setopt($curl, CURLOPT_TIMEOUT, 500);
  //3.请求的url
  curl_setopt($curl, CURLOPT_URL, $url);
  //如果需要支持https请求
  //4.开启ssl验证
  curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, TRUE);
  //5.支持所有主机的https请求, 2代表所有
  curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);
  //C.执行请求, 并获取响应数据
  $response = curl_exec($curl);
  //D.断开请求
  curl_close($curl);
  //E.返回数据
  return $response;
}

function httpPost($url, $data, $isJson = false) {
  //A.初始化curl请求
  $curl = curl_init();
  //B.配置请求  
  //1.返回的数据以文件流的形式返回
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
  //2.超时时间
  curl_setopt($curl, CURLOPT_TIMEOUT, 500);
  //3.请求的url
  curl_setopt($curl, CURLOPT_URL, $url);
  //4.请求的参数(application/x-www-form-urlencoded)
  curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
  //如果参数类型不是application/x-www-form-urlencoded, 需要修改contentype
  if ($isJson) {
    curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-type:application/json"));
  }
  //如果需要支持https请求
  //5.开启ssl验证
  curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, TRUE);
  //6.支持所有主机的https请求, 2代表所有
  curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);
  //C.执行请求, 并获取响应数据
  $response = curl_exec($curl);
  //D.断开请求
  curl_close($curl);
  //E.返回数据
  return $response;
}
?>

此文件用来发起网络请求.

6.新浪云创建数据库

用户管理--创建用户 ,

数据库管理--新建一个数据库名,

新建数据库后面的管理用户--选择刚才用户管理的用户名,

主从管理 --管理 进入数据库,用你刚才的用户密码登录,创建一个表,写两个字段, 分别为token,time

7. 新建 accessToken.php 文件, 代码实例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!-- 
    每次需要token时,引入本地文件,并调用getAccessToken()获取token
    第一次调用时,数据库里没有数据,直接获取新的token,插入数据库并返回新的token
    以后在调用时,先判断数据库里的token是否过期,如果过期重新请求新的token,更新数据库并返回;未过期,直接返回
 -->
<?php
    include_once "network.php";
    // 获取新token
    function getNewAccessToken(){
        $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wxf7cacd411668f918&secret=7cc101ad499b231a1e549529254d4e09";
        $jsonStr = httpGet($url);

        $obj = json_decode($jsonStr);

        return $obj->access_token;
    }

    function getAccessToken(){
        // 连接数据库
        $mysqli = new mysqli("pbqdrxxwizfr.mysql.sae.sina.com.cn","data_base1","ningbo1997","data_pool1","10556");
        if($mysqli->connect_error){
            exit("数据库连接失败!");
        }

        $mysqli->set_charset("utf8");

        $sql = "select * from access_token";

        $res = $mysqli->query($sql);

        $arr = mysqli_fetch_all($res,MYSQL_NUM);

        if(count($arr) == 0){
            // 第一次使用token,获取新的token并插入数据库,返回token
            $token = getNewAccessToken();
            // 获取时间戳 单位s
            $time = time();
            $insertStr = "insert into access_token (token,time) values ('{$token}','{$time}')";
            if(!$mysqli->query($insertStr)){
                exit('插入数据失败!');
            }
            return $token;
        }else {
            // 判断token是否过期
            $time = $arr[0][1];
            // 获取当前时间
            $now = time();
            if($now - $time > 7100){
                // 过期,重新请求新的token,更新数据库,返回token
                $token = getNewAccessToken();
                
                $updateStr = "update access_token set token='{$token}',time='{$now}'";

                if(!$mysqli->query($updateStr)){
                    exit('更新token失败!');
                }
                return $token;
            }else {
                // 未过期,直接返回token
                return $arr[0][0];
            }
        }
    }
?>

上传服务器后,右键此文件 url访问 , 不断刷新浏览器, 如果返回的字符串始终不变,看一眼数据库,只有一个长度,恭喜你 这一步成功了.

微信公众平台开发者文档--自定义菜单--自定义菜单创建接口

8. 新建一个PHP文件,我取名 menu.php ,此文件用来自定义菜单,代码示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php
    include_once "accessToken.php";

    //创建菜单
    function createMenu(){
        $url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=".getAccessToken();

        $jsonStr = <<<Menu
        {
            "button":[
             {
                  "name":"点击事件",
                  "sub_button":[
                  {    
                      "type":"click",
                      "name":"发送文字",
                      "key":"sendText"
                   },
                   {    
                    "type":"click",
                    "name":"发送图片",
                    "key":"sendImg"
                 },
                 {    
                    "type":"click",
                    "name":"发送语音",
                    "key":"sendVoice"
                 },
                 {    
                    "type":"click",
                    "name":"发送视频",
                    "key":"sendVideo"
                 },
                 {    
                    "type":"click",
                    "name":"发送图文",
                    "key":"sendArticles"
                 }]
              },
              {
                "name":"手机扫码",
                "sub_button":[
                {    
                    "type":"scancode_push",
                    "name":"扫码推事件",
                    "key":"rselfmenu_0_0"
                 },
                 {    
                  "type":"scancode_waitmsg",
                  "name":"扫码带提示",
                  "key":"rselfmenu_0_1"
               },
               {    
                  "type":"pic_sysphoto",
                  "name":"拍照发图",
                  "key":"rselfmenu_0_2"
               },
               {    
                  "type":"pic_photo_or_album",
                  "name":"相册发图",
                  "key":"rselfmenu_0_3"
               },
               {    
                  "type":"pic_weixin",
                  "name":"微信相册",
                  "key":"rselfmenu_0_4"
               }]
            },
            {
                "name":"位置跳转",
                "sub_button":[
                {    
                    "type":"view",
                    "name":"百度首页",
                    "url":"http://www.baidu.com"
                 },
                 {    
                  "type":"location_select",
                  "name":"发送位置",
                  "key":"location"
               }]
            }]
        }
Menu;
            // 发送post请求
            $data = httpPost($url, $jsonStr, true);
            echo $data;
    }
     createMenu();
?>

上传服务器后,右键此文件 url访问,如果返回 {"errcode":0,"errmsg":"ok"},恭喜你,成功了,快进你的测试号看看吧.

如果返回 {"errcode":40018,"errmsg":"invalid button name size"},请自己对照全局返回码说明,自己百度啦.此时你的测试公众号应该已经有了你自定义的菜单了.

接下来要做的就是在接收到微信客户端发来的消息后,服务器要返回什么样的数据.

接收消息,被动回复用户消息

微信公众平台--素材管理--新增临时素材 里列举的文件可先直接上传服务器,然后发起请求,在主页面(上述 wecart.php 文件)复制文档,作出修改.

图文消息无需上传服务器,因此只在主页面做修改.

wecart.php

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php
function getSHA1($token, $timestamp, $nonce)
{
      $array = array($token, $timestamp, $nonce);
      sort($array, SORT_STRING);
      $str = implode($array);
      return array(sha1($str));
    }

    //消息验证
    function checkSign(){
        // 获取get请求来的四个参数和token
        $signature = $_GET["signature"];
        $timestamp = $_GET["timestamp"];
        $nonce = $_GET["nonce"];
        $echostr = $_GET["echostr"];
        $token = "njb";
        
        $arr = getSHA1($token, $timestamp, $nonce);
        if($arr[0] == $signature){
            echo $echostr;
        }
    }

     // 判断当前操作是验证服务器还是处理消息
     if(isset($_GET["echostr"])){
        checkSign();
    }else {
        responseMessage();
    }

    // 处理消息的方法
    function responseMessage(){
        // 获取post过来的xml数据包
        $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
        if(empty($postStr)){
            exit;
        }

        // 直接将xml数据转换成对象
        $xmlObj = simplexml_load_string($postStr,"SimpleXMLElement",LIBXML_NOCDATA);
        // 将消息分成两类(普通消息和推送消息)
        if($xmlObj->MsgType == "event"){
            // 推送消息
            switch($xmlObj->EventKey){
                case "sendText":{
                    sendTextMsg($xmlObj,"啦啦啦");
                    break;
                }
                case "sendImg":{
                    sendImgMsg($xmlObj);
                    break;
                }
                case "sendVoice":{
                    sendVoiceMsg($xmlObj);
                    break;
                }
                case "sendVideo":{
                    sendVideoMsg($xmlObj);
                    break;
                }
                case "sendArticles":{
                    sendPicMsg($xmlObj);
                    break;
                }
                case "sendThumb":{
                    
                }
            }
        }else {
            // 普通消息
        }
    }

    // 回复文本消息
    function sendTextMsg($obj, $content){
        $to = $obj->FromUserName;
        $from = $obj->ToUserName;
        $time = time();

        $msg = <<<MSG
        <xml>
        <ToUserName><![CDATA[{$to}]]></ToUserName>
        <FromUserName><![CDATA[{$from}]]></FromUserName>
        <CreateTime>{$time}</CreateTime>
        <MsgType><![CDATA[text]]></MsgType>
        <Content><![CDATA[{$content}]]></Content>
      </xml>
MSG;
        echo $msg;
    }

    // 回复图片消息
    function sendImgMsg($obj){
        $to = $obj->FromUserName;
        $from = $obj->ToUserName;
        $time = time();
        $msg = <<<MSG
        <xml>
          <ToUserName><![CDATA[{$to}]]></ToUserName>
          <FromUserName><![CDATA[{$from}]]></FromUserName>
          <CreateTime>{$time}</CreateTime>
          <MsgType><![CDATA[image]]></MsgType>
          <Image>
            <MediaId><![CDATA[uN11VPUDBxn2-aWJFbVe5LpM8iiwQdzfHv9W-zCVMMLq3Sq7fAYVZoGYwGCgUD0z]]></MediaId>
          </Image>
        </xml>

MSG;
        echo $msg;
    }

    // 回复视频消息
    function sendVideoMsg($obj){
        $to = $obj->FromUserName;
        $from = $obj->ToUserName;
        $time = time();
        $msg = <<<MSG
        <xml>
        <ToUserName><![CDATA[{$to}]]></ToUserName>
        <FromUserName><![CDATA[{$from}]]></FromUserName>
        <CreateTime>{$time}</CreateTime>
        <MsgType><![CDATA[video]]></MsgType>
        <Video>
            <MediaId><![CDATA[DCrPiHYglz8q4gd8vzBq9eXhUmF11FdlfWxSTeH-SVfdE-95Ki0s3iLIZU5YPm6n]]></MediaId>
            <Title><![CDATA[二叔翻跟斗]]></Title>
            <Description><![CDATA[沙雕沙雕]]></Description>
        </Video>
        </xml>
MSG;
        echo $msg;
    }

    //回复语音消息
    function sendVoiceMsg($obj){
        $to = $obj->FromUserName;
        $from = $obj->ToUserName;
        $time = time();
        $msg = <<<MSG
        <xml>
        <ToUserName><![CDATA[{$to}]]></ToUserName>
        <FromUserName><![CDATA[{$from}]]></FromUserName>
        <CreateTime>{$time}</CreateTime>
        <MsgType><![CDATA[voice]]></MsgType>
        <Voice>
            <MediaId><![CDATA[NHYvaxhScrBG3i3DB2lIs896ea49jm3aH1R1jOnUxpEhxTb-aXCk28IcBGyuQjcm]]></MediaId>
        </Voice>
        </xml>
MSG;
        echo $msg;
    }

    //回复图文消息
    function sendPicMsg($obj){
        $to = $obj->FromUserName;
        $from = $obj->ToUserName;
        $time = time();
        $msg = <<<MSG
        <xml>
        <ToUserName><![CDATA[{$to}]]></ToUserName>
        <FromUserName><![CDATA[{$from}]]></FromUserName>
        <CreateTime>{$time}</CreateTime>
        <MsgType><![CDATA[news]]></MsgType>
        <ArticleCount>2</ArticleCount>
        <Articles>
            <item>
            <Title><![CDATA[个性穿搭,酷爽今夏]]></Title>
            <Description><![CDATA[上班前穿什么不知道,看完这篇文章,一周的穿搭都有了! 星期一 星期一的早晨可以戴个眼镜出门,既可以遮挡周一赖床后的打肿脸,又能美美的造型下。]]></Description>
            <PicUrl><![CDATA[https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1558625352962&di=60b26754c82dbf2ccbfbd6776bd3dcba&imgtype=0&src=http%3A%2F%2Fvpic.video.qq.com%2F32343568%2Fu0349xuj7wf_ori_3.jpg]]></PicUrl>
            <Url><![CDATA[https://mp.weixin.qq.com/s/B0wEKM-bPfHrfAEDxO-fsw]]></Url>
            </item>
            <item>
            <Title><![CDATA[个性穿搭,酷爽今夏001]]></Title>
            <Description><![CDATA[上班前穿什么不知道,看完这篇文章,一周的穿搭都有了! 星期一 星期一的早晨可以戴个眼镜出门,既可以遮挡周一赖床后的打肿脸,又能美美的造型下。001]]></Description>
            <PicUrl><![CDATA[https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1558625313274&di=a919a3ea70018659c997079ccf60b26f&imgtype=0&src=http%3A%2F%2Fimg.alicdn.com%2Ftfscom%2Fi4%2F48941084%2FTB2XIW4amIb61BjSZFDXXa0yVXa_%2521%252148941084.jpg]]></PicUrl>
            <Url><![CDATA[https://mp.weixin.qq.com/s/zV79zuhOpmUrJYf3VkCmYA]]></Url>
            </item>
        </Articles>
        </xml>
MSG;
        echo $msg;
    }
?>

menu.php

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php
    include_once "accessToken.php";

    //创建菜单
    function createMenu(){
        $url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=".getAccessToken();

        $jsonStr = <<<Menu
        {
            "button":[
             {
                  "name":"点击事件",
                  "sub_button":[
                  {    
                      "type":"click",
                      "name":"发送文字",
                      "key":"sendText"
                   },
                   {    
                    "type":"click",
                    "name":"发送图片",
                    "key":"sendImg"
                 },
                 {    
                    "type":"click",
                    "name":"发送语音",
                    "key":"sendVoice"
                 },
                 {    
                    "type":"click",
                    "name":"发送视频",
                    "key":"sendVideo"
                 },
                 {    
                    "type":"click",
                    "name":"发送图文",
                    "key":"sendArticles"
                 }]
              },
              {
                "name":"手机扫码",
                "sub_button":[
                {    
                    "type":"scancode_push",
                    "name":"扫码推事件",
                    "key":"rselfmenu_0_0"
                 },
                 {    
                  "type":"scancode_waitmsg",
                  "name":"扫码带提示",
                  "key":"rselfmenu_0_1"
               },
               {    
                  "type":"pic_sysphoto",
                  "name":"拍照发图",
                  "key":"rselfmenu_0_2"
               },
               {    
                  "type":"pic_photo_or_album",
                  "name":"相册发图",
                  "key":"rselfmenu_0_3"
               },
               {    
                  "type":"pic_weixin",
                  "name":"微信相册",
                  "key":"rselfmenu_0_4"
               }]
            },
            {
                "name":"位置跳转",
                "sub_button":[
                {    
                    "type":"view",
                    "name":"百度首页",
                    "url":"http://www.baidu.com"
                 },
                 {    
                  "type":"location_select",
                  "name":"发送位置",
                  "key":"location"
               }]
            }]
        }
Menu;
            // 发送post请求
            $data = httpPost($url, $jsonStr, true);
            echo $data;
    }
    // createMenu();

    // 上传图片
    function uploadImg(){
        $token = getAccessToken();
        $url = "https://api.weixin.qq.com/cgi-bin/media/upload?access_token={$token}&type=image";

        $fPath = "timg.jpg";

        $data = array(
            'media'=>new CURLFile($fPath)
        );
        $res = httpPost($url, $data);
        echo $res;
    }
    uploadImg();

    //上传视频
    function uploadVideo(){
        $token = getAccessToken();
        $url = "https://api.weixin.qq.com/cgi-bin/media/upload?access_token={$token}&type=video";

        $yPath = "1.mp4";

        $data = array(
            'media'=>new CURLFile($yPath)
        );
        $res = httpPost($url, $data);
        echo $res;
    }
    uploadVideo();

    // 上传语音
    function uploadVoice(){
        $token = getAccessToken();
        $url = "https://api.weixin.qq.com/cgi-bin/media/upload?access_token={$token}&type=voice";

        $yPath = "2.mp3";

        $data = array(
            'media'=>new CURLFile($yPath)
        );
        $res = httpPost($url, $data);
        echo $res;
    }
    uploadVoice();
?>

最后的效果如下图:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生南星 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
微信开发--微信公众号 代码示例
wechart.php <?php include_once "network.php"; function getSHA1($token, $timestamp, $nonce) { $
生南星
2019/07/22
13.1K0
微信公众号开发(一)服务器及接口的配置
关于微信公众号中的订阅号和服务的区别这里不多加讨论,网上有很多资源可以搜到,这里直接进入正题,如果是个人开发者,这里建议使用测试号进行开发学习,测试号的权限要比个人订阅号要多的多,而本篇博客也是基于测试号进行开发的。
全栈程序员站长
2022/09/06
9.6K1
微信公众号开发(一)服务器及接口的配置
独立开发微信公众号服务的一次复盘
上篇文章主要分享了异步编程的一些经验。主要包括回调函数,发布订阅,Promise,async await以及yield关键字。
terrence386
2022/07/14
4750
独立开发微信公众号服务的一次复盘
微信公众号推送如何写代码
写微信公众号推送的代码需要用到微信公众平台提供的开发者文档和API接口。以下是一个示例代码,包含了获取用户信息和回复文本消息:
hide
2023/12/12
3760
微信公众号推送如何写代码
微信公众号推送消息笔记
根据业务需要,开发一个微信公众号的相关开发,根据相关开发和整理总结了一下相关的流程和需要,进行一些整理和总结分享给大家,最近都在加班和忙碌,博客已经很久未更新了,打气精神,再接再厉,申请、认证公众号的一系列流程就不在这里赘述了,主要进行的是技术的分享,要达到的效果如下图:
stark张宇
2024/07/23
3990
公众号服务器搭建与交互原理
自此已经成功创建 http://1.maizi.applinzi.com 这个应用。
一粒小麦
2019/07/18
2.3K0
公众号服务器搭建与交互原理
【黄啊码】php结合微信公众号实现裂变海报(基本技术点)
微信公众号裂变式营销代码实现,先讲下基础原理,先生成带有用户参数的二维码,然后用php自带的gd库处理,生成带有用户头像,昵称,参数二维码,营销信息的自定义图片,再将图片传入微信公众号临时素材,当其他用户扫描这个专属推荐码的时候,获取用户的昵称返回给推荐者,并存入数据库,以记录当前有多少人扫描了二维码。
黄啊码
2022/06/15
1K0
关于chatGPT接入微信公众号
最近OpenAI的chatGPT出圈了,既然是对话程序,自然而然就会想到能跟公众号结合,于是我研究了一下,实现了本公众号的chatGPT接入,关注并跟我公众号对话即可体验:
花叔
2023/01/05
28.3K7
关于chatGPT接入微信公众号
微信公众号-开发者-自定义菜单-CLICK事件处理
  想点击菜单,推送消息。功能很简单,坑了我一天时间。在此笔记。 菜单代码: { "button":[ { "type":"click", "name":"今日歌曲", "key":"V1001_TODAY_MUSIC" }, { "name":"菜单", "sub_button":[ { "t
deepcc
2018/05/16
1.7K0
微信API接口(全) - 微信支付/微信红包/微信卡券/微信小店/JSAPI
微信入口绑定,微信事件处理,微信API全部操作包含在这些文件中。 微信支付、微信红包、微信卡券、微信小店。
程序猿的栖息地
2022/04/29
18.3K0
微信API接口(全) - 微信支付/微信红包/微信卡券/微信小店/JSAPI
微信公众平台百度天气预报开发
1.登录百度ak申请: http://lbsyun.baidu.com/apiconsole/key
SmileNicky
2019/01/17
1.2K0
微信公众平台开发 自定义菜单
自定义菜单能够帮助公众号丰富界面,让用户更好更快地理解公众号的功能。开启自定义菜单后,公众号界面如图所示:
庞小明
2018/09/19
2.1K0
微信公众平台开发 自定义菜单
公众号关注/订阅事件-微信公众号开发
微信公众号开发之关注事件(订阅事件),当我们启用开发者设置后,微信本身的消息回复将无法使用,那么在用户关注我们公众号的时候就没有任何反馈了, 对用户体验是非常不友好的。下面教大家如果做关注事件,既用户关注公众号,系统给用户一个反馈。
申霖
2019/12/27
8.6K0
公众号关注/订阅事件-微信公众号开发
Java微信公众号开发(附源码!!!)
笔者最近在为一个艺考服务团队开发手机端的服务,由于开发app需要的时间较长,所以选择开发微信公众号。本人比较擅长Java开发,所以本文是基于Java语言的公众号开发。话不多说,直接进入正题。
全栈程序员站长
2022/08/29
8300
Java微信公众号开发(附源码!!!)
巧用 Serverless,轻松搭建微信公众号的智能后台服务
一般来说,想给微信公众号增加更多的功能,需要有一台服务器,来进行公众号后台服务的搭建。那么在 Serverless 架构下,是否有更简便的方法来实现这么一个公众号后台呢?我们试试? 初步搭建 一、Serverless 原生开发 首先要有一个微信公众号! 接下来,我们要为我们的函数计算服务申请固定 IP: 点击白名单之后,我们可以填写表单,完成固定公网出口 IP 的申请。 接下来进行代码开发。 将函数绑定到公众号后台,并按照文档在函数中完成一个基本的鉴定功能: def checkSignature(
腾讯云serverless团队
2020/05/22
3.8K0
php-微信公众号与新浪sae接口代码
定义TOKEN,开发启用时用到; 定义一个wechatCallbackapiTest()的类; 验证消息确实来自微信服务器; 接受原始的xml数据包; 封装你想发送的xml数据返回给用户;
kdyonly
2023/03/03
5340
相关推荐
微信开发--微信公众号 代码示例
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验