2017-09-12 09:44:45 a007x0604 阅读数 405
  • 微信支付开发-微信公众号开发12-微信开发php

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

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

在昨天的开发模板消息发送的问题中,碰到了一个“470001”的错误。我设置了两个模板相同,内容不同的模板消息,其中一个可以发送,而另一个却不行。后来dump出结果是“470001”。

然后去查了手册。




就觉得主要的原因应该是以上的内容。

看到这个,我突然想到是不是我的链接太长了。

后来去换了个短链接  生成短链接网站:http://dwz.wailian.work/index.php

果然就可以了。


2018-04-19 09:54:09 xtm3000 阅读数 153
  • 微信支付开发-微信公众号开发12-微信开发php

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

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

链接消息

<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1351776360</CreateTime>
<MsgType><![CDATA[link]]></MsgType>
<Title><![CDATA[公众平台官网链接]]></Title>
<Description><![CDATA[公众平台官网链接]]></Description>
<Url><![CDATA[url]]></Url>
<MsgId>1234567890123456</MsgId>
</xml> 

参数描述
ToUserName接收方微信号
FromUserName发送方微信号,若为普通用户,则是一个OpenID
CreateTime消息创建时间
MsgType消息类型,link
Title消息标题
Description消息描述
Url消息链接
MsgId消息id,64位整型

事件推送

事件推送只支持微信4.5版本,目前开启自定义菜单接口事件推送、关注与取消关注事件推送。其余功能即将开放,敬请期待。

<xml><ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[FromUser]]></FromUserName>
<CreateTime>123456789</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[EVENT]]></Event>
<EventKey><![CDATA[EVENTKEY]]></EventKey>
</xml>
参数描述
ToUserName接收方微信号
FromUserName发送方微信号,若为普通用户,则是一个OpenID
CreateTime消息创建时间
MsgType消息类型,event
Event事件类型,subscribe(订阅)、unsubscribe(取消订阅)、CLICK(自定义菜单点击事件)
EventKey事件KEY值,与自定义菜单接口中KEY值对应



2018-04-23 08:11:28 mo3408 阅读数 194
  • 微信支付开发-微信公众号开发12-微信开发php

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

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

1.首先要把图文的信息存进数据库,然后把图文的信息在页面上显示出来,通过上传把返回的media_id存进media_news(media_id)和media_news_list(thumb_media_id).

2.第一步将图文信息存进数据库:

    

	public function addnews(){
		if(IS_GET){
			$this->display();
		}else{	
			$mp=getCurrentMp();//获取当前公众号信息
			$mp_id=$mp['id'];
			$data=I('post.');
			$data=$data['data'];
			foreach ($data as $key => &$value) {
				$value['mp_id']=$mp_id;
				$value['create_time']=time();
				if($key==0){
					$news_id=M('media_news')->add($value);
				}
				$value['news_id']=$news_id;
				$ret=M('media_news_list')->add($value);
			}					
			if($ret){
				$this->ajaxReturn(array('status'=>1,'msg'=>'成功'));
			}else{
				$this->ajaxReturn(array('status'=>0,'msg'=>'失败'));
			}
		}
	}
}

3.显示图文信息:

   

public function index(){
		    $mp=getCurrentMp();//获取公众号
			$mp_id=$mp['id'];		
			$arr=M('media_news')->where("mp_id='$mp_id'")->select();//查询公众号当前的图文
			$data=array();
			foreach ($arr as  $value) {
				$news_id=$value['news_id'];
				$ret=M('media_news_list')->where("news_id='$news_id'")->select();
				$value['list']=$ret;
				$data[]=$value;
			}
			// print_r($data);
			$this->assign('data',$data);
			$this->display('newslist');
			// exit;
		
		
	}

4.将返回的media_id存进表:

  

$newid=I('news_id');//获取news_id
		// echo $newid;
		// exit;
		$accessToken=getAccess_token();//获取access_token
		include APP_PATH . 'LaneWeChat/lanewechat.php';	
		$url1="https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=$accessToken&type=image";
		$con['news_id']=$newid;
		$url=M('media_news_list')->where($con)->getField('cover',true);
		foreach ($url as  $value) {
				$file=realpath('.'. $value);//相对路径->绝对路径
				$data['media']=Curl::addFile($file);	
				$ret=Curl::callWebServer($url1,$data,'post',1,0);
				$data['thumb_media_id']=$ret['media_id'];
				$re['media_id']=$ret['media_id'];
				$con['news_id']=$newid;
				M('media_news')->where($con)->save($re);
				M('media_news_list')->where($con)->save($data);
		}	


2016-11-15 11:38:46 qq_24091555 阅读数 20073
  • 微信支付开发-微信公众号开发12-微信开发php

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

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

           由于项目需要,需要接触微信开发,并要调用微信的JS-SDK里面的接口。

       因为经验缺乏,我百度一下关于微信开发的资料,但收集的资料都不尽人意。网上的主流的微信开发是采用PHP开发的,而本人学的Java。所以对PHP微信开发只能看懂思路。更有的是,网上一些微信开发视频,也是和PHP有关的,关于用Java开发的甚少。

       无奈之下,我只好苦啃微信开发文档。大家都知道,微信官方给的开发文档真的有点那个啥,一个功能实现非要分几个地方来说,看完这块,又得点击另一个页面看完另一块,甚是麻烦。这样的设定也让我走了好多坑。

但功夫不负有心,在研究透了微信开发文档之后,我顺利在在项目中完成微信开发。现在我将微信开发的经验分享一下,希望对大家有所帮助。

       微信JS-SDK是微信公众号平台面向网页开发这提供基于微信内的网页开发工具包。接口大类分为:基础接口、分享接口、图像接口、音频接口、智能接口、设备信息、地址位置、摇一摇周边、界面操作、微信扫一扫、微信小店、微信卡劵和微信支付。一般使用频率高的就是分享接口、地理微信、微信扫一扫和微信支付。

接下来,我将主要讲解如何调用微信分享接口。

第一步,准备内网映射工具,ngrok。不清楚这个的同学可以去百度一下。https://ngrok.com为ngrok官网。要进行微信开发,内网映射工具是不可少。毕竟,我们程序员进行开发,要测试开发的产品是否能用,都先在自己的电脑跑一下。但由于ngrok的服务器在外国的,鉴于天朝的墙太高,访问可能不稳定。所以我推荐的是国内的natapp,免费和收费的都有,服务毕竟稳定可靠,只不过要想自定义二级域名就得交费成为VIP咯。

第二步,配置JS接口安全域名。登录要进行开发的公众号,点击公众设置--->功能设置。设置JS接口安全域名,要注意三点:①填写域名前面不需加上http://,例如你的域名是http://test.com,直接填写test.com即可;②域名默认80端口,只支持80和443端口,所以域名后面不能添加端口号。③该域名为你调用微信JS-SDK接口域名。

第三步,引用JS文件。在需要调用JS接口的页面引入http://res.wx.qq.com/open/js/jweixin-1.0.0.js 。


第四步,通过config接口注入权限验证配置 。具体参数有什么用处,在截图都有注释讲解。其中jsApiList为我们要使用的接口,我在下面共引用了五个接口,分别为微信好友分享、QQ好友分享、腾讯微博分享、QQ空间分享和朋友圈分享。调用的都是分享的接口。至于其他接口列表,可以去微信开发文档那浏览一下。这里就不详说。

        第五步,在服务器生成相关参数传到调用JS-SDK页面,完成授权。这是最重要的一步。如上图所示,appId,timestamp,nonceStr,signature都为必填参数。下面我将会详细说说如何生成这些参数并传回页面。

appId为开发的微信公众号的AppID(应用ID),我们可以在登录微信公众号,在开发选项中点击基本配置来查看。

timestamp为系统生成的时间戳。


nonceStr为服务器随机生成的字符串。



signature为微信JS-SDK使用权限算法。在生成signature之前,我们要拿到jsapi_ticket。官方文档是这样解释的:


我们要注意三个地方。jsapi_ticket要缓存两个小时,每过两个小时,向微信那边请求一次。获取jsapi_ticket要通过access_token。那么我们该如何获取access_token呢?


从文档可以看出,access_token需要AppID和AppSercet两个参数。而且access_token和jsapi_ticket一样,有效期皆为两小时。这就要求我们服务器要缓存access_token和jsapi_ticket,当有效期一过,就重新请求。有的人采用是用数据库来存取这两个参数,而我采用的是用Quartz定时器。关于Quartz定时器的使用,可浏览我上篇博客《SSH与Quartz集成》,里面有关于Quartz的使用方法。

AppSercet可在与APPID同一页面获取。接下来,调用接口,获取access_token。



接下来,我们用access_token去获取jsapi_ticket。


获取jsapi_ticket,就可以进行生成签名。在此之前,先看一下官方文档的签名算法。



用代码实现。


第六步,传生成的参数给网页。



第七步,调用已授权的JS接口。


第八步,利用微信Web开发者工具调试,看看是否授权成功。(微信web开发者工具可在微信开发下载)。



2016-09-15 12:00:42 sam976 阅读数 4427
  • 微信支付开发-微信公众号开发12-微信开发php

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

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

关键字:curl、微信开发、上传永久素材

前言

微信开发,需要使用的素材(如图片、视频)必须先上传到微信服务器,通过微信服务器返回的meida_id在腾讯系域名内使用。当然可以直接使用代码来实现上传请求,获取微信服务器返回的media_id,但是这样的方式略显麻烦,幸亏微信开发可以通过curl命令直接上传素材获取返回的url。

curl下载安装

curl是一种命令行工具,作用是发出网络请求,得到和提取返回的数据。在curl工具下载页根据系统下载相应的版本,比如Windows系统下载win32版本,需要注意的是,如果没有使用ssl协议(https),直接下载无ssl版本即可,比如curl-7.16.0-win32-nossl.zip。如果使用了ssl协议(https),就得下载ssl版本,比如curl-7.16.0-win32-ssl.zip,使用ssl版本还需要下载OpenSSL软件(安装exe即可)实现SSL协议。

curl上传素材

下载完成的curl压缩包解压之后,打开dos命令行工具(cmd),从dos进入curl根目录(cd..)。输入curl命令即可上传素材到微信服务器。命令如下:

curl  -F media=@1.jpg -F type=image "https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=LJLJ3oEHi8rcuJnUv6RryYHpiVybevrtR4upY_W5_gqXLDhtAHj2-qaxYzfMKe2gSQtO4mPsmoWmu9LUPvLv7cNtnmtC1ezZj2lxwqd9U1eY35rTeuhoyufpcfmf4XgLLXZdAAACOQ"

命令需要注意两点:①上传素材的地址相对于curl目录,路径要确认无误,否则curl会找不到素材,一般把素材放在curl目录中。②什么微信公众号使用该素材,就得用该微信公众号的appid和appsecret生成的access_token,否则在微信公众号中无法使用该素材。

在dos中返回的字符串

{"media_id":"1YTbzmBpzu9_MDbee6yPlfvtqNbJufAbqJmsb3kkFA","url":"http:\/\/mmbiz.qpic.cn\/mmbiz_jpg\/gMreo1rjy9LIGD9GVeNyWmPHV2nzmiaBXhs8qVaDloQ4iaIhHhIwJAu4ZnmuyIPFqvGCZDacTn748eq4iaBmYXj3Q\/0?wx_fmt=jpeg"}

其中的media_id就可以在微信中唯一标记我们上传的永久素材。
没有更多推荐了,返回首页