基于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 相关文章推荐
oracle资料库函式库
Oct 09 PHP
thinkphp实现面包屑导航(当前位置)例子分享
May 10 PHP
解析PHP强制转换类型及远程管理插件的安全隐患
Jun 30 PHP
PHP实现的英文名字全拼随机排号脚本
Jul 04 PHP
PHP json_encode() 函数详解及中文乱码问题
Nov 05 PHP
PHP的Yii框架中YiiBase入口类的扩展写法示例
Mar 17 PHP
配置Nginx+PHP的正确思路与过程
May 10 PHP
PHP XML和数组互相转换详解
Oct 26 PHP
php批量删除操作(数据访问)
May 23 PHP
PHP 7.0新增加的特性介绍
Jun 08 PHP
PHP面向对象程序设计之对象的遍历操作示例
Jun 12 PHP
PHP反射基础知识回顾
Sep 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+DBM的同学录程序(2)
2006/10/09 PHP
图片存储与浏览一例(Linux+Apache+PHP+MySQL)
2006/10/09 PHP
php正则过滤html标签、空格、换行符的代码(附说明)
2010/10/25 PHP
php daddslashes()和 saddslashes()有哪些区别分析
2012/10/26 PHP
Windows7下的php环境配置教程
2015/02/28 PHP
php获取字符串前几位的实例(substr返回字符串的子串用法)
2017/03/08 PHP
php 中phar包的使用教程详解
2018/10/26 PHP
javascript 选择文件夹对话框(web)
2009/07/07 Javascript
jquery 新浪网易的评论块制作
2010/07/01 Javascript
Jquery实现地铁线路指示灯提示牌效果的方法
2015/03/02 Javascript
基于BootStrap环境写jQuery tabs插件
2016/07/12 Javascript
微信小程序 基础组件与导航组件详细介绍
2017/02/21 Javascript
jQuery图片瀑布流的简单实现代码
2017/03/15 Javascript
JS模拟实现哈希表及应用详解
2018/05/04 Javascript
js比较两个单独的数组或对象是否相等的实例代码
2019/04/28 Javascript
JS去除字符串最后的逗号实例分析【四种方法】
2019/06/20 Javascript
20个必会的JavaScript面试题(小结)
2019/07/02 Javascript
解决vue-cli输入命令vue ui没效果的问题
2020/11/17 Javascript
Python学习笔记之os模块使用总结
2014/11/03 Python
python有证书的加密解密实现方法
2014/11/19 Python
在Python程序中操作文件之isatty()方法的使用教程
2015/05/24 Python
CentOS中升级Python版本的方法详解
2017/07/10 Python
Python使用sorted排序的方法小结
2017/07/28 Python
Python爬虫之网页图片抓取的方法
2018/07/16 Python
python字符串查找函数的用法详解
2019/07/08 Python
详解html5页面 rem 布局适配方法
2018/01/12 HTML / CSS
美国在线面料商店:Fashion Fabrics Club
2020/01/31 全球购物
俄罗斯首家面向中国消费者的一站式购物网站:Wruru
2020/05/08 全球购物
保护环境建议书
2014/03/12 职场文书
中班幼儿评语大全
2014/04/30 职场文书
中国汉字听写大会观后感
2015/06/02 职场文书
班组长如何制订适合本班组的工作计划?
2019/07/10 职场文书
使用springboot暴露oracle数据接口的问题
2021/05/07 Oracle
排查并解决MySQL生产库内存使用率高的报警
2022/04/11 MySQL
Elasticsearch 索引操作和增删改查
2022/04/19 Python
CentOS7 minimal 最小化安装网络设置过程
2022/12/24 Servers