基于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 相关文章推荐
不用数据库的多用户文件自由上传投票系统(1)
Oct 09 PHP
关于php curl获取301或302转向的网址问题的解决方法
Jun 02 PHP
PHP与MongoDB简介|安全|M+PHP应用实例详解
Jun 17 PHP
php判断ip黑名单程序代码实例
Feb 24 PHP
PHP原生函数一定好吗?
Dec 08 PHP
windows下配置php5.5开发环境及开发扩展
Dec 25 PHP
php类自动装载、链式操作、魔术方法实现代码
Jul 23 PHP
PHP实现双链表删除与插入节点的方法示例
Nov 11 PHP
PHP的PDO大对象(LOBs)
Jan 27 PHP
PHP addcslashes()函数讲解
Feb 03 PHP
Laravel5.5 动态切换多语言的操作方式
Oct 25 PHP
浅谈Laravel中使用Slack进行异常通知
May 29 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
CMS中PHP判断系统是否已经安装的方法示例
2014/07/26 PHP
php中隐形字符65279(utf-8的BOM头)问题
2014/08/16 PHP
PHP文件上传问题汇总(文件大小检测、大文件上传处理)
2015/12/24 PHP
ajax+php实现无刷新验证手机号的实例
2017/12/22 PHP
Yii2框架实现登陆添加验证码功能示例
2018/07/12 PHP
jquery 实现的全选和反选
2009/04/15 Javascript
javascript 内存回收机制理解
2011/01/17 Javascript
js模拟select下拉菜单控件的代码
2013/05/08 Javascript
javascript 通用loading动画效果实例代码
2014/01/14 Javascript
JavaScript判断变量是否为空的自定义函数分享
2015/01/31 Javascript
理解javascript中的MVC模式
2016/01/28 Javascript
js获取iframe中的window对象的实现方法
2016/05/20 Javascript
Bootstrap编写一个同时适用于PC、平板、手机的登陆页面
2016/06/30 Javascript
JavaScript兼容浏览器FF/IE技巧
2016/08/14 Javascript
JS命令模式例子之菜单程序
2016/10/10 Javascript
js正则表达式验证密码强度【推荐】
2017/03/03 Javascript
js学习总结之DOM2兼容处理this问题的解决方法
2017/07/27 Javascript
react-navigation 如何判断用户是否登录跳转到登录页的方法
2017/12/01 Javascript
vue将单页面改造成多页面应用的方法
2018/11/25 Javascript
Python单体模式的几种常见实现方法详解
2017/07/28 Python
使用Python AIML搭建聊天机器人的方法示例
2018/07/09 Python
python使用Qt界面以及逻辑实现方法
2019/07/10 Python
对python中基于tcp协议的通信(数据传输)实例讲解
2019/07/22 Python
PyQt5实现简单的计算器
2020/05/30 Python
python在linux环境下安装skimage的示例代码
2020/10/14 Python
使用javascript和HTML5 Canvas画的四渐变色播放按钮效果
2014/04/10 HTML / CSS
怎样建立和理解非常复杂的声明?例如定义一个包含N 个指向返回 指向字符的指针的函数的指针的数组?
2013/03/19 面试题
教你打造完美的创业计划书
2014/01/06 职场文书
红领巾广播站广播稿
2014/02/01 职场文书
一名老师的自我评价
2014/02/07 职场文书
《泉水》教学反思
2014/04/11 职场文书
2015年爱牙日活动总结
2015/02/05 职场文书
党风廉政建设个人总结
2015/03/06 职场文书
勤俭节约倡议书范文
2015/04/29 职场文书
《赵州桥》教学反思
2016/02/17 职场文书
详解nodejs内置模块
2021/05/06 NodeJs