基于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的开合式多级菜单程序
Oct 09 PHP
一步一步学习PHP(6) 面向对象
Feb 16 PHP
PHP array_multisort()函数的使用札记
Jul 03 PHP
使用PHP把HTML生成PDF文件的几个开源项目介绍
Nov 17 PHP
thinkPHP实现瀑布流的方法
Nov 29 PHP
CI框架给视图添加动态数据
Dec 01 PHP
smarty模板引擎之内建函数用法
Mar 30 PHP
PHP单例模式定义与使用实例详解
Feb 06 PHP
PHP框架Laravel中使用UUID实现数据分表操作示例
May 30 PHP
php 使用expat方式解析xml文件操作示例
Nov 26 PHP
详解phpstorm2020最新破解方法
Sep 17 PHP
PHP7变量处理机制修改
Mar 09 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
收音机怀古---春雷3P7图片欣赏
2021/03/02 无线电
php利用cookie实现自动登录的方法
2014/12/10 PHP
PHP 5.3和PHP 5.4出现FastCGI Error解决方法
2015/02/12 PHP
为百度UE编辑器上传图片添加水印功能
2015/04/16 PHP
Apache连接PHP后无法启动问题解决思路
2015/06/18 PHP
php实现编辑和保存文件的方法
2015/07/20 PHP
PHP中file_put_contents追加和换行的实现方法
2017/04/01 PHP
php封装的mongodb操作类代码
2017/08/06 PHP
Javascript new Date().valueOf()的作用与时间戳由来详解
2013/04/24 Javascript
js动态修改input输入框的type属性(实现方法解析)
2013/11/13 Javascript
Vue非父子组件通信详解
2017/06/12 Javascript
11行JS代码制作二维码生成功能
2018/03/09 Javascript
详解Ubuntu安装angular-cli遇到的坑
2018/09/08 Javascript
vue-router beforeEach跳转路由验证用户登录状态
2018/12/26 Javascript
linux 下以二进制的方式安装 nodejs
2020/02/12 NodeJs
es6数组includes()用法实例分析
2020/04/18 Javascript
Python新手们容易犯的几个错误总结
2017/04/01 Python
使用Python实现简单的服务器功能
2017/08/25 Python
python flask中静态文件的管理方法
2018/03/20 Python
Python3对称加密算法AES、DES3实例详解
2018/12/06 Python
使用python获取(宜宾市地震信息)地震信息
2019/06/20 Python
python飞机大战pygame游戏框架搭建操作详解
2019/12/17 Python
Python count函数使用方法实例解析
2020/03/23 Python
Python字典fromkeys()方法使用代码实例
2020/07/20 Python
Python 在函数上添加包装器
2020/07/28 Python
在django中查询获取数据,get, filter,all(),values()操作
2020/08/09 Python
Python接口自动化系列之unittest结合ddt的使用教程详解
2021/02/23 Python
Web前端绘制0.5像素的几种方法
2017/08/11 HTML / CSS
高清安全摄像头系统:Lorex Technology
2018/07/20 全球购物
2015年教师新年寄语
2014/12/08 职场文书
公司介绍信范文
2015/01/31 职场文书
2015个人简历自我评价语
2015/03/11 职场文书
2015年世界艾滋病日活动总结
2015/03/24 职场文书
2016年大学生寒假社会实践心得体会
2015/10/09 职场文书
餐饮行业关注的9大营销策略
2019/08/26 职场文书
在vue中import()语法不能传入变量的问题及解决
2022/04/01 Vue.js