2018-12-26 18:36:40 qq_35713752 阅读数 1527
  • 微信支付开发-微信公众号开发12-微信开发php

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

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

微信小程序开发交流qq群   173683895

   承接微信小程序开发。扫码加微信。

云开发流程:

1.关联账户

关联腾讯云账号与微信公众号平台账号。前往关联账号时,请选择微信公众号。错误关联账号请在腾讯云账号中心重新绑定。

 已关联账号

  • 关联账户

2.安装开发者工具

下载与安装客户端微信开发者工具并使用小程序微信号扫码登录。

点击下载工具

  • 扫码登录开发者工具
  • 选择小程序

3.下载测试代码

下载为你打包的 Demo 代码,作为开通环境所需。

下载 Node.js 版本 Demo下载 PHP 版本 Demo下载 Node.js 版本 小游戏Demo下载 PHP 版本 小游戏Demo

4.修改数据库密码

使用微信开发者工具创建小程序项目,选择第三步下载的代码文件夹。然后打开 server/config.js 文件。修改里面的 MySQL 数据库密码为您的小程序 AppID。

  • 创建小程序项目
  • 打开 server/config.js 文件
  • 修改 MySQL 密码

5.上传测试代码

使用微信开发者工具上传代码,完成开发环境的初始化,上传测试代码选择(部署后自动安装依赖)。

如果开发者工具有腾讯云图标的可以忽略,没有找到上传测试代码的,请按以下流程

开发者工具左上角  点击工具 => 工具栏管理 => 自定义工具管理 => 勾选腾讯云 => 确定。

找到腾讯云的图标,然后选择环境,再次点击腾讯云,上传测试代码,选择普通上传。

  • 上传测试代码

6.修改本地请求域名

点击微信开发者工具右上角【详情】-【腾讯云状态】即可查看【开发环境 request 域名】,复制域名,填写在 clien/config.js 文件的 host 处,并保存。

  • 复制域名
  • 打开 client/config.js 文件
  • 填写并保存

7.完成开通

使用微信开发者工具上传代码,完成开发环境的初始化,上传测试代码选择(部署后自动安装依赖)。

前往管理页面

2016-10-09 09:44:03 qq342063618 阅读数 2206
  • 微信支付开发-微信公众号开发12-微信开发php

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

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

最近忙着做微信,https协议不会,只好先用http实现业务逻辑,对于微信与第三方服务器之间的通信流程有个大致的了解,备忘。

首先,微信开发文档中多次提到的XML消息体加解密,其中需要的参数诸如timestamp,nonce,msg_signature都是在请求url参数中传过来的。


直观图解及其调试代码(要注意微信后台选的加密模式,兼容好调试):



System.out.println("post...");
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
/**
* 加密过的XML消息体
*/
byte[] bytes = new byte[1024 * 1024];
InputStream is = request.getInputStream();

int nRead = 1;
int nTotalRead = 0;
while (nRead > 0) {
nRead = is.read(bytes, nTotalRead, bytes.length - nTotalRead);
if (nRead > 0)
nTotalRead = nTotalRead + nRead;
}
String encryptXML = new String(bytes, 0, nTotalRead, "utf-8");
System.out.println("加密消息体  =  " + encryptXML);

/**
 * 请求url中的参数
 */

Map<String,String> map = new HashMap();
Enumeration paramNames = request.getParameterNames();


while (paramNames.hasMoreElements()) {
String paramName = (String) paramNames.nextElement();
String[] paramValues = request.getParameterValues(paramName);
if (paramValues.length == 1) {
String paramValue = paramValues[0];
if (paramValue.length() != 0) {
System.out.println("参数:" + paramName + "=" + paramValue);
map.put(paramName, paramValue);
}
}
}

System.out.println("post over !");


至此应该对于微信加密的流程以及参数传递有个了解。

PS:异常java.security.InvalidKeyException:illegal Key Size的解决方案

微信开发文档提供的加解密文档示例中readme.txt有解决方法,建议先解决这个再开发



2017-03-18 21:27:49 redbelt 阅读数 1798
  • 微信支付开发-微信公众号开发12-微信开发php

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

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


1.浏览器js 请求java的islogin 接口
2.java 从session 中获取当前用户
3.能获取到说明已经登录
4.不能获取到说明没有登陆
5.返回一个result
6.resuel.code == 200 是已经登录
7.result.code == 400 是没有登录
8.已经登录的就不说了,说下没有登陆情况
9.浏览器js根据result.code == 400 判断没有登录
10.在浏览器端进行跳转 window.location.href = result.redirect_url
11.result.redirect-url 是微信的接口,如下
12. https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxb3549eaaee11457a&redirect_uri=http://jiezhao.xtake.cn/weixin/login&response_type=code&scope=snsapi_base&state=snsapi_base|http://localhost:3000/dev/index.html#wechat_redirect
13.浏览器js直接进行跳转了 get请求
14.这里请求的是微信的服务器 response_type告诉微信我现在是想要code
15.微信知道了之后,进行一系列判断,就能在 12 那个页面上进行再次跳转,你可以理解成这样:
16.你get请求 12 的地址后,微信的控制层 拿到你传进来的几个参数,appid 是认证过的,好了 那就没问题了,微信服务器生成一个随机的code,然后把这个code 和请求传过来的redirect_url,state 原封不动的一并传到了返回的页面上,页面上的js无论通过什么样的形式都能获取到刚刚传过来的生成的code和redirect_url以及state,这样一来js 就能在这个页面上直接进行window.location.href = 传过来的redirect_url?code=[传过来的code]&state=[传过来的state]
17.到这里就简单了,因为redirect_url 和state 是原封不动的传过来的,所以到现在的请求连接就是我们自己网站了。并且带着参数 code state
18.我们自己的服务器要针对redirect_url 写响应的controller
19.比如我们这里的连接是 jiezhao.xtake.cn/weixin/login?code=xxxx&state=xxxxx
20.这个时候就进入到我们的业务层的了
21我们在controller 中能根据code 获取access_token,是在controller中通过httpClient 请求如下连接完成的:(注意是在controller层请求的)
22.https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
23.上面的这个请求中填上自己的appid,sectrt 以及controller传过来的CODE,就能获取到access_token
24.这是正确时返回的数据json
25.{ "access_token":"ACCESS_TOKEN",
"expires_in":7200,
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID",
"scope":"SCOPE" }
26.里面有access_token ,有效时长,refresh_token(用来刷新token),还有一个很重要的openid ,这个openid 就是当前微信用户的唯一标识啊,这也从一定程度上说明access_token 是面向单一用户的。这个基础的access_token有这本质的区别,真实坑爹啊。scope 是snsapi_base 或者 snspai_userinfo
27.有了access_token 和用户的openid 就能真正的进入业务层。
==========================华丽分割线===========================
28.我们简称25 中的json包是access_token对象
29.先是检验了access_token 是否还有效,无效的话能通过对象中的refresh_token 进行刷新,从而获取最新的 access_token
30.查看scope的类型是 snsapi_base 还是 snsapi_userinfo
31.以下我用伪代码描述
accessToken = 通过code获取accessToken(code)
if(accessToken is 失效) {
重新获取AccessToken

if (accessToken 的scope 是 snspai_base) {
openid = accessToken.getopenid()
业务user = userservice.getUserBy(openid)
if(业务user == null) {
//说明该微信用户在我们的业务系统中并不存在,我们想不他直接存进来
//想要存起来 我们不想仅仅知道openid 还想知道用户头像以及更详细的信息。
//这时候snspai_base 的scope 已经不够用了,需要能提供更详细信息的 . //nsapi_userinfo scope
//然后。构建像12 中一样的url 不过scope 改成了 snsapi_userinfo
snsapi_userinfo_url = 构建url();
// 然后使用WebUtils.issueRedirect()这个工具能在后台进行请求
//这个时候思考
//请求了这个构建好的类似于12 的这个连接之后就又进入了12之后的步骤。
//也就是说如果用户没有登录,为了拿到更详细的用户信息,
//重新获取snsapi_userinfo 的 scope 的access_token

} else {
}//后来的写到程序上面的注释上了

2016-09-06 15:14:27 LanBuff 阅读数 1748
  • 微信支付开发-微信公众号开发12-微信开发php

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

    27766 人正在学习 去看看 秦子恒
我们前一篇已经讲了,微信平台(不管是订阅号还是服务号)和我们的网站进行交互时,都是通过微信平台开放给外部系统的接口调用来实现的,也就是说,粉丝向公众号发送一次交互(文字,图片,声音或者菜单点击都算交互)后,微信平台会向你配置的url所对应的网站发出调用请求,来执行你的网站的代码,在代码中你进行各种处理后返回一个处理结果。

           你的网站具体使用什么语言来开发取决于你自己的爱好,不过我建议大家使用php来做,因为目前做web开发php是最方便的,当然你也可以用java写,没关系的,我们以php为例说明。

         微信平台在配置url时会验证一下你对应的这个url的网站是否真实存在,是否是你自己的网站。验证的原理很简单,你首先填写一个Token(你不用管这个是什么,只要记住它其实就是一个字符串符号,用来生成一个代表你自己身份的签名),然后填写你的网站的url,点击提交,如下图。


            平台就会向这个url所对应的网站发送一个GET请求,同时携带4个参数。参数参考图2的说明。如下图。



       其中timestamp是一个时间戳。时间戳其实就是从 1970年 1月1日至当前时间的总秒数。你就数吧,从1970年 1月 1日到我们现在这个时刻一共流逝了多少秒那么这个时间戳就是多少。所以时间戳任何时刻都是不同的。Nonce和echostr都是平台产生的随机数。Signature也就是签名,它是经过如下计算得到的:

       将当前时间戳(timestamp),nonce以及你输入的TOKEN按照字母顺序排序后拼接在一起形成一个字符串。例如: timestamp是345632,nonce是132a,TOKEN是123,那么我们先按照字母顺序排列,得到这样的顺序:123,132a,345632.然后拼接得到:123132a345632.最后经过SHA1加密运算得到签名Signature:E69E5E13D8B045923EF1BE38DF938F5621CA3004。SHA1是一个加密算法,细节这里就不讲了。这些参数一会都会通过查询参数的形式发送给我们网站的。

为了能够接受这些参数我们需要一个自己的php网站。Ok,我们现在就开始搭建这样的一个网站。

       1. 先下载WAMP集成安装套件,这个很简单,大家一路点击“下一步”,最后点击一下“完成”就可以了,我是直接安装在C盘根目录的,安装好了以后的目录结构 如下图. 安装完成后我们可以看到,我们需要的apache,mysql和php都已经安装好了,而且默认帮你安装了一个管理工具,非常方便。最重要的就是www这个目录,这个是就我们即将要创建的网站的根目录。



2. 进入www目录,新建一个index.php的文件,在里面只写入一行代码,如下图所示。




              然后在浏览器里面输入localhost,如果出现上图的页面,说明我们的服务器环境是已经ok,我们就可以继续下一步了。

 3.      接下来,我们开始代码处理。我们首先获取平台传过来的4个参数,

 

具体的代码见下面,里面已经有很详细的说明了哦。这里再说一下,为什么使用php,大家看到没有,用php 代码只有不到100行,而我之前用java实现过同样的功能,却花了500多行,这得益于php的很多函数以及帮我们做好了,我们可以直接使用。所以,php特别适合中小型网站的哦开发哦。大家也可以用其他语言换个方式实现一下试试。






        这里再补充解释一下上面的代码:代码的处理过程是这样的,将传过来的时间戳timestamp,随机数nonce和你自己输入的TOKEN(你自己输入的,所以当然知道TOKEN是多少)排序,拼接,SHA1处理,最后得到一个签名。

 

        因为我们得到这个签名的过程和平台处理的过程是一模一样的,所以我们得到的签名和平台发送给我们的签名Signature的值应该是一模一样的。

        将得到的结果和传过来的签名Signature比较,如果相等,就返回echostr(echostr也是平台发给我们的参数哦)给平台,告诉平台我已经接受到了你的请求,而且这个请求在网络传输的过程中没有被篡改(因为签名相等)。这样验证就通过了,相当于和平台和我们的网站之间建立了一个可信的通信通道。

     如果你看到平台显示下面的信息,说明验证通过了,你就可以正式开始你的微信开发了。





.2. 使用php开发微信服务器端


          我们的微信商城其实就是一个web程序,只不过这个web程序的客户端不再是浏览器而是微信平台了,所以,任何支持web服务器端开发的语言都可以作为我们微信商城的开发语言,例如Java、php等。为什么这里我选择php呢,因为php是目前为止最适合web开发的语言,而且随着我们的深入,你会发现php在web开发上的强大之处,很多java要很多行代码才能够实现的功能,php只要一句代码就可以很好的实现了。所以,我们选择php作为我们的示例开发语言。

        那么,大家在使用php开发时,我相信一提到调试,很多人还是会觉得很头疼,特别是新手更加是这样。我见过很多人抱怨php调试非常不方便,只能使用一些echo,print等输出语句输出变量值来进行调试,这样的确是非常麻烦的,因为这些输出语句无法设置断点。所以,我这里首先帮大家解决php断点调试的问题,因为没有这个断点调试的“利器”,以后的开发中出现问题,你想解决是很痛苦的。

       说起php的断点调试,我相信很多同学首先想到的就是zend studio+zend debugger,没错,你可以这么做,但是,这么做就意味着你需要手动配置很多东西,而且还不一样能保证停留在断点处。这里,我就不饶湾子了,我教大家一个很方便的工具,直接安装一下就可以原来调试php了。

       这个工具就是XAMPP+PhpEclipse的组合,其中XAMPP是一个集成安装包,里面包括了:Apache, MySQL、PHP和Perl。XAMPP其中的A代表Apache,M代表MySQL,第一个P代表PHP,第2个P代表Perl.这个工具自身携带了php调试功能xdbug,大家安装以后几乎不需要特意配置就可以用来调试php了。

 

 

下面请跟着我一步步来操作:

1.打开http://www.apachefriends.org/zh_cn/download.html,下载XAMPP for Windows1.8.2 & 1.8.3


2.     解压该压缩包,并双击    xampp-win32-1.8.0-VC9-installer.exe

3.       一路点Next,在选择文件安装位置时,选择安装在C:\盘根目录。




4.  等待安装



5. 完成。



6.     完成后会自动打开控制面板。其中1处是启动各种服务的按钮,2 是配置各种服务的按钮,3是查看各种服务的日志的按钮。

7.    点击Apache,MySql   的Start按钮,启动apache web服务器和mysql 数据库服务器,如下图,能看到Pid和ports的下方出现了 值 时表示服务启动成功 。

     如果出现启动报错时,检查一下是否 相关的端口被占用了,修改配置文件里面的相关端口的配置后再重新启动试试。




     下载并解压phpeclipse,点击运行,你会发现聪明的phpeclipse已经自动发现了xampp,并且已经自动帮你配置好了。




        接下来很重要的一步,我们将创建一个php网站项目,并且验证一下我们的xampp是否能对我们的php网站进行调试。只有我们的调试能正常进行,以后的课程中我才能一步步的帮大家分析微信平台和我们的网站的交互过程的细节,大家才能真正明白原理,然后大家在实际中遇到问题时也可以使用调试来分析解决。

 

       1.    首先,新建一个php项目 。增加一个php文件,里面随便加一些最简单的代码。并设置几个断点。这里注意:设置断点时一定不要双击来设置,一定要通过在左侧右键,然后在弹出的右键菜单里面选择:“Toggle Xdebug BreakPoint”来设置。这是因为双击设置的是java的断点,而我们是需要对php设置断点,必须通过右键的方式来设置,这样设置的才是php的断点,这样的断点XDebug才可以识别。否则,你很容易会出现莫名其妙的无法在断点处停住的问题。







2.   接下来,打开我们的xampp的安装目录,我的是:C:\xampp\php,用记事本打开里面的php.ini配置文件。我们要把里面的最后一部分关于xdebug的配置前的注释打开。修改好之后的截图如下:







       这样,我们就打开了xampp的xdebug调试功能。如果你不是很肯定是否已经打开了该调试功能,可以自己创建任意一个php项目,在里面写上一个文件,在该文件里面写上:phpinfo();然后执行以下,看看是否有如下输出:





3.      这样,我们已经完成了服务器端的配置。接下来需要在我们的phpeclipse里面设置一下,让我们的ide能够和我们服务器端的xdebug通信。跟我来。打开windows-prefrences下面的phpeclipse,按照如下图所示 检查是否配置正确。




4.       接下来就可以测试一下我们的调试功能是否能正常调试了。一起来。在file.php上右击,选择debug as->debugconfiguration   




5.   配置 完保存后,以后调试时,只需要在工具栏的那个debug图标下选择我们刚才的配置就可以进行调试了,如下图。







6.      这时,我们在phpeclipse里面自带的浏览器或者在ie浏览器里面输入:http://localhost:8080/phpTest/file.php?XDEBUG_SESSION_START=testID
注意后面的参数:XDEBUG_SESSION_START=testID这里的testID 就是我们之前在debug配置里面设置的标识字符串。如图。




7. 最后,停在断点的效果如下图所示。





     有了断点单步调试的功能,接下来我们不管做什么php网站,都方便很多了。在下一讲,我将结合php单步调试给大家深入分析微信商城开发的原理。

2016-11-23 20:27:45 IMWebteam 阅读数 8303
  • 微信支付开发-微信公众号开发12-微信开发php

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

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

图解微信公众号后台服务开发(nodejs版)

本文作者:imweb 张颖 原文出处:imweb社区 未经同意,禁止转载

关于微信公众号开发的文章到处都是,基于nodejs的代码也不少,但是微信公众号给出的开发者文档接口虽然全却不细致,难免需要花费一些时间去测试确认,这里总结下最近基于nodejs的微信公众号后台服务开发的过程,采取的是简洁流程图的表达形式,希望能帮助没有接触过此类业务的小伙伴节约时间,快速上手。

1、如何获得一个微信公众号

首先要说明的是,微信公众号分服务号和订阅号两种,具体差别:

这里写图片描述

可以获得的接口权限,即可以提供的功能差异如下:

这里写图片描述

显然,服务号看上去功能更多,但是也需要根据业务场景考虑,要做到频繁给用户推送消息,还非订阅号不可。申请到公众号后,即可前往微信公众平台管理你的公众号。

2、简单的交互

如果你的微信公众号大致只需要以下功能:

  • 手动给用户推送图文消息
  • 利用底部菜单引导用户进入运营站点
  • 根据用户发送的关键字自动回复用户
  • 对用户发送的消息进行客服回复等

那只需要登录微信公众平台,在平台管理里面配置一些参数即可:

这里写图片描述

如果要一些自动化的功能,比如自动定期推送文章,绑定站点进行消息提醒,或者需要接入支付、卡劵、门店等高级接口功能,则需要自己开发公众号的后台服务。

3、启用服务器配置

如果启用了服务器配置后,可以在自己的服务器端进行代码开发处理微信消息,上一节介绍的在平台配置的自动回复、菜单等全部会失效。先来画一下启动服务器配置后,微信客户端、微信服务器如何与自己配置的服务器交互的。

这里写图片描述

很显然,首先应该去微信公众平台上配置自己的服务器信息,告诉微信服务器这个微信公众号的后台地址,以方便微信服务器进行消息转发。 图 当然,我们不可能随便填一个网址,而自己的服务器也不能随意接收没有校验的消息,所以这两者间绑定然后交互需要约定一个暗号,也就是Token值。第一次配置时,微信会像配置服务器发送带Token加密消息的校验信息,彼此确认身份,其后每次微信服务器和配置服务器交互信息时,也都会带上Token相关的身份校验信息。同样附上校验的流程图:

这里写图片描述

既然标题是基于nodejs的,我们还是贴一下nodejs中完成这些步骤的代码,相信有了流程图,开发同学们并不需要对代码有过多的解释,直接看代码就ok了。

这里要介绍两个nodejs中开发微信公众号的模块,wechatwechat-api,这两个都是微信公众平台的基础库,封装了几乎所有微信开发者文档提供的接口。

使用express和wechat-api模块,app.use('/wechat', wechat('token', function (req, res, next) {})语句是用来验证token,其后的参数是验证通过后的回调执行函数,下面几节所贴的后台消息处理代码都位于此函数中

var express = require('express');
var wechat = require('wechat');
var wechatCenter = require('./server/controllers/wechatCenter');
var config = require('./server/config');

// wechat development
app.use('/wechat', wechat(config.wechat_validate.token, wechatCenter.all));

实际的校验算法如下:

 // 微信token认证底层实现
 function sha1(str) {
     var md5sum = crypto.createHash("sha1");
     md5sum.update(str);
     str = md5sum.digest("hex");
     return str;
 }

 function validateToken(req, res) {
     var query = url.parse(req.url, true).query;
     // console.log("*** URL:" + req.url);
     // console.log(query);
     var signature = query.signature;
     var echostr = query.echostr;
     var timestamp = query['timestamp'];
     var nonce = query.nonce;
     var oriArray = new Array();
     oriArray[0] = nonce;
     oriArray[1] = timestamp;
     oriArray[2] = config.wechat_validate.token; //微信开发者中心页面里填的token
     oriArray.sort();
     var original = oriArray.join('');
     console.log("Original str : " + original);
     console.log("Signature : " + signature);
     var scyptoString = sha1(original);
     if (signature == scyptoString) {
         res.end(echostr);
         console.log("Confirm and send echo back");
     } else {
         res.end("false");
         console.log("Failed!");
     }
 }

以后每次有消息通过微信服务器转发过来,都会先做身份校验,校验后再将具体的消息交给回调函数进行处理。

4、定制图文推送业务

如果业务中需要应用到这样一种场景,目前有一个比较稳定的博客站点在运营,站点上每日都会有新文章发表,想通过微信公众号定期推送优秀文章。那我们来画一下实现此功能的流程和调用的接口:

这里写图片描述

可以看到,在图文消息上传前,文章内的图片都要从本地上传至微信服务器,然后获得微信服务器上的存放地址,文章的封面图同样需要本地上传,然后获得返回的唯一图片media_id,在图片都处理完毕后,可以正式的上传图文消息至微信服务器,上传后微信服务器会返回一个代表图文消息的唯一media_id,在需要群发时,只需调用群发接口,传递media_id参数即可。

// 上传图文消息内图片接口
api.uploadImage(options.filepath, function(err, result) {
        callback(err, result);
    });

// 上传多媒体文件接口,这里用来上传图文消息的封面图
api.uploadMedia(options.filepath, options.type, callback);

// 上传图文消息
api.uploadNews(options, callback);

// 图文消息预览
api.previewNews(options.openId, options.media_id, callback);

// 图文消息群发
api.massSendNews(options.media_id, true, callback);

具体接口参数格式,发送规则请查看wechatwechat-api,以及微信开发者文档

5、定制消息提醒业务

进一步,运营站点的文章有评论功能,如果想通过绑定微信账号在公众号内给用户发提醒要怎样实现呢?在用户与公众号没有交互的时候,公众号是不能任意的给用户发送消息的,此时就要用到微信提供的一种特殊消息推送接口——模板消息接口。

微信公众平台开发者文档中解释:模板消息仅用于公众号向用户发送重要的服务通知,只能用于符合其要求的服务场景中。所以模板消息不是随意发的,发送内容也是受到限制的,微信平台上固定了很多模板消息类型供开发者选择,开发者可以利用公众号账号登陆开发者平台后,在账号内添加各类模板消息的模板,然后可以获得模板消息的唯一id标识template_id。然后在开发代码中,使用模板消息接口可以发送对应的提示消息。

function remindSend(options, callback) {
    // var templateId = 'UZG5ge7tdoZJrEi1kHiCkQ__ok27PX1HU_44Jji5iQ8';
    var templateId = options.templateId || 'UZG5ge7tdoZJrEi1kHiCkQ__ok27PX1HU_44Jji5iQ8';
    var topcolor = '#FF0000';
    var url = options.topicLink;
    var data = options.data || {
        "first": {
            "value": "您好,您的文章" + options.title + "有新的评论",
            "color": "#173177"
        },
        "keynote1": {
            "value": options.commentUser,
            "color": "#173177"
        },
        "keynote2": {
            "value": options.create_at,
            "color": "#173177"
        },
        "remark": {
            "value": "点击立刻查看评论。",
            "color": "#173177"
        }
    };

    api.sendTemplate(options.wechatId, templateId, url, topcolor, data, function(err, result) {
        if (!err) {
            callback && callback(result);
        } else {
            console.log(err);
        }
    });
}

微信用户收到的模板提醒消息如下:

6、网页授权获取用户信息业务

微信是允许某些站点页面唤起获取用户信息授权的流程,让用户确认是否同意当前页面获取用户的个人信息。那问题就来了,微信允许哪些页面呢?

当然是公众号中绑定的域名下的页面,首先到公众平台官网中的开发者中心页配置授权回调域名,然后可以在微信中引导用户唤起用户信息授权流程,用户同意授权后,就可以在你配置的回调域名下的页面中获取到用户的个人信息。

说到具体的微信用户个人信息,那我们首先解释一下openid这个词,每个微信用户有唯一的微信号,然后每个用户对每个公众号有一个openid,对不同的公众号有不同的openid,但是用户对一个公众号而言openid是唯一的,用户与一个公众号之间通过openid通信,并且无论用户有没有关注某个公众号,它与公众号之间都是有一个唯一openid的。 解释完openid,我们再来具体描绘下整个引导用户授权的流程,以及如何获取到用户的具体信息。

总结

微信公众平台提供的接口功能还有许多,这里就不一一列举了,只要熟悉了开发流程和交互规则,功能实现起来都是类似的。

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