2018-11-16 14:58:14 jal517486222 阅读数 897
  • 微信开发之三素材管理-微信开发php版

    微信开发之素材管理是子恒老师《微信公众平台开发》视频教程的第三部。详细讲解了用php开发微信,对微信公众平台中的素材管理开发。内容包含微信临时素材,永久素材的上传,删除,获取素材的media_id等等。欢迎反馈,微信/QQ:68183131

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

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,需要保持严格一致

在这里插入图片描述

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

2017-05-04 11:09:38 DestinyLordC 阅读数 1453
  • 微信开发之三素材管理-微信开发php版

    微信开发之素材管理是子恒老师《微信公众平台开发》视频教程的第三部。详细讲解了用php开发微信,对微信公众平台中的素材管理开发。内容包含微信临时素材,永久素材的上传,删除,获取素材的media_id等等。欢迎反馈,微信/QQ:68183131

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

方法1

  亲测该方法快捷有效,建议使用,没有windows系统的朋友,随便找一台windows计算机下载安装后,打包需要的文件即可。

安装步骤
需要先在已安装的windows微信开发者工具里面打包package.nw包,安装好后的目录中存在package.nw目录,整个目录打包成.zip格式即可。
下载地址:https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html?t=201715

$ wget -c https://dl.nwjs.io/v0.25.2/nwjs-sdk-v0.25.2-linux-x64.tar.gz
$ ls
nwjs-sdk-v0.25.2-linux-x64.tar.gz package.nw.zip
$ tar -zxvf nwjs-sdk-v0.25.2-linux-x64.tar.gz
$ unzip package.nw.zip
$ mv package.nw/* nwjs-sdk-v0.25.2-linux-x64
$ cd nwjs-sdk-v0.25.2-linux-x64/
$ ./nw
#即可启动

方法2

  微信Web开发者工具只有window版本和mac版本,如果想要在Linux系统下运行微信Web开发者工具,需要花费很大周折。(转自https://zhuanlan.zhihu.com/p/24630979?refer=dreawer

注:带 * 的步骤或文件为不确定是否管用的步骤或文件。
本人系统为Linux Mint 18.1版本。

1、下载nwjs

  下载nwjs的SDK。

2、将微信web开发者工具拷贝到nwjs

  将在window系统下安装的微信web开发者工具文件夹中的package.nw、icon.ico、* 微信web开发者工具.exe拷贝到nwjs sdk解压后的文件夹内。

  * 解压 微信web开发者工具.exe,将解压后的文件夹内的文件移动到nwjs sdk解压后的文件夹内。

3、修改代码

  进入到nwjs文件夹,在终端内运行

$ ./nw
  会出现提示 Cannot find module ‘……’
  
  根据提示,在提示错误的文件内修改module名,因为名字大小写会有错误,比如appServiceConfig模块,它的实际模块名是appserviceConfig,这些都是大小写字母错误导致找不到模块。

  会有几个文件需要修改,根据错误提示修改。

4、在微信小程序项目文件内创建run-detectors文件

  在微信小程序项目文件夹内创建run-detectors文件,因为该文件没有扩展名,在linux系统会被认为是文件夹,导致找不到该文件导致报错。

5、下载wine

  在命令行内运行

  $ sudo apt-get install wine
  在右键选择wine环境运行wcc.exe,会提示安装依赖。wcc.exe在linux的 /home/用户名/.config/微信web开发者工具/WeappVendor 文件夹内。

6、载入项目

  在载入项目前,* 先在wine下运行wcc.exe和wcsc.exe(不提前运行wcc.exe和wcsc.exe的话可能会报错)。第一次载入项目后编译可能会慢一些,3、5s到10s左右,后面因为有缓存会快一些。


  修改wcc.exe和wcsc.exe文件名,去掉.exe。

  进入到package.nw/app/dist/weapp/文件夹,找到

  commit/build.js、trans/transWxmlToJs.js和utils/vendorManager.js,将代码中的wcc.exe和wcsc.exe改成wcc和wcsc。

  !!!使用编辑功能可能会报错,所以不要用自带的编辑功能。

7、编辑器

  推荐使用webstorm,在File - Editor - code style - File Types内设置如图下所示。将wxss添加到css类型文件,将wxml添加到html类型文件。

  微信的文件改变自动刷新会有3到5s的时间来编译,不是很快。

2018-10-22 21:19:04 jyluwen 阅读数 1338
  • 微信开发之三素材管理-微信开发php版

    微信开发之素材管理是子恒老师《微信公众平台开发》视频教程的第三部。详细讲解了用php开发微信,对微信公众平台中的素材管理开发。内容包含微信临时素材,永久素材的上传,删除,获取素材的media_id等等。欢迎反馈,微信/QQ:68183131

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

       之前下载了微信开发者工具,最近一直提示下载更新。因为嫌麻烦,就没有更新。结果今天微信开发者工具竟然打不开了!好吧!以后还是经常更新比较好!

  遇到了微信开发者工具打不开的问题,就重新下载了最新版的微信开发者工具!但是下载完了以后,却发现打不上汉字,我的天呀!网上搜索还是微信开发者工具自身的bug,需要重新启动一下才可以使用。好吧,我又关了重新启动了一下,才可以正常使用。

   经验教训:1.需要经常更新微信开发者工具,别等到有了问题,如打不开,进不去编辑页面,才重新下载!会影响工作效率。不过如果是更新了,依然会出现这个问题,那就只能重新下载了!

       2.重新更新了以后,会出现打不上中文汉字的问题,只能输入英文,输入中文就会闪一下没了。解决方案:关闭微信开发者工具,再重新打开!

什么时候我写文章也能如此就好了!老话说:“读书破问卷,下笔如有神”,想来我读书还是没有读到位呀!

2015-08-31 16:00:29 u010773333 阅读数 7875
  • 微信开发之三素材管理-微信开发php版

    微信开发之素材管理是子恒老师《微信公众平台开发》视频教程的第三部。详细讲解了用php开发微信,对微信公众平台中的素材管理开发。内容包含微信临时素材,永久素材的上传,删除,获取素材的media_id等等。欢迎反馈,微信/QQ:68183131

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

最近产品经理要做每天推送图文信息的功能,哎,还要超链接传递不同的参数,苦逼呀。。网上查了一些资料,下面讲解一下群发素材

要群发素材,首先要先获得素材,素材都是以图片和文字的形式推送给用户的,所以要首先获得图片和文字

微信的上传媒体接口:https://api.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE

可以用来上传图片,上传成功返回:{"type":"TYPE","media_id":"MEDIA_ID","created_at":123456789},其中media_id就是图片在微信服务器的标识。

上传方法:

       /// <summary>
        /// 上传媒体返回媒体ID
        /// </summary>
        public static string UploadMedia(string access_token, string type, string path)
        {
            // 设置参数
            string url = string.Format("http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token={0}&type={1}", access_token, type);
            return HttpRequestUtil.HttpUploadFile(url, path);
        }

第二步:拼接图文消息素材Json字符串,其中msg就是上述的微信服务器传回来的媒体ID

       /// <summary>
        /// 拼接图文消息素材Json字符串
        /// </summary>
        public static string GetArticlesJsonStr(string access_token,string msg)
        {
            StringBuilder sbArticlesJson = new StringBuilder();

             sbArticlesJson.Append("{\"articles\":[");
                //string media_id = Tools.GetJsonValue(msg, "media_id");
               // string media_id = (msg,"media_id");
                sbArticlesJson.Append("{");
                // sbArticlesJson.Append();
                sbArticlesJson.Append("\"thumb_media_id\":\"" + msg + "\",");
                sbArticlesJson.Append("\"author\":\"" + "王华涛" + "\",");
                sbArticlesJson.Append("\"title\":\"" + "作业已经完成" + "\",");
                sbArticlesJson.Append("\"content_source_url\":\"" + "http://。。。。" + "\",");
                sbArticlesJson.Append("\"content\":\"" + "作业信息" + "\",");
                sbArticlesJson.Append("\"digest\":\"" +"您孩子的作业已经完成" + "\",");
                sbArticlesJson.Append("\"show_cover_pic\":\"1\"}");
                sbArticlesJson.Append("]}");

            return sbArticlesJson.ToString();
        } 

第三步:上传图文消息素材,其中postData就是拼接图文消息素材Json字符串,调用微信接口上传之后获得media_id

        /// <summary>
        /// 上传图文消息素材返回media_id
        /// </summary>
        public static string UploadNews(string access_token, string postData)
        {
            return HttpRequestUtil.PostUrl(string.Format("https://api.weixin.qq.com/cgi-bin/media/uploadnews?access_token={0}", access_token), postData);
        }

第四步:图文消息json,添加发送用户openid

      /// <summary>
        /// 图文消息json
        /// </summary>
        public static string CreateNewsJson(string media_id, List<string> openids)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("{\"touser\":[\"");

            foreach(string  openid in openids)    

            {

                 sb.Append(openid);
                sb.Append("\",\"");

            }
            sb.Append("\"],");
            sb.Append("\"msgtype\":\"mpnews\",");
            sb.Append("\"mpnews\":{\"media_id\":\"" + media_id + "\"}");
            sb.Append("}");
            return sb.ToString();
        }
第五步:调用微信发送素材接口,根据OpenID列表群发素材信息

        /// <summary>
        /// 根据OpenID列表群发
        /// </summary>
        public static string Send(string access_token, string postData)
        {
            return HttpRequestUtil.PostUrl(string.Format("https://api.weixin.qq.com/cgi-bin/message/mass/send?access_token={0}", access_token), postData);
        }



2019-12-12 20:18:56 qq_31752115 阅读数 10
  • 微信开发之三素材管理-微信开发php版

    微信开发之素材管理是子恒老师《微信公众平台开发》视频教程的第三部。详细讲解了用php开发微信,对微信公众平台中的素材管理开发。内容包含微信临时素材,永久素材的上传,删除,获取素材的media_id等等。欢迎反馈,微信/QQ:68183131

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

微信公众号的开发者配置中的微信开发工具中明明已经正确绑定开发者账号,但微信开发者工具还是弹出“未绑定网页开发者”,坑了好久,记录下

原因:

1.微信公众号的开发者配置中的微信开发工具中没有绑定开发者账号;

2.调用支付授权接口所传递的参数中的appid和公众服务号的appid 。

我就是第2个原因,我是查看授权接口的参数才找到appid不对号,坑了好久。找到原因后我就找到ecshop的平台后台管理系统的系统设置中的支付方式的微信支付,编辑配置对应服务号的appid ,解决完毕。

微信开发

阅读数 60

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