微信公众账号开发入门

此文记录了微信公众号开发的整个流程,想要调用微信 JS API 并非直接引入一个 jweixin-1.0.0.js 到页面里那么简单。需要获取 access_token, jsapi_ticken 和签名 sign等。其中的任何一个步骤错误都会调用不到其 API。这些参数一般是后台生成,可以用阿里云或新浪云提供的服务。

一、注册篇

注册一个公众账号是必须的,5 个步骤(以个人订阅号为例)

  1. 填写基本信息
  2. 邮箱激活
  3. 选择账号类型
  4. 信息登记
  5. 查看公众号信息

1. 访问 https://mp.weixin.qq.com,点击右上角的 “立即注册”

2. 激活邮箱

进入到注册的邮箱,点击链接激活

激活后自动跳到 “账号选择” 页面。

3. 选择账号类型

这里选择第一个类型 “订阅号”。

弹出警告信息,点 “确定” 即可。跳到 “信息登记” tab

4. 信息登记

选“个人”,需要填写一些身份证等信息

填写完身份证号后还需要验证运营者身份,这个需要用绑定了运营者本人银行卡的微信扫描二维码

填完后并短信验证即跳到了公众号查看页面。

5. 查看注册信息

二、设置篇

公众测试账号注册完后,需要到“开发者中心”配置一些参数

1. 需要有 AppID(应用ID) 和 AppSecret(应用密钥)

2. 绑定域名

进入 “公众号设置” 的 “功能设置” 里填写 “JS接口安全域名”

最多可以设置 3 个安全域名,这里我用的是新浪云 sinaapp.com。行了,基本的设置就完成了。

三、获取篇

1. 获取 access_token

access_token 是必须的,后面还需要用它来获取 Jsapi_ticket,access_token有效期7200秒,开发者必须在自己的服务全局缓存 access_token。

接口是 https://api.weixin.qq.com/cgi-bin/token,需要三个参数

  1. appid
  2. secret
  3. grant_type 固定为 client_credential

appid 和 secret 在开发者中心 - 配置项 里可以查看获取。完整 url 如下


1

https://api.weixin.qq.com/cgi-bin/token?appid=wx7xxxxx&secret=xxxxx&grant_type=client_credential

该接口返回的是一个 JSON 格式


1

{"access_token":"F7Z8no1201HwbujxH6qY5Do1UqHuZtk-RUusIScNnIvJr6YESZdadsi2VEsnvDGnCnaPK7CkKlDuJQevOq0JPRMJcAkHZfhTfNFWPN2aXAc","expires_in":7200}

  

2.  获取 jsapi_ticket

有了 access_token 就可以获取 jsapi_ticket,只需传两个参数


1

https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=xxx

返回的也是 JSON 格式


1

2

3

4

5

6

{

"errcode":0,

"errmsg":"ok",

"ticket":"bxLdikRXVbTPdHSM05e5u5sUoXNKd8-41ZO3MhKoyN5OfkWITDGgnr2fwJ0m9E8NYzWKVZvdVtaUgWvsdshFKA",

"expires_in":7200

}

3. 签名算法 sign

参与签名的字段包括 noncestr(随机字符串), 有效的 jsapi_ticket, timestamp(时间戳), url(当前网页的URL,不包含#及其后面部分)。示例:

  1. noncestr=Wm3WZYTPz0wzccnW
  2. jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg
  3. timestamp=1414587457
  4. url=http://snandy.sinaapp.com/php/wx.php

拼接字符串后


1

jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VE2CxsPGwOywlTQbZo-W_simS2A6TqtnB7imworsKf5mE5eiOB-Ocz9TF8wmQWqokA&noncestr=test12234&timestamp=1445225081218&url=http://snandy.sinaapp.com/php/wx.php

  

记得一定要进行 sha1 加密,后台语言都有对应的 lib 包,比如 PHP 可以直接使用 sha1 函数


1

2

$str = ‘snandy‘;

echo sha1($str); // 4dc5103c088598caa6bb3373be436f49b7a83acc

JS 我用了 crypto-js.js


1

var sign = CryptoJS.SHA1(str).toString();

最后的效果如下


1

0f9de62fce790f9a083d5c99e95740ceb90c27ed

注意:

  1. 签名用的noncestr和timestamp必须与wx.config中的nonceStr和timestamp相同
  2. 签名用的url必须是调用JS接口页面的完整URL
  3. 出于安全考虑,开发者必须在服务器端实现签名的逻辑

4. 页面配置

有了以上数据后,就可以配置页面了。想要调用微信的JSAPI,需要以下几个步骤

  1. 引入微信 JSAPI
  2. 调用 wx.config 进行配置

在需要调用JS接口的页面引入如下JS文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.0.0.js

如需使用摇一摇周边功能,请引入 http://res.wx.qq.com/open/js/jweixin-1.1.0.js

调用 wx.config 方法


1

2

3

4

5

6

7

8

wx.config({

    debug: true// 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。

    appId: ‘‘// 必填,公众号的唯一标识

    timestamp: , // 必填,生成签名的时间戳

    nonceStr: ‘‘// 必填,生成签名的随机串

    signature: ‘‘,// 必填,签名

    jsApiList: [] // 必填,需要使用的JS接口列表

});

以上参数在前面均已介绍,jsApiList 参考列表。

以上都配置好了,就可以调用微信 JSAPI 了,比如调用微信的 “扫一扫” 功能


1

2

3

4

5

6

7

8

9

10

wx.ready(function(){

    wx.scanQRCode({

        needResult: 0, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,

        scanType: ["qrCode","barCode"], // 可以指定扫二维码还是一维码,默认二者都有

        success: function (res) {

            var result = res.resultStr; // 当needResult 为 1 时,扫码返回的结果

            console.log(result);

        }

    }); 

});

四、测试篇

做好的页面是不能直接通过手机端浏览器访问的,一定要嵌在微信里,可以先把页面放到一个线上服务器,将其 url 转成二维码,再用微信扫二维码 这种方式来测试

  1. 放在一个线上服务器(没有独立服务器域名的可以用各种云服务)
  2. 将测试页面 url 转成二维码,比如 http://cli.im/
  3. 用微信扫二维码,其自带的浏览器访问

完整示例,请用微信扫描二维码测试

时间: 2024-08-24 18:32:22

微信公众账号开发入门的相关文章

微信公众账号开发教程(三) 实例入门:机器人

一.功能介绍 通过微信公众平台实现在线客服机器人功能.主要的功能包括:简单对话.查询天气等服务. 这里只是提供比较简单的功能,重在通过此实例来说明公众平台的具体研发过程.只是一个简单DEMO,如果需要的话可以在此基础上进行扩展. 当然后续我们还会推出比较复杂的应用实例. 二.具体实现 1.提供访问接口 这里不再赘述,参照上一章,微信公众账号开发教程(二) 基础框架搭建http://www.cnblogs.com/yank/p/3392394.html 2.签名认证和分发请求 这里不再赘述,参照上

微信公众账号开发教程

微信公众账号开发教程 一.第1篇-引言 本文转载来自柳峰老师的博客,在这里非常感谢柳峰老师的分享和贡献! 内容方面,大概会涉及到: 1)前沿知识:微信公众帐号的分类.两种模式各自的特点和区别.开发模式的配置使用等: 2)API中各类消息的使用(我已经对api进行封装并打成了jar包,到时候会考虑分享出来): 3)微信公众帐号开发中的小技巧(如换行.通过代码发送表情.屏幕飘雪花.表情的接收识别.在Android和iOS上表现不一致等等): 4)与业务系统对接的方法(链接.短信等,除了技术讲解还会做

[050] 微信公众平台开发入门视频教程已发布

2014年4月26日晚8点,我在CSDN社区在线培训课堂讲解了微信公众平台开发入门的相关知识,受到广大网友的一致好评,在此非常感谢大家的支持!课程结束后,很多网友表示由于报名人数限制.临时有事等原因,未能参加,希望能够提供录制视频的观看地址.视频教程的主要内容包括: 1.移动APP发展趋势(Native APP.Web APP.Light APP) 2.微信公众平台基础知识(服务号/订阅号.公众账号注册的注意事项.微信认证) 3.开发模式的使用(启用开发模式.接收与响应消息.回复文本/图文/音乐

微信公众平台开发入门教程

在这篇微信公众平台开发教程中,我们假定你已经有了PHP语言程序.MySQL数据库.计算机网络通讯.及HTTP/XML/CSS/JS等基础. 我们将使用微信公众账号方倍工作室作为讲解的例子,二维码见底部. 本系列教程将引导你完成如下任务: 创建新浪云计算平台应用 启用微信公众平台开发模式 基础接口消息及事件 微信公众平台PHP SDK 微信公众平台开发模式原理 开发天气预报功能 第一章 申请服务器资源 创建新浪云计算应用 申请账号 我们使用SAE新浪云计算平台作为服务器资源,并且申请PHP环境+M

微名汇-微信公众平台开发入门教程

在这篇微信公众平台开发教程中,我们假定你已经有了PHP语言程序.MySQL数据库.计算机网络通讯.及HTTP/XML/CSS/JS等基础. 本系列教程将引导你完成如下任务: 创建新浪云计算平台应用 启用微信公众平台开发模式 基础接口消息及事件 微信公众平台PHP SDK 微信公众平台开发模式原理 开发天气预报功能 第一章 申请服务器资源 创建新浪云计算应用 申请账号 我们使用SAE新浪云计算平台作为服务器资源,并且申请PHP环境+MySQL数据库作为程序运行环境.申请地址:http://sae.

微信公众账号开发教程(四)自定义菜单

转自http://www.cnblogs.com/yank/p/3418194.html 一.概述: 如果只有输入框,可能太简单,感觉像命令行.自定义菜单,给我们提供了很大的灵活性,更符合用户的操作习惯.在一个小小的微信对话页面,可以实现更多的功能.菜单直观明了,不仅能提供事件响应,还支持URL跳转,如果需要的功能比较复杂,我们大可以使用URL跳转,跳转至我们的网页即可. 注意:自定义菜单,只有服务号才有此功能 如何注册,见第一章:微信公众账号开发教程(一) 基本原理及微信公众账号注册 效果如下

微信公众平台开发入门教程(图文)

关键字:微信公众平台开发入门 作者:C++研究室 背景知识:微信公众平台的开发需要有一定的PHP基础知识,PHP是一种HTML内嵌式的语言,广泛用于网站开发.微信服务器和开发者的服务器间有两种数据传输方式,分别是XML和JSON.其中XML主要用在接受发送普通消息和事件推送中,而用户管理.创建自定义菜单和高级群发等则需要用到JOSN格式数据. 在这篇微信公众平台开发教程中,你可以跟着教程一起在整体上感性了解微信公众平台的开发框架,可以帮助你更好的去入手. 我们将使用微信公众账号西安校园创客空间作

捷微jeewx , 免费开源微信公众账号开发平台

敏捷微信开发平台,简称"捷微", 捷微jeewx是一款免费开源的微信公众账号管理系统. 官方QQ群:  287090836 官网:    http://www.jeewx.com 平台介绍: 一.简介 jeewx是一个开源,高效,简洁的微信开发平台,采用JAVA语言基于jeecg这个企业级快速开发框架实现的. jeewx的目的是最大化的简化微信开发的流程,使用开发者能把最好的精力放到微信具体业务开发,并能以最快的时间完成.把一些常规而频繁的工作交由jeewx来处理即可,平台兼备的代码生

微信公众账号开发教程(二) 基础框架搭建

首先我们设计了模块层次图,当然图中只是给出一种实现方式,不局限于此.具体见下图. 主要功能介绍如下: 1)请求接口层.处理HTTP请求,及响应 2)分发层.由接口层传入请求,然后具体分析请求类型,分发至不同的处理器 3)业务逻辑层.这里是我们的具体业务逻辑了,根据请求,实现具体的业务逻辑. 4)数据层.我们在实现某个应用时可能需要访问数据,可以是数据库或者是文件.如果是简单应用,可能没有这一层. 其实,具体的应用可以在这个结构上去扩展,可以扩展消息对象层.业务对象层.数据访问层.功能管理层等.这