2014-03-07 10:06:31 u013129789 阅读数 933
  • 微信开发者工具使用教程 如何上传、发布、审核等

    微信开发者工具使用教程 如何上传、发布、审核等 2020年3月31日录 - 微信开发者工具使用教程 01-微信开发者工具的下载和安装 02-微信小程序账号的注册、登录、appid的获取 03-微信小程序开发和公众号开发模式的切换 04-微信小程序如何导入项目 05-不在以下request合法域名列表如何设置解决 06-模拟器、编辑器、调试器的使用 07-本地如何调试、手机测试小程序 08-公众号账号关联和管理多个小程序 09-微信小程序项目管理、上传、审核、发布 10-如何能学会微信小程序开发

    123 人正在学习 去看看 黄菊华

1 申请公众账号

地址mp.weixin.qq.com

    

//注册微信公众平台 需要身份证信息 和 手机号码 

下面是注册完成的微信界面


选择高级功能 关闭编辑模式  选择开发模式 开启 点击进入


2 申请服务器资源

我选择的是新浪的云SAE 使用新浪微博登陆

申请成功后 登陆 SAE 创建新的应用

创建完成后

点击应用进入 创建一个新的版本

上传下面的代码 index.php

?php

define("TOKEN", "weiixn");  //与微信设置的TOKEN一致
$wechatObj = new wechatCallbackapiTest();
if (isset($_GET['echostr'])) {
    $wechatObj->valid();
}else{
    $wechatObj->responseMsg();
}

class wechatCallbackapiTest
{
    public function valid()
    {
        $echoStr = $_GET["echostr"];
        if($this->checkSignature()){
            echo $echoStr;
            exit;
        }
    }

    private function checkSignature()
    {
        $signature = $_GET["signature"];
        $timestamp = $_GET["timestamp"];
        $nonce = $_GET["nonce"];

        $token = TOKEN;
        $tmpArr = array($token, $timestamp, $nonce);
        sort($tmpArr);
        $tmpStr = implode( $tmpArr );
        $tmpStr = sha1( $tmpStr );

        if( $tmpStr == $signature ){
            return true;
        }else{
            return false;
        }
    }

    public function responseMsg()
    {
        $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];

        if (!empty($postStr)){
            $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
            $fromUsername = $postObj->FromUserName;
            $toUsername = $postObj->ToUserName;
            $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($keyword == "?" || $keyword == "?")
            {
                $msgType = "text";
                $contentStr = date("Y-m-d H:i:s",time());
                $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
                echo $resultStr;
            }
        }else{
            echo "";
            exit;
        }
    }
}
?>

打包上传代码 压缩文件格式zip GZ TRG.GZ 文件大小不能大于20M

扫描自己的微信公众号二维码  关注  输入‘?’ 


返回的是现在的时间




2018-08-27 16:20:02 a190943540 阅读数 1005
  • 微信开发者工具使用教程 如何上传、发布、审核等

    微信开发者工具使用教程 如何上传、发布、审核等 2020年3月31日录 - 微信开发者工具使用教程 01-微信开发者工具的下载和安装 02-微信小程序账号的注册、登录、appid的获取 03-微信小程序开发和公众号开发模式的切换 04-微信小程序如何导入项目 05-不在以下request合法域名列表如何设置解决 06-模拟器、编辑器、调试器的使用 07-本地如何调试、手机测试小程序 08-公众号账号关联和管理多个小程序 09-微信小程序项目管理、上传、审核、发布 10-如何能学会微信小程序开发

    123 人正在学习 去看看 黄菊华

最近学习微信开发,测试号的接口配置搞得我头大.

后来看了柳峰老大的微信公众账号开发教程第3篇.简直是曙光.

由于老大的文章是2013年的所以我稍微改动,以ssm框架记录.以防忘记.

首先域名.没有域名的小伙伴下载natapp内网穿透工具(官网有教程).

natapp启动后:

高光部分复制到URL中,后面再追加项目名和请求地址如:

之后就是接收请求,官方文档提示

编辑一个工具类

public class CheckSignature {
    
    static String token = "ligy0510";
    
    /**
     * 签名验证
     * @param signature
     * @param timestamp
     * @param nonce
     * @return
     */
    public static boolean checkSignature(String signature, String timestamp, String nonce) {
        // 1.将token、timestamp、nonce三个参数进行字典序排序
        String[] arr = new String[] { token, timestamp, nonce };
        Arrays.sort(arr);

        // 2. 将三个参数字符串拼接成一个字符串进行sha1加密
        StringBuilder content = new StringBuilder();
        for (int i = 0; i < arr.length; i++) {
            content.append(arr[i]);
        }
        MessageDigest md = null;
        String tmpStr = null;
        try {
            md = MessageDigest.getInstance("SHA-1");
            // 将三个参数字符串拼接成一个字符串进行sha1加密
            byte[] digest = md.digest(content.toString().getBytes());
            tmpStr = byteToStr(digest);
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }

        content = null;
        // 3.将sha1加密后的字符串可与signature对比,标识该请求来源于微信
        return tmpStr != null ? tmpStr.equals(signature.toUpperCase()) : false;
    }
    
    /**
     * 将字节数组转换为十六进制字符串
     * 
     * @param byteArray
     * @return
     */
    private static String byteToStr(byte[] byteArray) {
        String strDigest = "";
        for (int i = 0; i < byteArray.length; i++) {
            strDigest += byteToHexStr(byteArray[i]);
        }
        return strDigest;
    }
 
    /**
     * 将字节转换为十六进制字符串
     * 
     * @param mByte
     * @return
     */
    private static String byteToHexStr(byte mByte) {
        char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
        char[] tempArr = new char[2];
        tempArr[0] = Digit[(mByte >>> 4) & 0X0F];
        tempArr[1] = Digit[mByte & 0X0F];
 
        String s = new String(tempArr);
        return s;
    }

controller中调用CheckSignature

@GetMapping("/check.do")
    @ResponseBody
    public String ckeck(String signature, String timestamp, String nonce,String echostr) {
        if(CheckSignature.checkSignature(signature, timestamp, nonce)){
            return echostr;
        }
        return "";
    }

完成后点击 提交 

成功!!

 

工具类代码均来自:https://blog.csdn.net/godhexin/article/details/81084239  侵删

2014-11-12 11:40:10 LIHONFEI89 阅读数 723
  • 微信开发者工具使用教程 如何上传、发布、审核等

    微信开发者工具使用教程 如何上传、发布、审核等 2020年3月31日录 - 微信开发者工具使用教程 01-微信开发者工具的下载和安装 02-微信小程序账号的注册、登录、appid的获取 03-微信小程序开发和公众号开发模式的切换 04-微信小程序如何导入项目 05-不在以下request合法域名列表如何设置解决 06-模拟器、编辑器、调试器的使用 07-本地如何调试、手机测试小程序 08-公众号账号关联和管理多个小程序 09-微信小程序项目管理、上传、审核、发布 10-如何能学会微信小程序开发

    123 人正在学习 去看看 黄菊华

微信公众平台开发模式对于很多人来说还是很难理解,毕竟是代码问题,这份资料,面对的主要也是有编程经验的。对于只会编辑模式的人来说。阅读会有点困难。我们现在就一起来了解一下吧!

1 文本类型息

接口获取到的消息格式:

这类信息是微信公众平台接收到的最多的消息。即用户向微信公众帐号发送文本信息。消息格式为:

文本消息的数据字段:

ToUserName:开发者微信号(公众账号ID)

FromUserName:发送方帐号(微信用户的OPENID,每个微信用户与每个公众账号是唯一的,不同公众账号同个用户OPENID是不同的)

CreateTime:消息创建时间

MsgType:消息类型(文本消息为text)

Content:消息内容

MsgId:消息的ID号

2 图文类型

用户使用图片上传发送消息

接口获取到的消息格式:

图片消息与文本消息数据不同:

MsgType:消息类型为image

PicUrl:图片链接,该图片保存在微信的服务器上,可以通过远程抓取图片程序保存到本地。

3  LBS,用户发送地理位置功能,常用在饮食类等本地的微信公众帐号

接口获取到的消息格式:

地理位置消息与文本消息数据不同:

MsgType:消息类型为location

Location_X、Location_Y、Scale:地理位置的经纬度和地图缩放比例,用于第三方地图接口的应用,搜索周边需要用到

Label:地理位置文字信息,如某某城市某某路某某号,如果以城市为单位查询直接拿这个就可以。

4 链接消息

像微市场的微信公众帐号就采用了很多链接消息的,具体大家可以关注微市场公众帐号体验下哦!

链接消息与文本消息数据不同:

MsgType:消息类型为link

Title:消息标题

Description:消息描述

Url:链接地址

5 语音消息

这个消息接口并不在公开文档上,但事实上有不少微信应用已经在使用,比如路况电台,不全面开放的原因我个人猜测是因为微信自己的语音识别还不理想,未来肯定会开放,想象一下对公众账号说句话后台就能给反馈信息多方便的功能。

接口获取到的消息格式:

语音消息与文本消息数据不同:

MsgType:消息类型为voice

MediaId:语音消息媒体id,可以调用相应接口获取内容

Format:语音类型,如amr,speex,wav等,目前是使用的speex。

6 事件推送

这个接口很重要,目前只开放了用户关注、用户退订,还有自定义菜单按钮相应的功能,部分测试的有用户打开公众号提醒和自动发送地理位置。也就是用户不发送任何内容也可以捕捉用户行为做出回复。

接口获取到的消息格式:

事件推送与文本消息数据不同:

MsgType:消息类型为event

Event:事件内容,subscribe(订阅)、unsubscribe(取消订阅)、CLICK(自定义菜单点击事件)

EventKey:当用户事件为点击自定义菜单时,返回事件KEY值,与自定义菜单接口中KEY值对应。

7 多图文消息类型

与回复文本消息的数据字段的不同:

MsgType:回复消息类型为news

ArticleCount:图文消息个数,限制为10条以内,这个必须准确,有多少条图文消息就得填写多少,不然会出错。

Articles:多条图文消息信息,默认第一个item为大图,每个item的结构完全一样,每个item表示一条图文消息。

Title:图文消息标题

Description:图文消息描述

PicUrl:图片链接,支持JPG、PNG格式,较好的效果为大图640*320,小图80*80。

Url:点击图文消息跳转链接,这个链接可以是自己网站链接,但是记得申请白名单,不然出现警告提示用户一般不会点击进去。

2018-11-16 14:58:14 jal517486222 阅读数 1139
  • 微信开发者工具使用教程 如何上传、发布、审核等

    微信开发者工具使用教程 如何上传、发布、审核等 2020年3月31日录 - 微信开发者工具使用教程 01-微信开发者工具的下载和安装 02-微信小程序账号的注册、登录、appid的获取 03-微信小程序开发和公众号开发模式的切换 04-微信小程序如何导入项目 05-不在以下request合法域名列表如何设置解决 06-模拟器、编辑器、调试器的使用 07-本地如何调试、手机测试小程序 08-公众号账号关联和管理多个小程序 09-微信小程序项目管理、上传、审核、发布 10-如何能学会微信小程序开发

    123 人正在学习 去看看 黄菊华

PHP版接入微信开发者模式,进行Token验证


一、登录微信公众号的后台,鼠标滚动到最下方,然后点击开发->基本配置,然后点击绿色的启用按钮,内容不着急填写

在这里插入图片描述


二、下载微信公众平台提供的PHP版本介入实例文件:

这是微信公众平台提供的下载链接,请点击
懒得下载的人可以将下面的代码拷贝下来,放入PHP文件里,命名为configToken.php

<?php
/**
  * wechat php test
  */

//define your token
define("TOKEN", "weixin");//此处的TOKEN就是接下来需要填在微信的配置里面的token,需要保持严格一致
$wechatObj = new wechatCallbackapiTest();
$wechatObj->valid();

class wechatCallbackapiTest
{
	public function valid()
    {
        $echoStr = $_GET["echostr"];
        
        //valid signature , option
        if($this->checkSignature()){
        	echo $echoStr;
        	exit;
        }
    }

    public function responseMsg()
    {
		//get post data, May be due to the different environments
		$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];

      	//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 */
                libxml_disable_entity_loader(true);
              	$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
                $fromUsername = $postObj->FromUserName;
                $toUsername = $postObj->ToUserName;
                $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(!empty( $keyword ))
                {
              		$msgType = "text";
                	$contentStr = "Welcome to wechat world!";
                	$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
                	echo $resultStr;
                }else{
                	echo "Input something...";
                }

        }else {
        	echo "";
        	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;
		}
	}
}

?>

三、建一个PHP项目,我起的名称叫做WeiXinWeb,将刚才下载的wx_sample文件解压缩,然后重命名为configToken.php(就是我上面的代码)放到项目的根目录中(我的项目中还有其他几个文件都是从git上克隆下来的,你们的项目中没有也没关系,只需要有configToken.php就行了)

在这里插入图片描述


四、将这个项目放到公网能访问的服务器上,开发人员都懂该怎么操作吧,没有服务器的可以自己去各个云购买去,此处默认你有公网服务器


五、回到第一步微信公众平台的开发者的配置下面,点击“修改配置”, 将服务器地址写上你的configToken.php能被访问到的路径,我中间的马赛克是我的服务器域名,你们修改成自己的即可。此处的token就是刚才填在configToken的TOKEN,需要保持严格一致

在这里插入图片描述

到此就大功告成了,分分钟就解决问题,庆祝一下~

勉强看看

博文 来自: zhaokang491460192

微信开发

阅读数 66

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