基于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 相关文章推荐
php数组中删除元素的实现代码
Jun 22 PHP
Mysql中分页查询的两个解决方法比较
May 02 PHP
解析crontab php自动运行的方法
Jun 24 PHP
php中获取主机名、协议及IP地址的方法
Nov 18 PHP
php查询mysql数据库并将结果保存到数组的方法
Mar 18 PHP
PHP 反射(Reflection)使用实例
May 12 PHP
php基于dom实现读取图书xml格式数据的方法
Feb 03 PHP
PHP关键特性之命名空间实例详解
May 06 PHP
基于Laravel5.4实现多字段登录功能方法示例
Aug 11 PHP
laravel config文件配置全局变量的例子
Oct 13 PHP
php多进程并发编程防止出现僵尸进程的方法分析
Feb 28 PHP
Laravel配合jwt使用的方法实例
Oct 25 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 函数call_user_func和call_user_func_array用法详解
2014/03/02 PHP
PHPUnit安装及使用示例
2014/10/29 PHP
PHP实现微信网页授权开发教程
2016/01/19 PHP
一键生成各种尺寸Icon的php脚本(实例)
2017/02/08 PHP
php中Redis的应用--消息传递
2017/03/28 PHP
PHP实现查询手机归属地的方法详解
2017/04/28 PHP
PHP实现长轮询消息实时推送功能代码实例讲解
2021/02/26 PHP
Extjs4.0设置Ext.data.Store传参的请求方式(默认为GET)
2013/04/02 Javascript
解决javascript:window.close()在chrome,Firefox下失效的问题
2013/05/07 Javascript
基于pthread_create,readlink,getpid等函数的学习与总结
2013/07/17 Javascript
onkeyup,onkeydown和onkeypress的区别介绍
2013/10/21 Javascript
一个支付页面DEMO附截图
2014/07/22 Javascript
node中socket.io的事件使用详解
2014/12/15 Javascript
Bootstrap响应式侧边栏改进版
2016/09/17 Javascript
纯javascript版日历控件
2016/11/24 Javascript
Linux系统中利用node.js提取Word(doc/docx)及PDF文本的内容
2017/06/17 Javascript
基于jquery实现左右上下移动效果
2018/05/02 jQuery
AngularJS中ng-options实现下拉列表的数据绑定方法
2018/08/13 Javascript
ExtJs使用自定义插件动态保存表头配置(隐藏或显示)
2018/09/25 Javascript
深入分析element ScrollBar滚动组件源码
2019/01/22 Javascript
[07:55]2014DOTA2 TI正赛第三日 VG上演推进荣耀DKEG告别
2014/07/21 DOTA
利用打码兔和超人打码自封装的打码类分享
2014/03/16 Python
在Python中用keys()方法返回字典键的教程
2015/05/21 Python
python 绘制正态曲线的示例
2020/09/24 Python
PyCharm 2020.2.2 x64 下载并安装的详细教程
2020/10/15 Python
matplotlib常见函数之plt.rcParams、matshow的使用(坐标轴设置)
2021/01/05 Python
如何用css3实现switch组件开关的方法
2018/02/09 HTML / CSS
台湾百利市购物中心:e-Payless
2017/08/16 全球购物
Michael Kors英国官网:美国奢侈品品牌
2019/11/13 全球购物
Steiff台湾官网:德国金耳釦泰迪熊
2019/12/26 全球购物
采购员岗位职责
2013/11/15 职场文书
工作批评与自我批评范文
2014/10/16 职场文书
党的群众路线教育实践活动整改方案
2014/10/28 职场文书
2014年质量工作总结
2014/11/22 职场文书
2015年社区创卫工作总结
2015/04/21 职场文书
JS class语法糖的深入剖析
2022/07/07 Javascript