基于PHP实现微信小程序客服消息功能


Posted in PHP onAugust 12, 2019

项目说明:

本项目是一个简单微信小程序客服消息类,实现客服消息相关功能。官方给的php示例有误,这里就不再吐槽了。

本示例是采用开发者服务器,没有采用云调用的形式。

官方文档:

客服消息指南

客服消息服务端

适用场景

基于PHP实现微信小程序客服消息功能

客户消息流程图

基于PHP实现微信小程序客服消息功能

使用步骤

1、开启客服消息

https://mp.weixin.qq.com/wxam...

登录-开发-开发设置-消息推送

[]( https://raw.githubusercontent...

点击“启动”

[]( https://raw.githubusercontent...

URL(服务器地址):填开发者服务器对应的url,如 https://xxxxxx/demo.php

Token(令牌):这个随便填,要求3-32位。

EncodingAESKey(消息加密密钥):这个点击“随机生成”即可。

消息加密方式:可以根据自己需要选择,本例选择”兼容模式“。

数据格式:json相对于xml来说,从压缩效率及传输效率更具优势,这里我们选json。

注意:以上操作完后先不要提交,等配置好开发者服务端后再提交。

2、配置开发者服务端

检验signature的PHP示例代码:

$signature = $_GET["signature"];
 $timestamp = $_GET["timestamp"];
 $nonce = $_GET["nonce"];
 $echostr=$_GET["echostr"];

 $token = TOKEN;//这里改成你第一步操作时填写的token
 $tmpArr = array($token, $timestamp, $nonce);
 sort($tmpArr, SORT_STRING);
 $tmpStr = implode( $tmpArr );
 $tmpStr = sha1( $tmpStr );

 if ($tmpStr == $signature ) {
 return $echostr;
 } else {
 return false;
 }

官方示例没有返回 $echostr ,这个检验开发者服务端是否成功的关键,必须返回。

3、提交消息推送配置

如果没有报错,证明配置成功。

基于PHP实现微信小程序客服消息功能

4、开发者服务端demo

<?php
//验证signature
//$signature = $_GET["signature"];
//$timestamp = $_GET["timestamp"];
//$nonce = $_GET["nonce"];
//$echostr=$_GET["echostr"];
//
//$token = TOKEN;//这里改成你第一步操作时填写的token
//$tmpArr = array($token, $timestamp, $nonce);
//sort($tmpArr, SORT_STRING);
//$tmpStr = implode( $tmpArr );
//$tmpStr = sha1( $tmpStr );
//
//if ($tmpStr == $signature ) {
// return $echostr;
//} else {
// return false;
//}
include_once './Xcxmsg.php';
$xcxmsg = new Xcxmsg();
$postStr = file_get_contents('php://input');
if (!$postStr)
 return false;
$postArr = json_decode($postStr, true);
if (!isset($postArr['MsgType']) || !isset($postArr['FromUserName']))
 return false;
$data = ["touser" => $postArr['FromUserName']];
$accessToken = $xcxmsg->getAccessToken();
$url = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=" . $accessToken;
switch ($postArr['MsgType']) {
 case "text":
 //如用户发送的是文字信息,这里处理
 //回复图文链接,也可以回复别的类型,根据需要
 $data['msgtype'] = "link";
 $data['link'] = [
  "title" => "hello",
  "description" => "Is Really A Happy Day",
  "url" => "LINK_URL",//连接url
  "thumb_url" =>"THUMB_URL" //图片url
 ];
 $json = json_encode($data, JSON_UNESCAPED_UNICODE);
 $xcxmsg->curl($json, $url);
 break;
 case "image": //如用户发送图片消息,进入这里
 //服务端回复 图片,也可以回复别的类型,根据需要
 $data['msgtype'] = "image";
 $data['image'] = ['media_id' => 'media_id值']; // 执行 $xcxmsg->upload($accessToken)返回的 media_id
 $json = json_encode($data, JSON_UNESCAPED_UNICODE);
 $xcxmsg->curl($json, $url);
 case "miniprogrampage":
 //如用户发送小程序卡片,进入这里
 //这里服务端回复小卡片,也可以回复别的类型,根据需要
 $data['msgtype'] = "miniprogrampage";
 $data['miniprogrampage'] = [
  "title" => "title",
  "pagepath" => "pages/index/index",
  "thumb_media_id" => "media_id值"];// 执行 $xcxmsg->upload($accessToken)返回的 media_id
 $json = json_encode($data, JSON_UNESCAPED_UNICODE);
 $xcxmsg->curl($json, $url);
 break;
 case "event":
 //如用户进入会话事件
 //这里可以回复文本
 $data['msgtype'] = "text";
 $data['text'] = [
  "content" => "Hello World",
  ];
 $json = json_encode($data, JSON_UNESCAPED_UNICODE);
 $xcxmsg->curl($json, $url);
 break;
 default:
}

5、小程序前端

在需要的地方添加以下代码:

<button open-type="contact" >客服消息</button>

用微信开发工具的预览,生成二维码,扫描测试是否成功。

项目地址: https://github.com/guyan0319/...

总结

以上所述是小编给大家介绍的基于PHP实现微信小程序客服消息功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

PHP 相关文章推荐
使用TinyButStrong模板引擎来做WEB开发
Mar 16 PHP
php设计模式 Singleton(单例模式)
Jun 26 PHP
PHP实现微信发红包程序
Aug 24 PHP
Yii基于数组和对象的Model查询技巧实例详解
Dec 28 PHP
Laravel使用Caching缓存数据减轻数据库查询压力的方法
Mar 15 PHP
Yii2组件之多图上传插件FileInput的详细使用教程
Jun 20 PHP
thinkphp的dump函数无输出实例代码
Nov 15 PHP
php传值方式和ajax的验证功能
Mar 27 PHP
ThinkPHP 模板引擎使用详解
May 07 PHP
使用YII2框架实现微信公众号中表单提交功能
Sep 04 PHP
laravel实现前后台路由分离的方法
Oct 13 PHP
laravel中的fillable和guarded属性详解
Oct 23 PHP
php swoole多进程/多线程用法示例【基于php7nts版】
Aug 12 #PHP
PHP基于swoole多进程操作示例
Aug 12 #PHP
PHP swoole和redis异步任务实现方法分析
Aug 12 #PHP
php使用pecl方式安装扩展操作示例
Aug 12 #PHP
PHP实现与java 通信的插件使用教程
Aug 11 #PHP
PHP利用DWZ.CN服务生成短网址
Aug 11 #PHP
thinkPHP和onethink微信支付插件分享
Aug 11 #PHP
You might like
用PHP实现小型站点广告管理
2006/10/09 PHP
PHP实现QQ快速登录的方法
2016/09/28 PHP
JavaScript 编程引入命名空间的方法
2007/06/29 Javascript
浅析JavaScript中的隐式类型转换
2013/12/05 Javascript
利用js正则表达式验证手机号,email地址,邮政编码
2014/01/23 Javascript
js触发select onchange事件的小技巧
2014/08/05 Javascript
用原生JS获取CLASS对象(很简单实用)
2014/10/15 Javascript
分享20个提升网站界面体验的jQuery插件
2014/12/15 Javascript
jQuery on()方法使用技巧详解
2015/04/16 Javascript
JavaScript中数据结构与算法(二):队列
2015/06/19 Javascript
jquery.fastLiveFilter.js实现输入自动过滤的方法
2015/08/11 Javascript
第三篇Bootstrap网格基础
2016/06/21 Javascript
js中获取 table节点各tr及td的内容简单实例
2016/10/14 Javascript
jQuery实现ajax无刷新分页页码控件
2017/02/28 Javascript
JavaScript严格模式下关于this的几种指向详解
2017/07/12 Javascript
javascript函数的节流[throttle]与防抖[debounce]
2017/11/15 Javascript
JS实现的JSON数组去重算法示例
2018/04/11 Javascript
React路由管理之React Router总结
2018/05/10 Javascript
详解NodeJs开发微信公众号
2018/05/25 NodeJs
微信小程序的授权实现过程解析
2019/08/02 Javascript
c++生成dll使用python调用dll的方法
2014/01/20 Python
Python中的默认参数实例分析
2018/01/29 Python
Jupyter安装nbextensions,启动提示没有nbextensions库
2020/04/23 Python
Python+pandas计算数据相关系数的实例
2018/07/03 Python
Python 从列表中取值和取索引的方法
2018/12/25 Python
利用django+wechat-python-sdk 创建微信服务器接入的方法
2019/02/20 Python
flask应用部署到服务器的方法
2019/07/12 Python
详解pandas中MultiIndex和对象实际索引不一致问题
2019/07/23 Python
Python实现搜索算法的实例代码
2020/01/02 Python
Python 多进程原理及实现
2020/12/21 Python
现金会计岗位职责
2013/12/05 职场文书
幼儿园元旦活动感言
2014/03/02 职场文书
教师群众路线教育实践活动个人对照检查材料
2014/11/04 职场文书
幼儿教师小班个人总结
2015/02/05 职场文书
辞职信的写法
2015/02/27 职场文书
用React Native制作一个简单的游戏引擎
2021/05/27 Javascript