php 微信开发 自动回复,laravel 微信开发-自动回复

laravel 微信开发-自动回复

1.微信公众号的逻辑,用户关注了你的微信公众号后,假设用户发送了一条消息给你的公众号,实际上是先发送到腾讯的服务器上,腾讯把内容转成特定的xml格式,再转发到你指定的服务端(如:/var/www/html/weixin/weixin.php或者自定义API地址)。你的服务端接收并解析这个xml,根据用户发来信息的内容进行逻辑处理,最后返回一个特定的xml格式内容给腾讯服务器,腾讯再转发给用户,如下图:

c90f80c3ecc5632f7a444d782ab38aa0.png

2. 首先申请微信公众号,进行配置,前期可以用微信的测试公众号进行开发(提供了很多个人订阅号没有的接口权限,如:群发,菜单权限等),然后设置好接口配置信息和JS接口安全域名,如下图:

62e937f2389159780d0dee5e7ee09301.png

3c63978e49833255e1fd4e437ca243a8.png

3. 我是用laravel框架进行开发的,目前找了easyWechat的微信开发的包,十分好用,作者很nice,文档也通俗易懂,具体文档查看https://easywechat.org/。

引用包之后,直接使用契约,这里以自动回复作为例子进行使用,

核心代码如下:<?php

/**

* 微信模块

*/

namespace App\Http\Controllers\Wechat;

use EasyWeChat\Foundation\Application;

use App\Http\Controllers\Controller;

use EasyWeChat\Message\Image;

use EasyWeChat\Message\Text;

use EasyWeChat\Message\Video;

use EasyWeChat\Message\Voice;

use Request;

class Wechat extends Controller

{

/**

* 微信入口

*/

public function index()

{

//微信参数,更多参数具体查看文档

$options =[

/**

* 是否开启调试

*/

'debug'  => true,

/**

* 账号基本信息,请从微信公众平台/开放平台获取

*/

'app_id'  => 'wxappid', // AppID

'secret'  => 'appsecret',// AppSecret

'token'   => 'yourtoken', // Token

'aes_key' => ''//密文

];

$app = new Application($options);

//用户实例,可以通过类似$user->nickname这样的方法拿到用户昵称,openid等等

$user = $app->user;

// 从项目实例中得到服务端应用实例。

$server = $app->server;

$server->setMessageHandler(function ($message)use($user) {

switch ($message->MsgType) {

case 'event':

switch ($message->Event) {

case 'subscribe':

// code...

return new Text(['content' => '欢迎关注']);

break;

default:

return new Text(['content' => '收到文字消息']);

break;

}

break;

//文本

case 'text':

$content = $message->Content;

return new Text(['content' => $content]);

break;

//图片

case 'p_w_picpath':

$mediaId  = $message->MediaId;

return new Image(['media_id' => $mediaId]);

break;

//语音

case 'voice':

$mediaId  = $message->MediaId;

return new Voice(['media_id' => $mediaId]);

break;

//视频

case 'video':

$mediaId  = $message->MediaId;

return new Video(['media_id' => $mediaId]);

break;

//地理位置

case 'location':

return  new Text(['content' => $message->Label]);

break;

//超链接

case 'link':

return new Text(['content' => $message->Description]);

break;

// ... 其它消息

default:

return new Text(['content' => '其他消息']);

break;

}

});

$response = $server->serve();

return $response;

}

效果如下:

62af9b4f624eef3cba15a25ca587a424.png

注意:这里一定要用Route::any,因为微信服务端认证的时候是GET,接收用户消息时是POST!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值