现在我有一个微信接口,要用PHP写一个方法给特定用户推送消息,该怎样实现?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了现在我有一个微信接口,要用PHP写一个方法给特定用户推送消息,该怎样实现?相关的知识,希望对你有一定的参考价值。
比如接口传送的参数是json格式的"data":"hh","content":"你好!" content 就是要发送给用户的消息,现在该怎样把这个json参数传送给微信接口?
"data":"hh","content":"你好!" content 输入微信代码追问content怎样输入微信代码呢,我现在只有一个微信接口,是需要把这个json参数传输给微信接口,他就会自动发送消息,用php该怎样传输过去呢?
参考技术A可以由微信平台抛出接口,
PHP服务器端使用CURL函数调用接口,POST传参。
如果需要进行安全验证,可以加验证码。
这个是我目前使用的一个方法中的代码段,你可以参考一下
$url =SYS_WEB_SERVICE."V100/push_add";$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, "keytype=$keytype&keyid=$keyid&from_id=$from_id&content=$content&client_idlist=$client_idlist");
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$result=curl_exec($ch);
curl_close($ch); 参考技术B 操,你这高深,应该归类于程序编辑本回答被提问者采纳
php实现微信扫码自动登陆与注册功能
本文实例讲述了php实现微信扫码自动登陆与注册功能。分享给大家供大家参考,具体如下:
微信开发已经是现在程序员必须要掌握的一项基本的技术了,其实做过微信开发的都知道微信接口非常的强大做起来也非常的简单,这里我们一起来看一个微信自动登陆注册的例子.
php 微信扫码 pc端自动登陆注册 用的接口scope 是snsapi_userinfo,微信登陆一个是网页授权登陆,另一个是微信联合登陆
网页授权登陆:http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html
微信联合登陆:https://open.weixin.qq.com/cgi-bin/frame?t=home/web_tmpl&lang=zh_CN
一、首先把微信链接带个标识生成二维码
比如链接为 https://open.weixin.qq.com/connect/oauth2/authorize?appid=‘.$appid.‘&redirect_uri=‘.$url.‘&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect‘ 我们可以在state上做文章,因为state你传入什么微信那边返回什么
可以作为服务器与微信段的一个标识:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
public function creatqrAction(){ if ( $_GET [ ‘app‘ ]){ $wtoken = $_COOKIE [ ‘wtoken‘ ]; $postdata = $_SESSION [ ‘w_state‘ ]; if ( $wtoken ){ $postdata = $wtoken ; } include CONFIG_PATH . ‘phpqrcode/‘ . ‘phpqrcode.php‘ $sh = $this ->shar1(); $value = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx138697ef383a9167&redirect_uri=http://www.xxx.net/login/wcallback&response_type=code&scope=snsapi_userinfo&state=" . $postdata . "&connect_redirect=1#wechat_redirect" ; $errorCorrectionLevel = "L" ; $matrixPointSize = "5" ; QRcode::png( $value , false, $errorCorrectionLevel , $matrixPointSize ); } } |
此时生成了二维码 state是标识,phpqrcode可以在文章末尾下载,这样我们设置了回调地址http://www.xxx.net/login/wcallback
就可以在wcallback方法里面处理数据 插入用户 生成session,跳转登陆,pc端可以设置几秒钟ajax请求服务器,一旦获取到了state,即实现调整,微信浏览器里处理完后可以关闭窗口,微信js可实现:
1
2
|
document.addEventListener( ‘WeixinJSBridgeReady‘ , function onBridgeReady() { WeixinJSBridge.call( ‘closeWindow‘ );}, false ); |
也可以授权登陆成功后跳转到微信服务号关注页面:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
wcallback方法做处理登陆 $code = $_GET [ ‘code‘ ]; $state = $_GET [ ‘state‘ ]; $setting = include CONFIG_PATH . ‘setting.php‘ $appid = $setting [ ‘weixin‘ ][ ‘appid‘ ]; $appsecret = $setting [ ‘weixin‘ ][ ‘appsecret‘ ]; if (emptyempty( $code )) $this ->showMessage( ‘授权失败‘ ); try { $token_url = ‘https://api.weixin.qq.com/sns/oauth2/access_token?appid=‘ . $appid . ‘&secret=‘ . $appsecret . ‘&code=‘ . $code . ‘&grant_type=authorization_code‘ $token = json_decode( $this ->https_request( $token_url )); } catch (Exception $e ) { print_r( $e ); } if (isset( $token ->errcode)) { echo ‘错误:‘ . $token ->errcode; echo ‘错误信息:‘ . $token ->errmsg; exit ; } $access_token_url = ‘https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=‘ . $appid . ‘&grant_type=refresh_token&refresh_token=‘ . $token ->refresh_token; //转成对象 $access_token = json_decode( $this ->https_request( $access_token_url )); if (isset( $access_token ->errcode)) { echo ‘错误:‘ . $access_token ->errcode; echo ‘错误信息:‘ . $access_token ->errmsg; exit ; } $user_info_url = ‘https://api.weixin.qq.com/sns/userinfo?access_token=‘ . $access_token ->access_token. ‘&openid=‘ . $access_token ->openid. ‘&lang=zh_CN‘ //转成对象 $user_info = json_decode( $this ->https_request( $user_info_url )); if (isset( $user_info ->errcode)) { echo ‘错误:‘ . $user_info ->errcode; echo ‘错误信息:‘ . $user_info ->errmsg; exit ; } //打印用户信息 // echo ‘‘ // print_r($user_info); // echo ‘‘ |
phpqrcode类库下载在此不提供各位可以百度搜索下载
magento微信扫码网站自动登录的例子
https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&lang=zh_CN
查看授权后接口调用(UnionID),不难发现填写回调地址,用户确认登陆pc端即可跳转
获取UnionID方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
public function wcallbackAction(){ $code = $_GET [ ‘code‘ ]; $state = $_GET [ ‘state‘ ]; $setting = include CONFIG_PATH . ‘setting.php‘ ; $appid = $setting [ ‘weixin‘ ][ ‘appid‘ ]; $appsecret = $setting [ ‘weixin‘ ][ ‘appsecret‘ ]; if (emptyempty( $code )) $this ->showMessage( ‘授权失败‘ ); try { $token_url = ‘https://api.weixin.qq.com/sns/oauth2/access_token?appid=‘ . $appid . ‘&secret=‘ . $appsecret . ‘&code=‘ . $code . ‘&grant_type=authorization_code‘ ; $token = json_decode( $this ->https_request( $token_url )); } catch (Exception $e ) { print_r( $e ); } if (isset( $token ->errcode)) { echo ‘<h1>错误:</h1>‘ . $token ->errcode; echo ‘<br/><h2>错误信息:</h2>‘ . $token ->errmsg; exit ; } $access_token_url = ‘https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=‘ . $appid . ‘&grant_type=refresh_token&refresh_token=‘ . $token ->refresh_token; //转成对象 $access_token = json_decode( $this ->https_request( $access_token_url )); if (isset( $access_token ->errcode)) { echo ‘<h1>错误:</h1>‘ . $access_token ->errcode; echo ‘<br/><h2>错误信息:</h2>‘ . $access_token ->errmsg; exit ; } $user_info_url = ‘https://api.weixin.qq.com/sns/userinfo?access_token=‘ . $access_token ->access_token. ‘&openid=‘ . $access_token ->openid. ‘&lang=zh_CN‘ ; //转成对象 $user_info = json_decode( $this ->https_request( $user_info_url )); if (isset( $user_info ->errcode)) { echo ‘<h1>错误:</h1>‘ . $user_info ->errcode; echo ‘<br/><h2>错误信息:</h2>‘ . $user_info ->errmsg; exit ; } //打印用户信息 // echo ‘<pre>‘; // print_r($user_info); // echo ‘</pre>‘; //获取unionid $uid = $user_info ->unionid; } //用户操作处理 分为再次登录和第一次登陆 $sql = "select h_user_id from dtb_user_binded as t1 left join dtb_user_weixin as t2 on t1.u_id=t2.id where t1.u_type=‘" . User:: $arrUtype [ ‘weixin_num_t‘ ]. "‘ and t2.openid=‘$user_info->unionid‘" ; $h_user_id = Core_Db::getOne( $sql ); if (!emptyempty( $h_user_id )){ //该weixin号再次登录 }{ //该weixin号第一次登录 } |
以上是关于现在我有一个微信接口,要用PHP写一个方法给特定用户推送消息,该怎样实现?的主要内容,如果未能解决你的问题,请参考以下文章
微信小程序,后端用php写完接口,怎么把数据给前端,要带啥参数
php微信开发,可以写一个后台管理系统,然后发消息给关注自己的用户吗?还是说只能在微信上操作才能发