基于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 相关文章推荐
PHPWind 发帖回帖Api PHP版打包下载
Feb 08 PHP
php FLEA中二叉树数组的遍历输出
Sep 26 PHP
如何用php生成扭曲及旋转的验证码图片
Jun 07 PHP
destoon官方标签大全
Jun 20 PHP
php上传图片之时间戳命名(保存路径)
Aug 15 PHP
PHP中使用sleep造成mysql读取失败的案例和解决方法
Aug 21 PHP
getimagesize获取图片尺寸实例
Nov 15 PHP
PHP统计目录大小的自定义函数分享
Nov 18 PHP
PHP编程中的__clone()方法使用详解
Nov 27 PHP
PHP设计模式之简单投诉页面实例
Feb 24 PHP
PHP反射学习入门示例
Jun 14 PHP
thinkphp5.1框架实现格式化mysql时间戳为日期的方式小结
Oct 10 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中的正则表达式
2014/08/17 PHP
PHP汉字转换拼音的函数代码
2015/12/30 PHP
php文件上传及下载附带显示文件及目录功能
2017/04/27 PHP
PHP使用redis消息队列发布微博的方法示例
2017/06/22 PHP
imagettftext() 失效,不起作用
2021/03/09 PHP
js树形控件脚本代码
2008/07/24 Javascript
IE6下js通过css隐藏select的一个bug
2010/08/16 Javascript
js 关键词高亮(根据ID/tag高亮关键字)案例介绍
2013/01/21 Javascript
JavaScript instanceof 的使用方法示例介绍
2013/10/23 Javascript
深入解析JavaScript中的变量作用域
2013/12/06 Javascript
jquery、js操作checkbox全选反选
2014/03/12 Javascript
bootstrap学习笔记之初识bootstrap
2016/06/21 Javascript
JS实现微信弹出搜索框 多条件查询功能
2016/12/13 Javascript
判断div滑动到底部的scroll实例代码
2017/11/15 Javascript
Vue中使用vee-validate表单验证的方法
2018/05/09 Javascript
JavaScript实现省市区三级联动
2020/02/13 Javascript
vue中echarts的用法及与elementui-select的协同绑定操作
2020/11/17 Vue.js
[03:01]2014DOTA2国际邀请赛 DC:我是核弹粉,为Burning和国土祝福
2014/07/13 DOTA
浅谈Python2、Python3相对路径、绝对路径导入方法
2018/06/22 Python
Tensorflow的梯度异步更新示例
2020/01/23 Python
pytorch masked_fill报错的解决
2020/02/18 Python
Jupyter安装链接aconda实现过程图解
2020/11/02 Python
Pandas中DataFrame交换列顺序的方法实现
2020/12/14 Python
html5实现多图片预览上传及点击可拖拽控件
2018/03/15 HTML / CSS
全球高级音频和视频专家:HiDef Lifestyle
2019/08/02 全球购物
预备党员转正思想汇报
2014/01/12 职场文书
护士自我鉴定怎么写
2014/02/07 职场文书
《金钱的魔力》教学反思
2014/02/24 职场文书
2014年党员公开承诺践诺书
2014/03/25 职场文书
乡镇个人对照检查材料
2014/08/22 职场文书
感恩老师演讲稿400字
2014/08/28 职场文书
2014迎接教师节演讲稿
2014/09/10 职场文书
淮阳太昊陵导游词
2015/02/10 职场文书
学雷锋活动简报
2015/07/20 职场文书
运动会加油稿30字
2015/07/21 职场文书
Hive日期格式转换方法总结
2022/06/25 数据库