怎么用php访问微信小程序开发教程限

查看: 11668|回复: 12
微信消息接口 如何用在PHPCMS上
公众平台消息接口为开发者提供了一种新的消息处理方式。
二 、 申请消息接口
点击申请,如实填写负责人姓名 、 手机号和邮箱,填写网址url和token,其中token可由开发者可以任意填写,用作生成签名。
三 、 网址接入
公众平台用户提交信息后,我们将以GET请求方式请求到填写的Url上,并且带上四个参数:
* signature — 微信加密签名
* timestamp — 时间戳
* nonce — 随机数
* echostr — 随机字符串
开发者通过检验signature对网址接入合法性进行校验。若此次GET请求原样返回echostr参数内容,则接入生效,否则接入失败。验证signature将结合开发者填写的token参数、timestamp参数和nonce参数等,加密流程:
* 将token、timestamp、nonce三个参数进行字典序排序
* 将三个参数字符串拼接成一个字符串进行SHA1加密
* 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信。
四 、 消息推送
当普通微信用户向公众账号发消息时,公众平台将POST该消息到填写的Url上(现支持文本消息以及地理位置消息)。结构如下:
文本消息xml格式
&ToUserName&&![CDATA[toUser]]&&/ToUserName&
&FromUserName&&![CDATA[fromUser]]&&/FromUserName&
&CreateTime&&/CreateTime&
&MsgType&&![CDATA[text]]&&/MsgType&
&Content&&![CDATA[this is a test]]&&/Content&
ToUserName 消息接收方微信号,一般为公众平台账号微信号
FromUserName 消息发送方微信号
CreateTime 消息创建时间
MsgType 文本消息为text
Content 消息内容
地理位置消息xml格式
&ToUserName&&![CDATA[toUser]]&&/ToUserName&
&FromUserName&&![CDATA[fromUser]]&&/FromUserName&
&CreateTime&&/CreateTime&
&MsgType&&![CDATA[location]]&&/MsgType&
&Location_X&23.134521&/Location_X&
&Location_Y&113.358803&/Location_Y&
&Scale&20&/Scale&
&Label&&![CDATA[位置信息]]&&/Label&
ToUserName 消息接收方微信号,一般为公众平台账号微信号
FromUserName 消息发送方微信号
CreateTime 消息创建时间
MsgType 消息类型,地理位置为location
Location_X 地理位置纬度
Location_Y 地理位置经度
Scale 地图缩放大小
Label 地理位置信息
图片消息结构
&ToUserName&&![CDATA[toUser]]&&/ToUserName&
&FromUserName&&![CDATA[fromUser]]&&/FromUserName&
&CreateTime&&/CreateTime&
&MsgType&&![CDATA[image]]&&/MsgType&
&PicUrl&&![CDATA[this is a url]&&/PicUrl&
ToUserName 消息接收方微信号,一般为公众平台账号微信号
FromUserName 消息发送方微信号
CreateTime 消息创建时间
MsgType 消息类型image
PicUrl 图片链接,开发者可以用HTTP GET获取
五 、 消息回复
对于每一个POST请求,开发者在响应包中返回特定xml结构,对该消息进行相应操作(现支持回复文本消息 、 回复图文消息和星标操作)。xml结构如下:
回复文本消息格式
&ToUserName&&![CDATA[toUser]]&&/ToUserName&
&FromUserName&&![CDATA[fromUser]]&&/FromUserName&
&CreateTime&&/CreateTime&
&MsgType&&![CDATA[text]]&&/MsgType&
&Content&&![CDATA[content]]&&/Content&
&FuncFlag&0&/FuncFlag&
FromUserName 消息发送方
ToUserName 消息接收方
CreateTime 消息创建时间
MsgType 消息类型,文本消息必须填写text
Content 消息内容,大小限制在2048字节,字段为空为不合法请求
回复图文消息格式
&ToUserName&&![CDATA[toUser]]&&/ToUserName&
&FromUserName&&![CDATA[fromUser]]&&/FromUserName&
&CreateTime&&/CreateTime&
&MsgType&&![CDATA[news]]&&/MsgType&
&Content&&![CDATA[]]&&/Content&
&ArticleCount&2&/ArticleCount&
&Articles&
&Title&&![CDATA[title1]]&&/Title&
&Description&&![CDATA[description1]]&&/Description&
&PicUrl&&![CDATA[picurl]]&&/PicUrl&
&Url&&![CDATA[url]]&&/Url&
&Title&&![CDATA[title]]&&/Title&
&Description&&![CDATA[description]]&&/Description&
&PicUrl&&![CDATA[picurl]]&&/PicUrl&
&Url&&![CDATA[url]]&&/Url&
&/Articles&
&FuncFlag&1&/FuncFlag&
FromUserName 消息发送方
ToUserName 消息接收方
CreateTime 消息创建时间
MsgType 消息类型,图文消息必须填写news
Content 消息内容,图文消息可填空
ArticleCount 图文消息个数,限制为10条以内
Articles 多条图文消息信息,默认第一个item为大图
Title 图文消息标题
Description 图文消息描述
PicUrl 图片链接,支持JPG、PNG格式,较好的效果为大图640*320,小图80*80,限制图片链接的域名需要与开发者填写的基本资料中的Url一致
Url 点击图文消息跳转链接
在xml结构中,有一个FuncFlag字段,开发者可以通过填写FuncFlag字段为1来对消息进行星标,你可以在实时消息的星标消息分类中找到该消息
六 、 示例代码
这个嘛,还没研究过
后台有个模块 数据源 可以生成 xml json 用那个级可以。
你说的那个 数据源 怎么搞啊
define(&TOKEN&, &weixin&);
$wechatObj = new wechatCallbackapiTest();
$wechatObj-&valid();
class wechatCallbackapiTest
public function valid()
& && &&&$echoStr = $_GET[&echostr&];
& && &&&//valid signature , option
& && &&&if($this-&checkSignature()){
& && &&&& & & & echo $echoS
& && &&&& & & &
& & & & 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 ){
& & & & & & & & & & & &
& & & & & & & & }else{
& & & & & & & & & & & &
& & & & & & & & }
if(!file_exists(dirname(__FILE__).'/caches/configs/database.php'))
& & & & echo &找不到文件&;
& & exit();
$db =&&require_once( dirname(__FILE__).'/caches/configs/database.php');
$conn=mysql_connect($db['default']['hostname'],$db['default']['username'],$db['default']['password']);
$flag=mysql_select_db($db['default']['database'],$conn);
$keyword = $_REQUEST['keyword'];
// $wxaccount = $_REQUEST['wxaccount'];
// if($wxaccount != WXACCOUNT){
// & & & & & & & & exit(0);
$keyword = strip_tags($keyword);
if($keyword == &&){
& & & & & & & & exit(0);
mysql_query(&set names utf8&);
$select = mysql_query(&SELECT * FROM v9_news where title like '%$keyword%'&&order by id desc limit 9&);
& & & & while($group = mysql_fetch_array($select)){
& & & & & & & & & & & & if($group['title'] == &&)
& & & & & & & & & & & & $title = &&Title&&.$group['title'].&&/Title&&;
& & & & & & & & & & & & $content = &&Description&&![CDATA[&.$group['description'].&]]&&/Description&&;
& & & & & & & & & & & & $url = &&Url&&.$group['url'].&&/Url&&;
& & & & & & & & & & & & & & & & $imgurl = &&PicUrl&&.$group['thumb'].&&/PicUrl&&;
& & & & & & & & & & & & $itmes[] = &&itmes&\n&.$title.&\n&.$url.&\n&.$imgurl.&\n&.$content.&\n&/itmes&&;
if($itmes == &&){
& & & & $itmes[] = &&itmes&&/itmes&&;
$xml = implode( &\n&,$itmes );
$resultStr = '&?xml version=&1.0&?&'.&\n&feed&\n&.$xml.&\n&/feed&&;
echo( $resultStr );& & & & & & & & & & & &
& & & & & & & & & & & &
然后怎么办&&这是必须用在别人的平台上面的 大神出来帮帮忙
define(&TOKEN&, &weixin&);
$wechatObj = new wechatCallbackapiTest();
$wechatObj-&valid();
class wechatCallbackapiTest
{
public function valid()
& & {
& && &&&$echoStr = $_GET[&echostr&];
& && &&&//valid signature , option
& && &&&if($this-&checkSignature()){
& && &&&& & & & echo $echoS
& && &&&& & & &
& && &&&}
& & & & }
& & & & 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 ){
& & & & & & & & & & & &
& & & & & & & & }else{
& & & & & & & & & & & &
& & & & & & & & }
& & & & }
}
if(!file_exists(dirname(__FILE__).'/caches/configs/database.php'))
{
& & & & echo &找不到文件&;
& & exit();
}
$db =&&require_once( dirname(__FILE__).'/caches/configs/database.php');
$conn=mysql_connect($db['default']['hostname'],$db['default']['username'],$db['default']['password']);
$flag=mysql_select_db($db['default']['database'],$conn);
$keyword = $_REQUEST['keyword'];
// $wxaccount = $_REQUEST['wxaccount'];
// if($wxaccount != WXACCOUNT){
// & & & & & & & & exit(0);
// }
$keyword = strip_tags($keyword);
if($keyword == &&){
& & & & & & & & exit(0);
}
mysql_query(&set names utf8&);
$select = mysql_query(&SELECT * FROM v9_news where title like '%$keyword%'&&order by id desc limit 9&);
& & & & while($group = mysql_fetch_array($select)){
& & & & & & & & & & & & if($group['title'] == &&)
& & & & & & & & & & & & $title = &&Title&&.$group['title'].&&/Title&&;
& & & & & & & & & & & & $content = &&Description&&![CDATA[&.$group['description'].&]]&&/Description&&;
& & & & & & & & & & & & $url = &&Url&&.$group['url'].&&/Url&&;
& & & & & & & & & & & & & & & & $imgurl = &&PicUrl&&.$group['thumb'].&&/PicUrl&&;
& & & & & & & & & & & & $itmes[] = &&itmes&\n&.$title.&\n&.$url.&\n&.$imgurl.&\n&.$content.&\n&/itmes&&;
& & & & }
if($itmes == &&){
& & & & $itmes[] = &&itmes&&/itmes&&;
}
$xml = implode( &\n&,$itmes );
$resultStr = '&?xml version=&1.0&?&'.&\n&feed&\n&.$xml.&\n&/feed&&;
echo( $resultStr );& & & & & & & & & & & &
& & & & & & & & & & & &
?&复制代码
zdx1494400 发表于
这个代码 需要怎么添加??
可以 使用 乐享的 第三方接口& &
看看我的,只需简单的配置即可完成
可以加我的微信&&qiqudou 体验哦!
本帖子中包含更多资源
才可以下载或查看,没有帐号?
正在找这个http://www.bai-du2.com/
不错的啊,呵呵
有木有开发好的插件可以用的啊,哎,好强大的啊
关于phpcms微信接口,网志博客的博主已经做成phpcms微信插件了。其功能如下:
智能回复管理&&包括关键词的添加、修改、删除,文本和多图文的添加、修改、删除
自定义菜单管理&&包括菜单的添加、修改、发布、删除,菜单事件的文本和多图文推送、菜单查询
微网站&&在微信平台中嵌入微网站
用户管理&&用户管理包括用户和用户组管理。分户管理的功能有导入用户信息,用户动态分析,移动用户分组,向用户发送文本和多图文;添加用户分组、修改用户分组,向用户分组群发文本和多图文
客服信息管理& &可以由智能回复,转换为人工服务
关注回复管理&&设置关注消息,包括文本和多图文
推广支持&&用户扫描场景分析
接口配置& &与微信通讯的接口配置
最近网志博客开发了一款phpcms微信插件,微信的功能都比较齐全,有微信开发这方面的请求,可以去网志博客那里看一下。
Powered by在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
最近在做微信开发,但是一直忽略了一个问题 如何限制页面只能在微信中打开?
在PHP脚本中 可以通过判断 HTTP_USER_AGENT 来判断浏览器是否为微信内置浏览器
但今天看布丁移动下的 微车 公众平台中 很多页面限制只能在微信中打开 但是判断方式应该不是通过在脚本中判断浏览器的头信息,现请问 微车 中限制页面只能在浏览器中打开的思路是什么 ?
来源: 微信开放平台问答
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
微信里打开navigator.userAgent会有micromessenger
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
微车调用了微信的OAuth2.0授权
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
微信有很多内置JS内置API,通过判断这些API是否存在也是可以的吧。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
上面基本都回答了
1、js或程序判断,userAgent,是否包含micromessenger
2、js判断微信相关特有函数
3、调用oauth接口,如果不想用户感知的,可以调用scope=snsapi_base的方式,这个最后只能获得用户openid。scope=snsapi_userinfo方式,用户会看到一个授权页面,点击授权后,可以获得用户所有信息。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
我现在做的项目,是微信公众号的,用户点击我们网站的时候,会去微信服务器获取用户openid,如果获取不到,就说明不是微信浏览器打开.这样用户只有在微信浏览器打开才可以进系统
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
前端的话最好不要通过 ua 来判断是否是微信内置浏览器,因为太容易伪造了。这样来判断
if( typeof WeixinJSBridge !== "undefined" ) {
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
网页用微信打开必须要做微信oauth的网页授权吗?
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。(实用篇)PHP版微信第三方实现一键登录及获取用户信息的方法
php自学与交流微信群:wucy03
极客学院教学视频
想要领取极客学院“整套学习视频基础教程”(所谓整套就是从前端到后端的基础视频教程,比较适合新手)的同学,可以加微信:ali010305 为好友,获取密码领取视频教程,加入时验证信息填:微信平台
文章正文内容
本文实例讲述了PHP版微信第三方实现一键登录及获取用户信息的方法。分享给大家供大家参考,具体如下:
注意,要使用微信在第三方网页登录是需要“服务号”才可以哦,所以必须到官方申请。
一开始你需要进入微信公众平台开启开发模式,并且填写oauth2的回调地址,地址填写你项目的域名就可以了.比如:www.baidu.com或zhidao.baidu.com.如果你的项目在二级域名就写二级域名
前端url授权地址,在url中填写appid与你项目中方法中的oauth的地址,具体在下面的代码中可以看到.
再说后台逻辑,首先调用微信接口的SDK.(后面会有)
include ( './Card/Common/class_weixin_adv.php' );
之后填入微信官方给的的appid与secret
$weixin = new class_weixin_adv( "appid" , "secret" );
初始化SDK的类,取到code,利用获取到的code在获取出openid 看下面代码注释!
$url = " " . $_GET [ 'code' ]. "&grant_type=authorization_code" ;$res = $weixin -&https_request( $url ); //调用SDK方法获取到res 从中可以得到openid$res =(json_decode( $res , true)); //转换成array 方便调用openid
继续调用SDK方法,获取到用户信息.此时$row已经获得用户信息了 可以var_dump下看看键值方便存入数据库
$row = $weixin -&get_user_info( $res [ 'openid' ]);
获取用户信息就大功告成了,但这还不够.我们需要的是无需注册!所以需要利用openid,openid属于唯一凭证,每个用户对不同的公众号都有不同的openid.可以理解成用户账号的感觉.我这里用的是把openid存入cookie的解决方案,类似用户登陆的感觉,一些关键数据验证只需要与数据库中的openid进行对比.其他的一些利用方法可以发挥大家的想象!可以跟我留言交流!
关于之前的a链接的授权,大家也可以判断cookie是否存在openid,从而让未授权用户直接跳转到该地址,省却了用户的一步操作.
下面是完整逻辑代码,大家可以参考下!
SDK代码:微信官方有手册,我就不多讲了,自己研究,很简单的!
小编 定期推送PHP实例,PHP语法,MySQL教程,Linux教程,学习方法等诸多优质内容,最接地气、重服务)
责任编辑:
声明:本文由入驻搜狐号的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。
今日搜狐热点

我要回帖

更多关于 微信小程序开发教程 的文章

 

随机推荐