2016-12-20 11:30:59 mcz555 阅读数 4416
  • 微信公众平台深度开发v2.0第3季——二维码、模板消息

    “微信公众平台深度开发Java版 v2.0”系列课程共有6季,使用JAVA语言,系统讲解微信公众平台订阅号、服务号官方列出的全部功能接口,包括:自定义菜单、个性化菜单(按需定制菜单)、群发消息、客服消息(有限次消息推送)、模板消息接(无限次消息推送)、微信网页开发(微信WEB开发、微信游戏)、微信JSSDK开发、用户管理、获取用户基本信息、网页授权获取用户基本信息(通过WEB得到用户信息)、二维码(临时二维码、永久二维码)、事件推送、接收普通消息、被动回复用户消息,等知识点。 以及,针对微信公众号开发的服务端架构设计方案。课程以微信公众号开发视角,讲解JAVA开发微信公众号所需的框架、第三方工具。 购买套餐还赠送经典微信开发课程——[微信公众号_独立知识点]环境搭建。该课程针对各种复杂的网络环境,讲解如何构建开发环境,已解决“没有服务器”、“没有固定IP”等开发者遇到的窘境。 课程采用独立知识点讲解,一个知识点,一组课程,真正做到“简单、高效、”以短的时间、实现的学习。更多课程信息请访问CSDN。网址:http://edu.csdn.net/lecturer/631 “微信公众平台企业号开发Java版”陆续上线。 详情 qq2326321088

    10311 人正在学习 去看看 翟东平

开发微信公众号,发现微信web开发者工具的登陆二维码页面排版乱了,扫码后登陆不上。



右击检查,发现有报错,jQuery is not defined.          再往上查找,果然有一个引用jQuery的没引用到。   复制下链接在链接器上打开,发现访问不了。

联想到QQ空间有时也有资源加载不了的情况,故推想为DNS问题,某些站点本人这边的网络访问不了。


所以去搜索了一下腾讯的公共DNS:119.29.29.29,修改成功后,重新刷新 OK!







扫码后,正常登陆。

2018-11-02 23:09:14 ZDHYESKY 阅读数 3194
  • 微信公众平台深度开发v2.0第3季——二维码、模板消息

    “微信公众平台深度开发Java版 v2.0”系列课程共有6季,使用JAVA语言,系统讲解微信公众平台订阅号、服务号官方列出的全部功能接口,包括:自定义菜单、个性化菜单(按需定制菜单)、群发消息、客服消息(有限次消息推送)、模板消息接(无限次消息推送)、微信网页开发(微信WEB开发、微信游戏)、微信JSSDK开发、用户管理、获取用户基本信息、网页授权获取用户基本信息(通过WEB得到用户信息)、二维码(临时二维码、永久二维码)、事件推送、接收普通消息、被动回复用户消息,等知识点。 以及,针对微信公众号开发的服务端架构设计方案。课程以微信公众号开发视角,讲解JAVA开发微信公众号所需的框架、第三方工具。 购买套餐还赠送经典微信开发课程——[微信公众号_独立知识点]环境搭建。该课程针对各种复杂的网络环境,讲解如何构建开发环境,已解决“没有服务器”、“没有固定IP”等开发者遇到的窘境。 课程采用独立知识点讲解,一个知识点,一组课程,真正做到“简单、高效、”以短的时间、实现的学习。更多课程信息请访问CSDN。网址:http://edu.csdn.net/lecturer/631 “微信公众平台企业号开发Java版”陆续上线。 详情 qq2326321088

    10311 人正在学习 去看看 翟东平

一、前期准备

渠道二维码的作用是方便公众号统计关注的来源,原理是用户扫描带参数的二维码,微信服务器会向开发者服务器推送一条带着EventKey参数消息:
EventKey :事件KEY值,qrscene_为前缀,后面为二维码的参数值

推送XML数据包示例:
<xml><ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[FromUser]]></FromUserName>
<CreateTime>123456789</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[subscribe]]></Event>
<EventKey><![CDATA[qrscene_123123]]></EventKey>
<Ticket><![CDATA[TICKET]]></Ticket>
</xml>

这时候开发者服务器应该对不同的参数进行判断,以便进入下一步的业务流程。

拥有带参数的二维码接口的目前只有认证过的服务号。
本教程基于Mysql+PHP解决。

二、数据库

数据库我们设置3个字段
ID INT
TODAY INT
TOTIL INT

数据库

 

这边我直接使用默认值

三、服务器端逻辑

参考微信公众平台开发文档
首先进行接入。
示例代码:

define("TOKEN", "weixin"); //与微信后台开发者配置一致
$wechatObj = new wechatCallbackapiTest();
$wechatObj-> valid()
class wechatCallbackapiTest
{
public function valid()
{
    $echoStr = $_GET["echostr"];

    //valid signature , option
    if($this->checkSignature()){
        echo $echoStr;
        exit;
    }
}
private function checkSignature()
{
    // you must define TOKEN by yourself
    if (!defined("TOKEN")) {
        throw new Exception('TOKEN is not defined!');
    }
    
    $signature = $_GET["signature"];
    $timestamp = $_GET["timestamp"];
    $nonce = $_GET["nonce"];
            
    $token = TOKEN;
    $tmpArr = array($token, $timestamp, $nonce);
    // use SORT_STRING rule
    sort($tmpArr, SORT_STRING);
    $tmpStr = implode( $tmpArr );
    $tmpStr = sha1( $tmpStr );
    
    if( $tmpStr == $signature ){
        return true;
    }else{
        return false;
    }
}
 public function responseMsg()
{
    //get post data, May be due to the different environments
    $postStr = file_get_contents("php://input");

    //extract post data
    if (!empty($postStr)){
            /* libxml_disable_entity_loader is to prevent XML eXternal Entity Injection,
               the best way is to check the validity of xml by yourself */
            $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
            $fromUsername = $postObj->FromUserName;
            $toUsername = $postObj->ToUserName;
            $Event = $postObj->Event;
            $EventKey=$postObj->EventKey;
            $keyword = trim($postObj->Content);
            $time = time();
            $textTpl = "<xml>
                        <ToUserName><![CDATA[%s]]></ToUserName>
                        <FromUserName><![CDATA[%s]]></FromUserName>
                        <CreateTime>%s</CreateTime>
                        <MsgType><![CDATA[%s]]></MsgType>
                        <Content><![CDATA[%s]]></Content>
                        <FuncFlag>0</FuncFlag>
                        </xml>";                
            if($Event=="SCAN")
            {
                $msgType = "text";
                $contentStr = "您已经关注啦!";
                $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
                echo $resultStr;
            }
            if($Event=="subscribe" and !empty($EventKey)){
                if(strpos($EventKey,"qrscene_")==0){
                    $id=substr($EventKey,8);
                    $db=mysql_connect("数据库地址","用户名","密码");//在这里分别把数据库地址用户名和密码替换进去
                    mysql_select_db("数据库名",$db);//在这里填写数据库名
                    mysql_query("UPDATE qc SET total=total+1,today=today+1 WHERE id=".$id);
                    $msgType = "text";
                    $contentStr = $id;
                    $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
                    echo $resultStr;
                }
            }

    }else {
        echo "";
        exit;
    }
}
}

以上的示例代码中,根据注释改填入数据库信息即可。
逻辑如下:
如果接受到消息不为空:if (!empty($postStr))
则进行XML解析,将XML解析为对象。
当事件为扫描(即已经关注的用户扫描二维码后,事件值便是SCAN),则直接输出“您已经关注”即可。
如果事件为关注($Event=="subscribe")同时参数不为空(!empty($EventKey)),则截取出参数值substr($EventKey,8)。参数值为ID,即渠道二维码的ID
连接数据库,将对应的ID二维码相应的值+1统计。
UPDATE qc SET total=total+1,today=today+1 WHERE id=

关于接入指南:参考微信公众平台开发者文档,详细接入过程这边不再详细介绍,只介绍根据参数进行统计的思路。

四、生成参数二维码

假设我们要生产100个渠道二维码,在我们完成获取token参数后,使用循环获取100个参数二维码。设置参数i自增,直接作为参数二维码的参数。

$http="https://api.weixin.qq.com/cgi-bin/token?
grant_type=client_credential&appid=APPID&secret=SECRET";//设置请求网址
$content=file_get_contents($http);//发送请求
$json=json_decode($content,true);//解析返回数据
$token=$json['access_token'];//提取token
$url="https://api.weixin.qq.com/cgi-bin/qrcode/create? access_token=".$token;
//组合请求网址
for($i=1;$i<=100;$i++){
$ch = curl_init ();//初始化
$data='{"action_name": "QR_LIMIT_SCENE", "action_info": 
{"scene": {"scene_id":'.$i.'}}}';
curl_setopt ( $ch, CURLOPT_URL, $url);
curl_setopt ( $ch, CURLOPT_POST, 1 );
curl_setopt ( $ch, CURLOPT_HEADER, 0 );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $data);
$return = curl_exec ( $ch );
curl_close ( $ch );
$re=json_decode($return,true);
$http="https://mp.weixin.qq.com/cgi-bin/showqrcode?  ticket="
.urlencode($re['ticket']);//组合出二维码网址
echo "<img src=".$http.">";
echo "ID:".$i;

五、统计页面的开发

这边主要用到了SQL的知识。
将统计值全部读取出来,循环输出即可。
SQL: SELECT * FROM qc

<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-    scale=1.0,user-scalable=0,maximum-scale=1.0,minimun-sacle=1.0">
<meta http-equiv="Cache-Control" content="no-siteapp">
<meta http-equiv="Cache-Control" content="no-transform">
<title>统计</title>
</head>
<body>
<?php
$db=mysql_connect("数据库地址","用户名","密码");
mysql_select_db("数据库名",$db);
$re=mysql_query("SELECT * FROM qc");
while($row=mysql_fetch_array($re)){
echo "ID:".$row['id']."|总计:".$row['total']."|今日:".$row['today'];
echo "</br>";
}
?>
</body>

部分截图

六、总结


 

2017-03-10 09:58:12 zz110731 阅读数 16642
  • 微信公众平台深度开发v2.0第3季——二维码、模板消息

    “微信公众平台深度开发Java版 v2.0”系列课程共有6季,使用JAVA语言,系统讲解微信公众平台订阅号、服务号官方列出的全部功能接口,包括:自定义菜单、个性化菜单(按需定制菜单)、群发消息、客服消息(有限次消息推送)、模板消息接(无限次消息推送)、微信网页开发(微信WEB开发、微信游戏)、微信JSSDK开发、用户管理、获取用户基本信息、网页授权获取用户基本信息(通过WEB得到用户信息)、二维码(临时二维码、永久二维码)、事件推送、接收普通消息、被动回复用户消息,等知识点。 以及,针对微信公众号开发的服务端架构设计方案。课程以微信公众号开发视角,讲解JAVA开发微信公众号所需的框架、第三方工具。 购买套餐还赠送经典微信开发课程——[微信公众号_独立知识点]环境搭建。该课程针对各种复杂的网络环境,讲解如何构建开发环境,已解决“没有服务器”、“没有固定IP”等开发者遇到的窘境。 课程采用独立知识点讲解,一个知识点,一组课程,真正做到“简单、高效、”以短的时间、实现的学习。更多课程信息请访问CSDN。网址:http://edu.csdn.net/lecturer/631 “微信公众平台企业号开发Java版”陆续上线。 详情 qq2326321088

    10311 人正在学习 去看看 翟东平

title: 【微信小程序】二维码生成与识别器
type: categories
date: 2017-03-10 09:34:00
categories: 微信小程序

tags: [二维码生成,二维码识别]

一个二维码生成与识别的很简单的微信小程序,主要是为了走一下小程序开发的整个流程。7号上午提交的审核,8号出结果,审核速度还可以,发布需要管理员手动发布。唯一令人烦的地方是,开发者的权限太低,除了编码,其他的操作都需要管理员扫描相应操作的二维码(前前后后将近10次)。

二维码生成与识别器

项目源码:https://github.com/zhangzhaopds/QrPay.git

效果图:

安装地址

2019-11-26 13:18:04 Fe777s 阅读数 137
  • 微信公众平台深度开发v2.0第3季——二维码、模板消息

    “微信公众平台深度开发Java版 v2.0”系列课程共有6季,使用JAVA语言,系统讲解微信公众平台订阅号、服务号官方列出的全部功能接口,包括:自定义菜单、个性化菜单(按需定制菜单)、群发消息、客服消息(有限次消息推送)、模板消息接(无限次消息推送)、微信网页开发(微信WEB开发、微信游戏)、微信JSSDK开发、用户管理、获取用户基本信息、网页授权获取用户基本信息(通过WEB得到用户信息)、二维码(临时二维码、永久二维码)、事件推送、接收普通消息、被动回复用户消息,等知识点。 以及,针对微信公众号开发的服务端架构设计方案。课程以微信公众号开发视角,讲解JAVA开发微信公众号所需的框架、第三方工具。 购买套餐还赠送经典微信开发课程——[微信公众号_独立知识点]环境搭建。该课程针对各种复杂的网络环境,讲解如何构建开发环境,已解决“没有服务器”、“没有固定IP”等开发者遇到的窘境。 课程采用独立知识点讲解,一个知识点,一组课程,真正做到“简单、高效、”以短的时间、实现的学习。更多课程信息请访问CSDN。网址:http://edu.csdn.net/lecturer/631 “微信公众平台企业号开发Java版”陆续上线。 详情 qq2326321088

    10311 人正在学习 去看看 翟东平

前言解决方案在最后一句话,可以直接跳过前面的废话)在做一个小功能,智能识别图片上的数字文字,本来真机调试一切正常。后面在调试的过程中,真机连上一段时间没有管它,这段时间过程中,微信开发者工具会自动断开与真机的连接的。
当再次打算重新扫面真机调试二维码时,就出现了:
已结束,请重新开始的状况
当时没有及时截图,该图是网上资源
(当时没有及时截图,该图是网上资源)

解决方式

一:查找网友方案

网上找到的方案:
1、重新安装微信开发者工具;
2、关闭微信开发者工具,重新打开项目;
3、重新登陆项目
4、万能的重启电脑
5、等一段时间再打开项目
还有一个方案是将微信开发者工具会推倒一个给定的版本,个人考虑不是很好,首先微信开发者工具更新很频繁,其次会推倒固定的版本,这个本来就不是一个很好的方案

二:核实方案

实验了方案2和3,再次点击真机调试按钮的时候发现,提示了:错误 请先结束其他真机调试

在这里插入图片描述
有点搞人啊,想了想算了,关机重启好麻烦,而且这个问题也没有去网上查找,等一段时间再打开项目,额,一着急想解决某个问题的时候,等待真的是像初恋时缠缠绵绵的发消息却等不到开学时刻的感觉。

三:解决方式

这个小程序没有用git管理,那就换一下路径,当成一个新的项目重新导入到微信开发者工具中,解决之。

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