2019-05-22 15:13:55 kkkkk0826 阅读数 401
  • 微信公众平台深度开发v2.0第6季——微信WEB开发、手机...

    “微信公众平台深度开发Java版 v2.0”系列课程共有6季,使用JAVA语言,系统讲解微信公众平台订阅号、服务号官方列出的全部功能接口,包括:自定义菜单、个性化菜单(按需定制菜单)、群发消息、客服消息(有限次消息推送)、模板消息接(无限次消息推送)、微信网页开发(微信WEB开发、微信游戏)、微信JSSDK开发、用户管理、获取用户基本信息、网页授权获取用户基本信息(通过WEB得到用户信息)、二维码(临时二维码、永久二维码)、事件推送、接收普通消息、被动回复用户消息,等知识点。 以及,针对微信公众号开发的服务端架构设计方案。课程以微信公众号开发视角,讲解JAVA开发微信公众号所需的框架、第三方工具。 购买套餐还赠送经典微信开发课程——[微信公众号_独立知识点]环境搭建。该课程针对各种复杂的网络环境,讲解如何构建开发环境,已解决“没有服务器”、“没有固定IP”等开发者遇到的窘境。 课程采用独立知识点讲解,一个知识点,一组课程,真正做到“简单、高效、”以短的时间、实现的学习。更多课程信息请访问CSDN。网址:http://edu.csdn.net/lecturer/631 “微信公众平台企业号开发Java版”陆续上线。 详情 qq2326321088

    12237 人正在学习 去看看 翟东平

微信开发接口API协议,出自冬天不穿秋裤,天冷也要风度的程序猿之手,必属精品!

一、网络通讯协议

如上图,采用 datalength+databytes 的自定义长度的协议,其中:

datalength:紧跟其后的databytes的数据长度(不包含自身长度),占4字节

databytes:protobuf 3.0协议数据序列化后的数据内容,长度不限

二、网络应答模型

1、业务消息

服务端客户端间的消息大致分为以下四类:

1)通知类消息

通常由客户端发往服务器端,或者由服务器端发往客服客户端,接收方一般需要作出接收确认回复或不回复(默认成功异常时回复)。

2)客户端同步请求类消息

通常由手机客户端或客服客户端发出,服务端需要回复对应的响应消息。

3)服务器端指令类消息

通常是由服务器或者客服客户端发出的操作手机客户端的指令类消息,手机客户端收到后一般需要回复接收成功确认消息,并在后续执行完指令后回复发送结果通知消息。

客户端在与服务器建立连接后,需要先发送DeviceAuthReq请求获取accesstoken后才能正常进行后续通信,建立连接时的通信时序图如下:

2、心跳机制

已于服务器建立连接的客户端需要每隔1分钟发送一个心跳包,时序图如下:

三、Protobuf消息定义

所有业务消息都转化为protobuf消息进行序列化后传输,不同命令对应的消息使用protobuf的Any类型嵌套入根消息,接收方在收到根消息后根据命令码反序列化为相应类型消息。

消息结构定义基本约定:

1)使用proto3语法

2)package 命名空间统一采用 Jubo.JuLiao.IM.Wx.Proto

3)消息命名采用 Pascal命名法,例如 FirstName,LastName

4)时间字段统一用Unix-Timestamp形式

5)message类型名全部为对应MsgType+Message后缀,如MsgType=DeviceAuthReq的消息的消息结构名定义为 message DeviceAuthReqMessage{}

根消息(TransportMessage)

根消息代表最终直接序列化为网络字节流的消息,其中应包含基本的发送方信息(用于授权认证)和其包含的具体的业务命令消息及命令码标识。

所有的其他类型的消息都应该赋值到根消息的Content字段,并将MsgType字段设为对应值,之后将TransportMessage数据序列化做网络传输。接收方在收到消息后根据MsgType将Content内容反序列化成对应的强类型消息。

sdk功能模块请参考:http://www.yunlauncher.com/Blog/articles/119.html

1、基础消息类型

1、客户端发送的心跳包

HeartBeatReq = 1001;

2、消息接收确认回复(接收或拒绝接收)

MsgReceivedAck = 1002;

3、错误单独提升为一种消息类型

Error = 1003;

2、设备客户端授权类消息

1、设备(手机客户端、客服客户端)获取通信token请求

DeviceAuthReq = 1010;

2、设备(手机客户端、客服客户端)获取通信token响应

DeviceAuthRsp = 1011;

3、设备授权后退出(仅用于服务端内部)

DeviceExitNotice = 1012;

4、账号强制下线通知

AccountForceOfflineNotice = 1013;

3、手机客户端上传的通知类消息

1、手机客户端微信上线通知

WeChatOnlineNotice = 1020;

2、手机客户端微信下线通知

WeChatOfflineNotice = 1021;

3、微信个人号新增好友通知

FriendAddNotice = 1022;

4、微信个人号移除好友通知

FriendDelNotice = 1023;

5、微信好友发来聊天消息

FriendTalkNotice = 1024;

6、任务执行结果通知

TaskResultNotice = 1025;

7、手机上回复好友的聊天消息

WeChatTalkToFriendNotice = 1026;

8、有好友请求添加好友的通知

FriendAddReqeustNotice = 1027;

9、手机端向服务端通知聊天执行结果

TalkToFriendTaskResultNotice = 1028;

10、图片或视频消息的详细内容结果

RequestTalkDetailTaskResultNotice = 1029;

11、上传手机客户端上微信的二维码

PullWeChatQrCodeTaskResultNotice = 1030;

12、手机上发送了朋友圈通知

CircleNewPublishNotice = 1031;

13、手机上删除朋友圈通知

CircleDelNotice = 1032;

14、手机检测到有人点赞/取消点赞通知

CircleLikeNotice = 1033;

15、手机检测到有人评论/删除朋友圈通知

CircleCommentNotice = 1034;

16、消息标记为已读

PostMessageReadNotice = 1035;

17、联系人信息上传

ContactsInfoNotice = 1036;

18、群聊新增通知

ChatRoomAddNotice = 1037;

19、联系人标签新增,修改通知

ContactLabelAddNotice = 1038;

20、收钱任务执行结果通知

TakeMoneyTaskResultNotice = 1039;

21、朋友圈图片上传

CircleDetailNotice = 1040;

22、群聊删除通知

ChatRoomDelNotice = 1041;

23、群聊信息变更通知

ChatRoomChangedNotice = 1042;

24、群二维码

PullChatRoomQrCodeTaskResultNotice = 1043;

4、服务端、客服客户端发给设备的指令类消息

1、给好友发消息任务

TalkToFriendTask = 1070;

2、发送朋友圈任务

PostSNSNewsTask = 1071;

3、主动添加好友任务

AddFriendsTask = 1072;

4、发送朋友圈任务后数据回传

PostSNSNewsTaskResultNotice = 1073;

5、删除朋友圈

DeleteSNSNewsTask = 1074;

6、客户端或者服务端接受好友请求通知

AcceptFriendAddRequestTask = 1075;

7、群发消息任务

WeChatGroupSendTask = 1076;

8、执行养号动作命令

WeChatMaintenanceTask = 1077;

9、请求图片或视频消息的详细内容

RequestTalkDetailTask = 1078;

10、服务端主动要求手机上传当前登录的微信二维码

PullWeChatQrCodeTask = 1079;

11、触发手机推送好友列表任务

TriggerFriendPushTask = 1080;

12、触发手机推送朋友圈列表任务

TriggerCirclePushTask = 1081;

13、朋友圈评论删除任务

CircleCommentDeleteTask = 1082;

14、朋友圈评论删除任务反馈

CircleCommentDeleteTaskResultNotice = 1083;

15、朋友圈评论回复任务

CircleCommentReplyTask = 1084;

16、朋友圈评论回复反馈

CircleCommentReplyTaskResultNotice = 1085;

17、通知手机将某个聊天窗口置为已读

TriggerMessageReadTask = 1086;

18、消息撤回

RevokeMessageTask = 1087;

19、转发消息

ForwardMessageTask = 1088;

20、通知手机推送聊天记录

TriggerHistoryMsgPushTask = 1089;

21、获取群聊二维码

PullChatRoomQrCodeTask = 1090;

5、服务端通知执行的命令

1、服务端通知pc客户版本升级

UpgradeAppNotice = 1093;

2、通知手机客户端软件升级

UpgradeDeviceAppNotice = 1094;

3、清粉任务

PostFriendDetectTask = 1095;

4、终止清粉任务

PostStopFriendDetectTask = 1096;

5、删除设备通知

PostDeleteDeviceNotice = 1097;

6、朋友圈点赞任务

PostMomentsPraiseTask = 1098;

7、停止朋友圈点赞任务

PostStopMomentsPraiseTask = 1099;

8、养号任务停止

PostStopWeChatMaintenanceTask = 1100;

9、修改备注任务

ModifyFriendMemoTask = 1101;

10、领取红包或转账

TakeLuckyMoneyTask = 1200;

11、获取指定好友朋友圈

PullFriendCircleTask = 1201;

12、获取朋友圈图片

PullCircleDetailTask = 1202;

13、单条朋友圈点赞任务

CircleLikeTask = 1203;

14、触发手机推送群聊列表

TriggerChatroomPushTask = 1210;

15、请求具体群聊的详细信息

RequestChatRoomInfoTask = 1211;

16、获取联系人详细信息(不一定是好友,如群聊成员)

RequestContactsInfoTask = 1212;

17、群聊管理

ChatRoomActionTask = 1213;

18、群内加好友

AddFriendInChatRoomTask = 1214;

19、通讯录加好友

AddFriendFromPhonebookTask = 1215;

20、删除好友

DeleteFriendTask = 1216;

21、发红包

SendLuckyMoneyTask = 1217;

22、获取聊天消息的原始内容(主要是xml内容)

RequestTalkContentTask = 1218;

23、返回聊天消息的原始内容

RequestTalkContentTaskResultNotice = 1219;

24、转发消息内容

ForwardMessageByContentTask = 1220;

6、手机端主动发出的交互类消息

1、手机端推送好友列表

FriendPushNotice = 2026;

2、手机端推送当前安装版本

PostDeviceInfoNotice = 2027;

3、手机端回传检测清粉好友数

PostFriendDetectCountNotice = 2028;

4、手机回传朋友圈数据

CirclePushNotice = 2029;

5、手机回传朋友圈点赞数量

PostMomentsPraiseCountNotice = 2030;

9、手机端推送群聊列表

ChatroomPushNotice = 2031;

7、手机端推送标签列表

ContactLabelInfoNotice = 2032;

8、推送历史消息

HistoryMsgPushNotice = 2033;

9、群成员(陌生人)信息

ChatRoomMembersNotice = 2034;

sdk适用于微信营销软件研发、微信营销手机研发、微信手机群控云控系统研发、微信SCRM客服系统研发、微信营销工具研发、淘宝客机器人、导购返利机器人研发等,目前【聚客通】【有客来】等scrm都是基于这个sdk二次开发的。

接口参考http://www.yunlauncher.com/Blog/articles/119.html 项目地址:https://www.wuliaokankan.cn/url301/138.html
2019-05-22 15:28:14 u010405836 阅读数 468
  • 微信公众平台深度开发v2.0第6季——微信WEB开发、手机...

    “微信公众平台深度开发Java版 v2.0”系列课程共有6季,使用JAVA语言,系统讲解微信公众平台订阅号、服务号官方列出的全部功能接口,包括:自定义菜单、个性化菜单(按需定制菜单)、群发消息、客服消息(有限次消息推送)、模板消息接(无限次消息推送)、微信网页开发(微信WEB开发、微信游戏)、微信JSSDK开发、用户管理、获取用户基本信息、网页授权获取用户基本信息(通过WEB得到用户信息)、二维码(临时二维码、永久二维码)、事件推送、接收普通消息、被动回复用户消息,等知识点。 以及,针对微信公众号开发的服务端架构设计方案。课程以微信公众号开发视角,讲解JAVA开发微信公众号所需的框架、第三方工具。 购买套餐还赠送经典微信开发课程——[微信公众号_独立知识点]环境搭建。该课程针对各种复杂的网络环境,讲解如何构建开发环境,已解决“没有服务器”、“没有固定IP”等开发者遇到的窘境。 课程采用独立知识点讲解,一个知识点,一组课程,真正做到“简单、高效、”以短的时间、实现的学习。更多课程信息请访问CSDN。网址:http://edu.csdn.net/lecturer/631 “微信公众平台企业号开发Java版”陆续上线。 详情 qq2326321088

    12237 人正在学习 去看看 翟东平

微信开发sdk

微信开发sdk

服务端调用接口目录

1、基础消息类型
1、客户端发送的心跳包 HeartBeatReq = 1001;

2、消息接收确认回复(接收或拒绝接收) MsgReceivedAck = 1002;

3、错误单独提升为一种消息类型 Error = 1003;

2、设备客户端授权类消息

1、设备(手机客户端、客服客户端)获取通信token请求 DeviceAuthReq = 1010;

2、设备(手机客户端、客服客户端)获取通信token响应 DeviceAuthRsp = 1011;

3、设备授权后退出(仅用于服务端内部) DeviceExitNotice = 1012;

4、账号强制下线通知 AccountForceOfflineNotice = 1013;

3、手机客户端上传的通知类消息

1、手机客户端微信上线通知 WeChatOnlineNotice = 1020;

2、手机客户端微信下线通知 WeChatOfflineNotice = 1021;

3、微信个人号新增好友通知 FriendAddNotice = 1022;

4、微信个人号移除好友通知 FriendDelNotice = 1023;

5、微信好友发来聊天消息 FriendTalkNotice = 1024;

6、任务执行结果通知 TaskResultNotice = 1025;

7、手机上回复好友的聊天消息 WeChatTalkToFriendNotice = 1026;

8、有好友请求添加好友的通知 FriendAddReqeustNotice = 1027;

9、手机端向服务端通知聊天执行结果 TalkToFriendTaskResultNotice = 1028;

10、图片或视频消息的详细内容结果 RequestTalkDetailTaskResultNotice = 1029;

11、上传手机客户端上微信的二维码 PullWeChatQrCodeTaskResultNotice = 1030;

12、手机上发送了朋友圈通知 CircleNewPublishNotice = 1031;

13、手机上删除朋友圈通知 CircleDelNotice = 1032;

14、手机检测到有人点赞/取消点赞通知 CircleLikeNotice = 1033;

15、手机检测到有人评论/删除朋友圈通知 CircleCommentNotice = 1034;

16、消息标记为已读 PostMessageReadNotice = 1035;

17、联系人信息上传 ContactsInfoNotice = 1036;

18、群聊新增通知 ChatRoomAddNotice = 1037;

19、联系人标签新增,修改通知 ContactLabelAddNotice = 1038;

20、收钱任务执行结果通知 TakeMoneyTaskResultNotice = 1039;

21、朋友圈图片上传 CircleDetailNotice = 1040;

22、群聊删除通知 ChatRoomDelNotice = 1041;

23、群聊信息变更通知 ChatRoomChangedNotice = 1042;

24、群二维码 PullChatRoomQrCodeTaskResultNotice = 1043;

4、服务端、客服客户端发给设备的指令类消息

1、给好友发消息任务 TalkToFriendTask = 1070;

2、发送朋友圈任务 PostSNSNewsTask = 1071;

3、主动添加好友任务 AddFriendsTask = 1072;

4、发送朋友圈任务后数据回传 PostSNSNewsTaskResultNotice = 1073;

5、删除朋友圈 DeleteSNSNewsTask = 1074;

6、客户端或者服务端接受好友请求通知 AcceptFriendAddRequestTask = 1075;

7、群发消息任务 WeChatGroupSendTask = 1076;

8、执行养号动作命令 WeChatMaintenanceTask = 1077;

9、请求图片或视频消息的详细内容 RequestTalkDetailTask = 1078;

10、服务端主动要求手机上传当前登录的微信二维码 PullWeChatQrCodeTask = 1079;

11、触发手机推送好友列表任务 TriggerFriendPushTask = 1080;

12、触发手机推送朋友圈列表任务 TriggerCirclePushTask = 1081;

13、朋友圈评论删除任务 CircleCommentDeleteTask = 1082;

14、朋友圈评论删除任务反馈 CircleCommentDeleteTaskResultNotice = 1083;

15、朋友圈评论回复任务 CircleCommentReplyTask = 1084;

16、朋友圈评论回复反馈 CircleCommentReplyTaskResultNotice = 1085;

17、通知手机将某个聊天窗口置为已读 TriggerMessageReadTask = 1086;

18、消息撤回 RevokeMessageTask = 1087;

19、转发消息 ForwardMessageTask = 1088;

20、通知手机推送聊天记录 TriggerHistoryMsgPushTask = 1089;

21、获取群聊二维码 PullChatRoomQrCodeTask = 1090;

5、服务端通知执行的命令

1、服务端通知pc客户版本升级 UpgradeAppNotice = 1093;

2、通知手机客户端软件升级 UpgradeDeviceAppNotice = 1094;

3、清粉任务 PostFriendDetectTask = 1095;

4、终止清粉任务 PostStopFriendDetectTask = 1096;

5、删除设备通知 PostDeleteDeviceNotice = 1097;

6、朋友圈点赞任务 PostMomentsPraiseTask = 1098;

7、停止朋友圈点赞任务 PostStopMomentsPraiseTask = 1099;

8、养号任务停止 PostStopWeChatMaintenanceTask = 1100;

9、修改备注任务 ModifyFriendMemoTask = 1101;

10、领取红包或转账 TakeLuckyMoneyTask = 1200;

11、获取指定好友朋友圈 PullFriendCircleTask = 1201;

12、获取朋友圈图片 PullCircleDetailTask = 1202;

13、单条朋友圈点赞任务 CircleLikeTask = 1203;

14、触发手机推送群聊列表 TriggerChatroomPushTask = 1210;

15、请求具体群聊的详细信息 RequestChatRoomInfoTask = 1211;

16、获取联系人详细信息(不一定是好友,如群聊成员) RequestContactsInfoTask = 1212;

17、群聊管理 ChatRoomActionTask = 1213;

18、群内加好友 AddFriendInChatRoomTask = 1214;

19、通讯录加好友 AddFriendFromPhonebookTask = 1215;

20、删除好友 DeleteFriendTask = 1216;

21、发红包 SendLuckyMoneyTask = 1217;

22、获取聊天消息的原始内容(主要是xml内容) RequestTalkContentTask = 1218;

23、返回聊天消息的原始内容 RequestTalkContentTaskResultNotice = 1219;

24、转发消息内容 ForwardMessageByContentTask = 1220;

6、手机端主动发出的交互类消息

1、手机端推送好友列表 FriendPushNotice = 2026;

2、手机端推送当前安装版本 PostDeviceInfoNotice = 2027;

3、手机端回传检测清粉好友数 PostFriendDetectCountNotice = 2028;

4、手机回传朋友圈数据 CirclePushNotice = 2029;

5、手机回传朋友圈点赞数量 PostMomentsPraiseCountNotice = 2030;

9、手机端推送群聊列表 ChatroomPushNotice = 2031;

7、手机端推送标签列表 ContactLabelInfoNotice = 2032;

8、推送历史消息 HistoryMsgPushNotice = 2033;

9、群成员(陌生人)信息 ChatRoomMembersNotice = 2034;

  case HeartBeatReq: {// 客户端发送的心跳包
        heartBeatReqHandler.handleMsg(ctx, msgVo);
        break;
    }
    case DeviceAuthReq: {// 设备客户端授权  设备(手机客户端、客服客户端)获取通信token请求
        deviceAuthReqHandler.handleMsg(ctx, msgVo);
        break;
    }
    case AccountForceOfflineNotice: {// 设备账号强制下线通知
        accountForceOfflineNoticeHandler.handleMsg(ctx, msgVo);
        break;
    }
    ///////// 手机客户端通知类消息(源码请加微信tangjinjinwx)   start///////////
    case WeChatOnlineNotice: {// 手机客户端微信上线通知
        weChatOnlineNoticeHandler.handleMsg(ctx, msgVo);
        break;
    }
    case WeChatOfflineNotice: {// 手机客户端微信下线通知
        weChatOfflineNoticeHandler.handleMsg(ctx, msgVo);
        break;
    }
    case FriendAddNotice: {// 微信个人号新增好友通知
        friendAddNoticeHandler.handleMsg(ctx, msgVo);
        break;
    }
    case FriendDelNotice: {// 微信个人号移除好友通知
        friendDelNoticeHandler.handleMsg(ctx, msgVo);
        break;
    }
    case FriendTalkNotice: {// 微信好友发来聊天消息
        friendTalkNoticeHandler.handleMsg(ctx, msgVo);
        break;
    }
    case TaskResultNotice: {// 任务执行结果通知
        taskResultNoticeHandler.handleMsg(ctx, msgVo);
        break;
    }
    case WeChatTalkToFriendNotice: {// 手机上回复好友的聊天消息
        weChatTalkToFriendNoticeHandler.handleMsg(ctx, msgVo);
        break;
    }
    case FriendAddReqeustNotice: {// 有好友请求添加好友的通知
        friendAddReqeustNoticeHandler.handleMsg(ctx, msgVo);
        break;
    }
    case TalkToFriendTaskResultNotice: {// 手机端向服务端通知聊天执行结果
        talkToFriendTaskResultNoticeHandler.handleMsg(ctx, msgVo);
        break;
    }
    case RequestTalkDetailTaskResultNotice: {// 图片或视频消息的详细内容结果
        requestTalkDetailTaskResultNoticeHandler.handleMsg(ctx, msgVo);
        break;
    }
    case PullWeChatQrCodeTaskResultNotice: {// 上传手机客户端上微信的二维码
        pullWeChatQrCodeTaskResultNoticeHandler.handleMsg(ctx, msgVo);
        break;
    }
    case CircleNewPublishNotice: {// 手机上发送了朋友圈通知
        circleNewPublishNoticeHandler.handleMsg(ctx, msgVo);
        break;
    }
    case CircleDelNotice: {// 手机上删除朋友圈通知 
        circleDelNoticeHandler.handleMsg(ctx, msgVo);
        break;
    }
    case CircleLikeNotice: {// 手机检测到有人点赞/取消点赞通知
        circleLikeNoticeHandler.handleMsg(ctx, msgVo);
        break;
    }
    case CircleCommentNotice: {// 手机检测到有人评论/删除朋友圈通知
        circleCommentNoticeHandler.handleMsg(ctx, msgVo);
        break;
    }
    case CircleCommentReplyTaskResultNotice: {// 朋友圈评论回复反馈
        circleCommentReplyTaskResultNoticeHandler.handleMsg(ctx, msgVo);
        break;
    }
    case CircleCommentDeleteTaskResultNotice: {// 朋友圈评论删除任务反馈
        circleCommentDeleteTaskResultNoticeHandler.handleMsg(ctx, msgVo);
        break;
    }
    case PostFriendDetectCountNotice: {// 手机端回传检测清粉好友数
        postFriendDetectCountNoticeHandler.handleMsg(ctx, msgVo);
        break;
    }
    case CirclePushNotice: {// 手机回传朋友圈数据
        circlePushNoticeHandler.handleMsg(ctx, msgVo);
        break;
    }
    case PostMomentsPraiseCountNotice: {// 手机回传朋友圈点赞数
        postMomentsPraiseCountNoticeHandler.handleMsg(ctx, msgVo);
        break;
    }
    case PostMessageReadNotice: {// 手机端微信   消息标记为已读
        postMessageReadNoticeHandler.handleMsg(ctx, msgVo);
        break;
    }
    ///////////////////// 手机客户端通知类消息  end////////////////
   //////////////////////客服pc客户端发给设备的指令类消息 start//////////////////////////
case TalkToFriendTask: {// 给好友发消息任务
    talkToFriendTaskHandler.handleMsg(ctx, msgVo);
    break;
}
case PostSNSNewsTask: {// 发送朋友圈任务
    postSNSNewsTaskHandler.handleMsg(ctx, msgVo);
    break;
}
case AddFriendsTask: {// 主动添加好友任务
    addFriendsTaskHandler.handleMsg(ctx, msgVo);
    break;
}
case PostSNSNewsTaskResultNotice: {// 发送朋友圈任务后数据回传
    postSNSNewsTaskResultNoticeHandler.handleMsg(ctx, msgVo);
    break;
}
case DeleteSNSNewsTask: {// 删除朋友圈
    deleteSNSNewsTaskHandler.handleMsg(ctx, msgVo);
    break;
}
case AcceptFriendAddRequestTask: {// 客户端或者服务端接受好友请求通知
    acceptFriendAddRequestTaskHandler.handleMsg(ctx, msgVo);
    break;
}
case WeChatGroupSendTask: {// 群发消息任务
    weChatGroupSendTaskHandler.handleMsg(ctx, msgVo);
    break;
}
case WeChatMaintenanceTask: {// 执行养号动作命令
    weChatMaintenanceTaskHandler.handleMsg(ctx, msgVo);
    break;
}
case PostStopWeChatMaintenanceTask: {// 养号任务停止
    postStopWeChatMaintenanceTaskHandler.handleMsg(ctx, msgVo);
    break;
}
case RequestTalkDetailTask: {// 请求图片或视频消息的详细内容
    requestTalkDetailTaskHandler.handleMsg(ctx, msgVo);
    break;
}
case PullWeChatQrCodeTask: {// 服务端主动要求手机上传当前登录的微信二维码
    pullWeChatQrCodeTaskHandler.handleMsg(ctx, msgVo);
    break;
}
case TriggerFriendPushTask: {// 触发手机推送好友列表任务
    triggerFriendPushTaskHandler.handleMsg(ctx, msgVo);
    break;
}
case FriendPushNotice: {// 手机端推送好友列表
    friendPushNoticeHandler.handleMsg(ctx, msgVo);
    break;
}
case TriggerCirclePushTask: {// 触发手机推送朋友圈列表任务
    triggerCirclePushTaskHandler.handleMsg(ctx, msgVo);
    break;
}
case CircleCommentDeleteTask: {// 朋友圈评论删除任务
    circleCommentDeleteTaskHandler.handleMsg(ctx, msgVo);
    break;
}
case CircleCommentReplyTask: {// 朋友圈评论回复任务
    circleCommentReplyTaskHandler.handleMsg(ctx, msgVo);
    break;
}
case PostFriendDetectTask: {// 清粉任务
    postFriendDetectTaskHandler.handleMsg(ctx, msgVo);
    break;
}
case PostStopFriendDetectTask: {// 终止清粉任务
    postStopFriendDetectTaskHandler.handleMsg(ctx, msgVo);
    break;
}
case PostMomentsPraiseTask: {// 朋友圈点赞任务
    postMomentsPraiseTaskHandler.handleMsg(ctx, msgVo);
    break;
}
case PostStopMomentsPraiseTask: {// 停止朋友圈点赞任务
    postStopMomentsPraiseTaskHandler.handleMsg(ctx, msgVo);
    break;
}
case GetWeChatsReq: {// 拉取当前微信个人号列表请求
    getWeChatsReqHandler.handleMsg(ctx, msgVo);
    break;
}
case SyncFriendMessageAsyncReq: {// 同步好友消息数据请求
    syncFriendMessageAsyncReqHandler.handleMsg(ctx, msgVo);
    break;
}
case AccountLogoutNotice: {//pc客户端退出通知
    accountLogoutNoticeHandler.handleMsg(ctx, msgVo);
    break;
}
case WeChatLoginNotice: {//pc客户端选择微信号登陆/登出通知
    weChatLoginNoticeHandler.handleMsg(ctx, msgVo);
    break;
}
case ReadChatMessageNotice: {//pc客户端 标记消息已读
    readChatMessageNoticeHandler.handleMsg(ctx, msgVo);
    break;
}
/////////客服客户端发给设备的指令类消息(源码请加微信tangjinjinwx)  end//////////////////////////
//////////////其他公共消息处理start//////////////////////////////////////
case MsgReceivedAck: {//消息接收确认回复(接收或拒绝接收)
    msgReceivedAckHandler.handleMsg(ctx, msgVo);
    break;
}

SDK的功能API列表

微信加好友功能API

1、导入手机通讯录

2、手机通讯录加好友

3、加指定微信群好友

4、自动通过微信好友请求

5、手机模拟定位

6、附近人加好友

7、各种账号加好友(QQ号、手机号、微信号)

8、陌陌自动回复引流加好友

9、探探自动回复引流加好友

10、摇一摇打招呼加好友

...上述这些API可开发手机微信群控系统、云控系统、微信营销手机等系列爆粉营销软件(咨询加微信tangjinjinwx)!

微信群发功能API

1、微信群发好友(文字、图片、长短视频、链接、名片)

2、微信群发群(文字、图片、长短视频、链接、名片)

3、微信群发收藏(文字、图片、长短视频、链接、名片)

4、按标签群发、指定好友群发

...上述这些API可开发群控、云控等群发系列营销软件!

微信群管理功能API

1、入群欢迎语

2、指定群管理员

3、群管理统计(活跃度、发言数、总人数、邀请数、退出数等)

4、群管理员踢人、群消息警告

5、群关键词回复,群智能客服

6、建群、拉人功能接口

7、多群消息同步

8、群成员关系链

9、群二维码、群公告

10、群资料整理

...上述这些API可开发微信群管家、群营销大师等系列微信群管理营销软件!

微信营销功能API

1、发朋友圈(图文、链接、长短视频)

2、发长视频到微信朋友圈

3、朋友圈点赞,按比例点赞,按数量点赞

4、发漂流瓶信息

5、智能自动回复

6、同步指定微信好友朋友圈

7、红包、转账

...这些API可开发群控、云控、营销手机等系列微信营销软件!

微信聊天对话功能API

1、微信上线通知

2、微信下线通知

3、微信新增好友通知

4、微信删除好友通知

5、微信好友发来信息通知

6、回复微信好友聊天消息、聊天消息撤回

7、聊天执行结果通知

8、获取微信通讯录好友列表

9、获取群列表

10、好友请求添加好友的通知

11、获取手机客户端上微信的二维码

...这些API可开发群控、云控、微信客服系统等系列微信营销软件(咨询加微信tangjinjinwx)!

微信营销辅助工具API

1、打开微信

2、定时执行任务

3、任务执行结果通知

4、清理僵尸粉

5、清理微信空间

6、智能随机养号

7、智能抢红包服务

8、微信运动智能点赞

9、提取指定朋友圈内容

10、关注指定公众号

...这些API可辅助开发群控、云控、营销手机、微信客服系统等系列微信营销软件!

目前【聚客通】等等等scrm都是基于这个API二次开发的。

项目地址 https://www.wuliaokankan.cn/url301/138.html

2019-07-23 19:59:07 Snowprincev 阅读数 317
  • 微信公众平台深度开发v2.0第6季——微信WEB开发、手机...

    “微信公众平台深度开发Java版 v2.0”系列课程共有6季,使用JAVA语言,系统讲解微信公众平台订阅号、服务号官方列出的全部功能接口,包括:自定义菜单、个性化菜单(按需定制菜单)、群发消息、客服消息(有限次消息推送)、模板消息接(无限次消息推送)、微信网页开发(微信WEB开发、微信游戏)、微信JSSDK开发、用户管理、获取用户基本信息、网页授权获取用户基本信息(通过WEB得到用户信息)、二维码(临时二维码、永久二维码)、事件推送、接收普通消息、被动回复用户消息,等知识点。 以及,针对微信公众号开发的服务端架构设计方案。课程以微信公众号开发视角,讲解JAVA开发微信公众号所需的框架、第三方工具。 购买套餐还赠送经典微信开发课程——[微信公众号_独立知识点]环境搭建。该课程针对各种复杂的网络环境,讲解如何构建开发环境,已解决“没有服务器”、“没有固定IP”等开发者遇到的窘境。 课程采用独立知识点讲解,一个知识点,一组课程,真正做到“简单、高效、”以短的时间、实现的学习。更多课程信息请访问CSDN。网址:http://edu.csdn.net/lecturer/631 “微信公众平台企业号开发Java版”陆续上线。 详情 qq2326321088

    12237 人正在学习 去看看 翟东平

微信礼品的官方文档,请戳微信礼品卡

官方咨询邮箱:weixincard@tencent.com。

本文仅记录微信礼品卡后端开发相关:

1.设计礼品卡数据库表结构

请仔细阅读微信礼品卡官方文档,再进行数据库表结构设计。

确保调用微信接口返回成功之后,然后再向数据库表中插入或者修改数据。

创建礼品卡接口 

根据API,我只设计了一张表存储礼品卡的相关信息。建议给API的每个属性值都创建一个字段。

贴一下官方API参数示例:

{
    "card":{
        "card_type":"GENERAL_CARD",
        "general_card":{
            "sub_card_type":"GIFT_CARD",
            "background_pic_url":"https://mmbiz.qlogo.cn/mmbiz/",
            "base_info":{
                "max_give_friend_times":1,
                "giftcard_info":{
                    "price":1
                },
                "logo_url":"https://mmbiz.qlogo.cn/mmbiz/p98FjXy8LaeMq67mEpDmkj05EtiaVcGOibVaVux3Agib1ibcHFkCoic7HuQWFawx9XGCNWIO085drjdxTib2nBHlYGAA/0?wx_fmt=gif",
                "brand_name":"微信咖啡厅",
                "code_type":"CODE_TYPE_QRCODE",
                "title":"心意卡",
                "color":"Color020",
                "notice":"使用时向服务员出示",
                "service_phone":"020-88888888",
                "description":"不可与其他优惠同享",
                "date_info":{
                    "type":"DATE_TYPE_FIX_TIME_RANGE",
                    "begin_timestamp":1397577600,
                    "end_timestamp":1472724261
                },
                "sku":{
                    "quantity":50000000
                },
                "get_limit":0,
                "use_custom_code":false,
                "can_give_friend":true,
                "location_id_list":[
                    213059884
                ],
                "center_title":"顶部居中按钮",
                "center_sub_title":"按钮下方的wording",
                "center_url":"www.qq.com",
                "center_app_brand_user_name":"gh_86a091e50ad4@app",
                "center_app_brand_pass":"pages/index/index",
                "custom_url_name":"新品推荐",
                "custom_url":"https://www.starbucks.com.cn/",
                "custom_app_brand_user_name":"gh_86a091e50ad4@app",
                "custom_app_brand_pass":"pages/index/index",
                "need_push_on_view":true
            },
            "advanced_info":{
                "text_image_list":[
                    {
                        "image_url":"http://mmbiz.qpic.cn/mmbiz/p98FjXy8LacgHxp3sJ3vn97bGLz0ib0Sfz1bjiaoOYA027iasqSG0sjpiby4vce3AtaPu6cIhBHkt6IjlkY9YnDsfw/0",
                        "text":"此菜品精选食材,以独特的烹饪方法,最大程度地刺激食 客的味"
                    },
                    {
                        "image_url":"http://mmbiz.qpic.cn/mmbiz/p98FjXy8LacgHxp3sJ3vn97bGLz0ib0Sfz1bjiaoOYA027iasqSG0sj piby4vce3AtaPu6cIhBHkt6IjlkY9YnDsfw/0",
                        "text":"此菜品迎合大众口味,老少皆宜,营养均衡"
                    }
                ]
            },
            "supply_balance":true,
            "prerogative":"礼品卡享受更多优惠",
            "auto_activate":true,
            "init_balance":10000,
            "custom_field1":{
                "name":"优惠券",
                "url":"",
                "app_brand_user_name":"",
                "app_brand_pass":""
            },
            "custom_field2":{
                "name":"兑换券",
                "url":"",
                "app_brand_user_name":"",
                "app_brand_pass":""
            }
        }
    }
}

创建-礼品卡货架接口 根据API,我设计了5张表。先贴一下官方API参数示例:

{
    "page": {
        "page_title": "礼品卡",
        "support_multi": true,
        "banner_pic_url": "http://mmbiz.qpic.cn/mmbiz_jpg/p98FjXy8LafBWIJsGFe7tlPvtBFxXXTPdx5cEuFMcWWsiaR1DyrN5ML3jiaVYZibovA8OrwOylUia6ywvVU6Aqboibw/0",
        "theme_list": [
            {
                "theme_pic_url": "http://mmbiz.qpic.cn/mmbiz_jpg/p98FjXy8LafBWIJsGFe7tlPvtBFxXXTPdx5cEuFMcWWsiaR1DyrN5ML3jiaVYZibovA8OrwOylUia6ywvVU6Aqboibw/0",
                "title": "title",
                "title_color": "#FB966E",
                "show_sku_title_first": true,
                "item_list": [
                    {
                        "card_id": "pbLatjiSj_yVRH5XTb2Zsln7DNQg",
                        "title": "焦糖拿铁"
                    },
                    {
                        "card_id": "pbLatjlq75CPBR_tYCRdPlxSGlOs",
                        "title": "焦糖拿铁"
                    }
                ],
                "pic_item_list": [
                    {
                        "background_pic_url": "http://mmbiz.qpic.cn/mmbiz_jpg/p98FjXy8LafBWIJsGFe7tlPvtBFxXXTPdx5cEuFMcWWsiaR1DyrN5ML3jiaVYZibovA8OrwOylUia6ywvVU6Aqboibw/0",
                        "default_gifting_msg": "祝福语1"
                    },
                    {
                        "background_pic_url": "http://mmbiz.qpic.cn/mmbiz_jpg/p98FjXy8LafBWIJsGFe7tlPvtBFxXXTPdx5cEuFMcWWsiaR1DyrN5ML3jiaVYZibovA8OrwOylUia6ywvVU6Aqboibw/0",
                        "default_gifting_msg": "祝福语2"
                    },
                    {
                        "background_pic_url": "http://mmbiz.qpic.cn/mmbiz_jpg/p98FjXy8LafBWIJsGFe7tlPvtBFxXXTPdx5cEuFMcWWsiaR1DyrN5ML3jiaVYZibovA8OrwOylUia6ywvVU6Aqboibw/0",
                        "default_gifting_msg": "祝福语3"
                    }
                ],
                "category_index": 0
            },
            {
                "theme_pic_url": "http://mmbiz.qpic.cn/mmbiz_jpg/p98FjXy8LafBWIJsGFe7tlPvtBFxXXTPdx5cEuFMcWWsiaR1DyrN5ML3jiaVYZibovA8OrwOylUia6ywvVU6Aqboibw/0",
                "title": "title_lalala",
                "title_color": "#FB966E",
                "item_list": [
                    {
                        "card_id": "pbLatjiSj_yVRH5XTb2Zsln7DNQg",
                        "title": "焦糖拿铁"
                    },
                    {
                        "card_id": "pbLatjlq75CPBR_tYCRdPlxSGlOs",
                        "title": "蛋糕"
                    }
                ],
                "pic_item_list": [
                    {
                        "background_pic_url": "http://mmbiz.qpic.cn/mmbiz_jpg/p98FjXy8LafBWIJsGFe7tlPvtBFxXXTPdx5cEuFMcWWsiaR1DyrN5ML3jiaVYZibovA8OrwOylUia6ywvVU6Aqboibw/0",
                        "default_gifting_msg": "祝福语1",
                        "outer_img_id": "outer_img_id_1"
                    },
                    {
                        "background_pic_url": "http://mmbiz.qpic.cn/mmbiz_jpg/p98FjXy8LafBWIJsGFe7tlPvtBFxXXTPdx5cEuFMcWWsiaR1DyrN5ML3jiaVYZibovA8OrwOylUia6ywvVU6Aqboibw/0",
                        "default_gifting_msg": "祝福语2",
                        "outer_img_id": "outer_img_id_2"
                    },
                    {
                        "background_pic_url": "http://mmbiz.qpic.cn/mmbiz_jpg/p98FjXy8LafBWIJsGFe7tlPvtBFxXXTPdx5cEuFMcWWsiaR1DyrN5ML3jiaVYZibovA8OrwOylUia6ywvVU6Aqboibw/0",
                        "default_gifting_msg": "祝福语3",
                        "outer_img_id": "outer_img_id_3"
                    }
                ],
                "category_index": 1
            },
            {
                "theme_pic_url": "http://mmbiz.qpic.cn/mmbiz_jpg/p98FjXy8LafBWIJsGFe7tlPvtBFxXXTPdx5cEuFMcWWsiaR1DyrN5ML3jiaVYZibovA8OrwOylUia6ywvVU6Aqboibw/0",
                "title": "title_lalala",
                "title_color": "#FB966E",
                "item_list": [
                    {
                        "card_id": "pbLatjiSj_yVRH5XTb2Zsln7DNQg"
                    },
                    {
                        "card_id": "pbLatjlq75CPBR_tYCRdPlxSGlOs"
                    }
                ],
                "pic_item_list": [
                    {
                        "background_pic_url": "http://mmbiz.qpic.cn/mmbiz_jpg/p98FjXy8LafBWIJsGFe7tlPvtBFxXXTPdx5cEuFMcWWsiaR1DyrN5ML3jiaVYZibovA8OrwOylUia6ywvVU6Aqboibw/0",
                        "default_gifting_msg": "祝福语1",
                        "outer_img_id": "outer_img_id_1"
                    },
                    {
                        "background_pic_url": "http://mmbiz.qpic.cn/mmbiz_jpg/p98FjXy8LafBWIJsGFe7tlPvtBFxXXTPdx5cEuFMcWWsiaR1DyrN5ML3jiaVYZibovA8OrwOylUia6ywvVU6Aqboibw/0",
                        "default_gifting_msg": "祝福语2",
                        "outer_img_id": "outer_img_id_2"
                    },
                    {
                        "background_pic_url": "http://mmbiz.qpic.cn/mmbiz_jpg/p98FjXy8LafBWIJsGFe7tlPvtBFxXXTPdx5cEuFMcWWsiaR1DyrN5ML3jiaVYZibovA8OrwOylUia6ywvVU6Aqboibw/0",
                        "default_gifting_msg": "祝福语3",
                        "outer_img_id": "outer_img_id_3"
                    }
                ],
                "is_banner": true
            }
        ],
        "category_list": [
            {
                "title": "主题分类一"
            },
            {
                "title": "主题分类二"
            }
        ],
        "address": "广州市海珠区222号",
        "service_phone": "020-12345678",
        "biz_description": "退款指引",
        "cell_1": {
            "title": "申请发票",
            "url": "https://open.weixin.qq.com"
        },
        "cell_2": {
            "title": "申请退款",
            "url": "https://mp.weixin.qq.com"
        }
    }
}
  • 礼品卡货架货架主表

主要记录除了category_list和theme_list参数之外的属性信息

  • 礼品卡货架主题分类列表

主要记录了 category_list参数信息,关联货架表主键ID或者微信回传的page_id,视情况而定,我关联的是page_id

  • 礼品卡货架货架主题表

主要记录了在theme_list内除了item_list和pic_item_list参数之外的属性信息,关联货架表主键ID或者微信回传的page_id,视情况而定,我关联的是page_id,关联了礼品卡货架主题分类列表主键ID

  • 礼品卡货架主题卡片关联表

主要记录了item_list参数的信息,关联了礼品卡货架货架主题表主键ID。

  • 礼品卡货架祝福语表

主要记录了pic_item_list参数的信息,关联了礼品卡货架货架主题表主键ID

脑图示例:

礼品卡卡片创建和修改相对简单,货架的新建和修改相对复杂。这里我在写逻辑的时候,设定每一个货架主题必须绑定一个主题分类,这样在提交给微信的时候,theme_list内category_index属性对应到category_list都可找到对应的index值。

新建相对简单,前端封装好数据结构,接口接收到参数做处理即可。

编辑这里建议前端封装好数据结构,传到后端。除了礼品卡货架货架主表做update外,先移除之前的和货架关联的主题分类列表、主题表、主题卡片关联表、祝福语表,然后再新建上面4张表数据。

2.获取access_token

建议存储到redis,并设置有效时常

3.礼品卡接口调用

数据验证、数据封装,做好日志打印、事务处理

4.卡券事件推送

卡券事件推送URL在微信公众号里的"开发-基本配置-服务器配置"内配置

这里我写了一个servlet,get用于服务器验证,post用于业务处理。但目前我只用到了对账。

开发过程中,客户的公众号授权给了第三方平台来运营,导致配置了服务器域名也无法回调到我们的服务器上,经反复确认之后,取消了原来友商的授权。消息成功的推送到了我们的服务器上。

一旦启用服务器配置,自定义菜单配置失效并停用,提供两种方案参考:

  • 效仿友商创建第三方平台(推荐,可以和客户商量增加人天)
  • 在“添加功能插件”里找到自定义菜单并启用,原配置则生效,但不可修改。(折中省事)

 

关于微信重复回调问题处理,提供两种方案参考:

  • 数据库的code字段设置为unique
  • 微信回调的FromUserName+CreateTime作为回调的值存储在redis等no-sql数据库中,每次回调时判断此值存在与否,存在则直接返回success,不存在则继续处理。
2018-07-31 14:24:30 H0s0Y 阅读数 695
  • 微信公众平台深度开发v2.0第6季——微信WEB开发、手机...

    “微信公众平台深度开发Java版 v2.0”系列课程共有6季,使用JAVA语言,系统讲解微信公众平台订阅号、服务号官方列出的全部功能接口,包括:自定义菜单、个性化菜单(按需定制菜单)、群发消息、客服消息(有限次消息推送)、模板消息接(无限次消息推送)、微信网页开发(微信WEB开发、微信游戏)、微信JSSDK开发、用户管理、获取用户基本信息、网页授权获取用户基本信息(通过WEB得到用户信息)、二维码(临时二维码、永久二维码)、事件推送、接收普通消息、被动回复用户消息,等知识点。 以及,针对微信公众号开发的服务端架构设计方案。课程以微信公众号开发视角,讲解JAVA开发微信公众号所需的框架、第三方工具。 购买套餐还赠送经典微信开发课程——[微信公众号_独立知识点]环境搭建。该课程针对各种复杂的网络环境,讲解如何构建开发环境,已解决“没有服务器”、“没有固定IP”等开发者遇到的窘境。 课程采用独立知识点讲解,一个知识点,一组课程,真正做到“简单、高效、”以短的时间、实现的学习。更多课程信息请访问CSDN。网址:http://edu.csdn.net/lecturer/631 “微信公众平台企业号开发Java版”陆续上线。 详情 qq2326321088

    12237 人正在学习 去看看 翟东平

微信分享后台接口简单实现

此接口大致的流程是:用户创建时间戳,随机字符串,当前需要分享的页面的url三个变量,接着将自己的appid和APPsecret作为请求参数获取access_token,再根据access_token获取jsapi_ticket, 并将获取的jsapi-ticket进行加密、校验以及自己创建的三个变量进行签名,注意签名过程案按照 key 值 ASCII 码升序排序封装成json格式的数据传送到前台JS页面,具体程序如下;

public class WeiXinShareAction extends HttpServlet {
    private static final long serialVersionUID = 1L;

    private Integer main_count = 888;
    private String flag = "1";
    private Log logger = LogFactory.getLog(this.getClass());

    private String filePath = "/B.txt";

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        JsonObject jsonObject = new JsonObject();

        String ticket = null;
        String[] wxInfo = new String[] { "wx007344f87ae48300", "5442edc712b6846bdd1c058b7f2318fe" };
        WeiXinUtil wxu = new WeiXinUtil();
        String ticketResString;

        try {

            ticketResString = wxu.getShareJsapiTicket(wxInfo);
            if (StringUtils.isNotEmpty(ticketResString)) {
                JSONObject ticketJSONObject = JSONObject.fromObject(ticketResString);
                if (ticketJSONObject.getInt("errcode") == 0) {
                    ticket = JSONObject.fromObject(ticketResString).getString("ticket");
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        if (StringUtils.isEmpty(ticket)) {
            jsonObject.addProperty("errcode", 10002);
            jsonObject.addProperty("errmsg", "ticket_error");
            this.responseWrite(jsonObject.toString(), response);
            return;
        }
        String noncestr = this.createNonceStr();
        int timestamp = this.createTimestamp();
        String requestRefererURL = request.getHeader("referer");
        flag = request.getParameter("temp");
        logger.info("flag--------------" + flag);
        //这里是保存点击次数
        //没有数据库的情况下 保证服务重启后点击次数不清零
        //利用线程锁 使用IO流 对点击次数进行修改保存
             Thread_readFile thf4 = new Thread_readFile();
             thf4.start();

        logger.warn("requestRefererURL: " + requestRefererURL);

        String signature = this.createSignature(noncestr, ticket, timestamp, requestRefererURL);

        jsonObject.addProperty("countNum", main_count);//点击次数
        jsonObject.addProperty("errcode", 0);//
        jsonObject.addProperty("errmsg", "");//
        jsonObject.addProperty("wxuser", wxInfo[0]); // appId
        jsonObject.addProperty("timestamp", timestamp);//时间戳
        jsonObject.addProperty("noncestr", noncestr);//随机字符串
        jsonObject.addProperty("signature", signature);//签名
        response.setHeader("Access-Control-Allow-Origin", "*");
        this.responseWrite(jsonObject.toString(), response);
    }
    private void responseWrite(String content, HttpServletResponse response) {
        try {
            response.setCharacterEncoding("utf-8");
            response.getWriter().write(content);
        } catch (Exception e) {
            logger.error("responseWrite error in WeiXinShareAction", e);
        }
    }
}

获取access_token;这里开发过程中要注意微信为了减轻对服务器的访问压力 限制了access_token每天的生成次数 以及使用时长;
由于限制时长为7200s 于是做了一个判断 再生成一个token后的2小时用同一个token ;
这里仅仅只是一个小接口 于是选择将 最近一次的生成时间 以及 token 存为静态变量,

    /**
     * 微信分享,获取access_token
     */
    private String getWeiXinAccessToken(String[] wxInfo) throws Exception {
         //得到当前时间
        long current_time = System.currentTimeMillis();
        // 每次调用,判断expires_in是否过期,如果token时间超时,重新获取,expires_in有效期为7200
        if ((current_time - last_time) / 1000 >= 7200) {

            logger.info("第一次访问"+current_time);
            logger.info("(current_time - last_time) / 1000===="+(current_time - last_time) / 1000);

            String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + wxInfo[0]
                    + "&secret=" + wxInfo[1];

            String result = this.httpReqExecute(url);
            this.logger.warn("from weixin api accessToken: " + result);
            try {
                last_time = current_time; 
                if (StringUtils.isNotEmpty(result)) {
//                   解析respContent,并获取其中的更新的key,
                    accessToken = JSONObject.fromObject(result).getString("access_token");
//                  保存access_token
                    return accessToken;
                }
            } catch (Exception e) {
                logger.error("getAccessToken error in WeiXinShareAction", e);
            }
        }else{
            logger.info("第二次访问"+last_time);
            logger.info("(current_time - last_time) / 1000===="+(current_time - last_time) / 1000);
            logger.info("from weixin api accessToken:"+accessToken);
            return accessToken;
        }
        return null;
    }

根据access_token获取jsapiTicket

    /**
     * 微信分享,获取jsapiTicket
     */
    public String getShareJsapiTicket(String[] wxInfo) throws Exception {

        String access_Token = this.getWeiXinAccessToken(wxInfo);

        if (StringUtils.isEmpty(access_Token)) { // 获取 accessToken 失败
            //this.logger.warn(siteId + " accessToken is empty.");
            JsonObject jsonObject = new JsonObject();
            jsonObject.addProperty("errcode", "10000");
            jsonObject.addProperty("errmsg", "access_error");
            return jsonObject.toString();
        }

        String url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + access_Token + "&type=jsapi";
        String jsapiTicket = this.httpReqExecute(url);
        this.logger.warn(" from weixin api jsapiTicket is: " + jsapiTicket);

        if (StringUtils.isNotEmpty(jsapiTicket)) {
            return jsapiTicket;
        }
        return null;
    }

Http远程调用

    private String httpReqExecute(String url) {
        String result = "";
        DefaultHttpClient httpclient = null;
        try {
            httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost(url);
            // 执行
            HttpResponse response = httpclient.execute(httppost);
            HttpEntity entity = response.getEntity();
            if (entity != null && response.getStatusLine().getStatusCode() == 200) {
                result = EntityUtils.toString(entity, "UTF-8");
            }
        } catch (Exception e) {
            logger.error(" WeiXinShareAction 调用微信 API 失败!", e);
        } finally {// 关闭连接,释放资源
            httpclient.getConnectionManager().shutdown();
        }
        return result;
    }

返回成功

 from weixin api accessToken: {"access_token":"12_9UgVn7tFVtvf_7r4Lq4V9W9-pQdZpqWxVjFsPoF3hv3J5_XfwQWqauj4n9-ZMikC1_oCp0IpBxjpZr-Ty8XzG8QMeV2QVukFz5_NP7kjAB05MX9msxRg0FlpAAMjonrrh5wxSEFfKHEc0_BDHFKjAFAXVA","expires_in":7200}

 from weixin api jsapiTicket is: {"errcode":0,"errmsg":"ok","ticket":"HoagFKDcsGMVCIY2vOjf9j_Us44Qhuo4KdgH5u8ewMjOCTUO44m1hKqgEsJYIyFR9HWrmmz-wrsb9KLdmpATRw","expires_in":7200}

微信调用接口一览表

借鉴微信JS-SDK 微信分享接口开发(实用版)

源码传送门

2019-09-23 15:05:30 u010405836 阅读数 400
  • 微信公众平台深度开发v2.0第6季——微信WEB开发、手机...

    “微信公众平台深度开发Java版 v2.0”系列课程共有6季,使用JAVA语言,系统讲解微信公众平台订阅号、服务号官方列出的全部功能接口,包括:自定义菜单、个性化菜单(按需定制菜单)、群发消息、客服消息(有限次消息推送)、模板消息接(无限次消息推送)、微信网页开发(微信WEB开发、微信游戏)、微信JSSDK开发、用户管理、获取用户基本信息、网页授权获取用户基本信息(通过WEB得到用户信息)、二维码(临时二维码、永久二维码)、事件推送、接收普通消息、被动回复用户消息,等知识点。 以及,针对微信公众号开发的服务端架构设计方案。课程以微信公众号开发视角,讲解JAVA开发微信公众号所需的框架、第三方工具。 购买套餐还赠送经典微信开发课程——[微信公众号_独立知识点]环境搭建。该课程针对各种复杂的网络环境,讲解如何构建开发环境,已解决“没有服务器”、“没有固定IP”等开发者遇到的窘境。 课程采用独立知识点讲解,一个知识点,一组课程,真正做到“简单、高效、”以短的时间、实现的学习。更多课程信息请访问CSDN。网址:http://edu.csdn.net/lecturer/631 “微信公众平台企业号开发Java版”陆续上线。 详情 qq2326321088

    12237 人正在学习 去看看 翟东平

安卓微信的api,个人微信开发API协议,微信 ipad sdk,微信ipad协议,微信web版接口api,微信网页版接口,微信电脑版sdk,微信开发sdk,微信开发API,微信协议,微信接口文档sdk,替代微信ipad协议的api接口,网页个人微信api分享

1、基础消息类型

1、客户端发送的心跳包HeartBeatReq = 1001; 

2、消息接收确认回复(接收或拒绝接收)MsgReceivedAck = 1002; 

3、错误单独提升为一种消息类型Error = 1003; 

4、通用任务执行结果通知TaskResultNotice = 1025; 

2、设备客户端授权类消息

1、设备(手机客户端、客服客户端)获取通信token请求与响应DeviceAuthReq = 1010; 

设备(手机客户端、客服客户端)获取通信token响应DeviceAuthRsp = 1011;

2、设备授权后退出(仅用于服务端内部)DeviceExitNotice = 1012; 

3、账号强制下线通知 AccountForceOfflineNotice = 1013; 

3、手机客户端上传的通知类消息

1、手机客户端微信上线通知 WeChatOnlineNotice = 1020; 

2、手机客户端微信下线通知 WeChatOfflineNotice = 1021; 

3、微信个人号新增好友通知FriendAddNotice = 1022;

4、微信个人号移除好友通知FriendDelNotice = 1023; 

5、微信好友发来聊天消息通知FriendTalkNotice = 1024; 

6、手机上回复好友的聊天消息通知WeChatTalkToFriendNotice = 1026; 

7、有好友请求添加好友的通知FriendAddReqeustNotice = 1027; 

8、手机上发送了朋友圈通知CircleNewPublishNotice = 1031; 

9、手机上删除朋友圈返回通知CircleDelNotice = 1032; 

10、手机检测到有人点赞/取消点赞通知CircleLikeNotice = 1033; 

11、手机检测到有人评论/删除朋友圈通知CircleCommentNotice = 1034; 

12、消息标记为已读PostMessageReadNotice = 1035; 

13、群聊新增通知ChatRoomAddNotice = 1037; 

14、群聊信息变更通知ChatRoomChangedNotice = 1042;

15、群聊删除通知返回ChatRoomDelNotice = 1041; 

16、联系人标签新增,修改通知ContactLabelAddNotice = 1038; 

17、联系人标签删除通知ContactLabelDelNotice = 1044; // 联系人标签删除通知

18、新增公众号通知BizContactAddNotice = 2038; // 新增公众号通知

19、手机端推送当前sdk的安装版本通知PostDeviceInfoNotice = 2027; 

4、服务端、客服客户端发给设备的指令类消息(sdk咨询微信tangjinjinwx)

1、给好友发消息任务TalkToFriendTask = 1070; 

返回聊天执行结果TalkToFriendTaskResultNotice = 1028; 

2、发送朋友圈任务及结果返回PostSNSNewsTask = 1071; 

返回发送朋友圈数据结果PostSNSNewsTaskResultNotice = 1073; 

3、删除朋友圈任务与结果返回DeleteSNSNewsTask = 1074; 

返回通用任务执行结果

4、主动添加好友任务及返回结果AddFriendsTask = 1072; 

返回通用任务执行结果

5、接受好友请求任务及返回结果AcceptFriendAddRequestTask = 1075; 

返回通用任务执行结果

6、群发消息任务WeChatGroupSendTask = 1076; 

返回通用任务执行结果

7、执行养号动作命令任务WeChatMaintenanceTask = 1077; 

返回通用任务执行结果

8、养号任务停止任务及返回结果PostStopWeChatMaintenanceTask = 1100; 

返回通用任务执行结果

9、清粉任务及返回结果PostFriendDetectTask = 1095; 

返回:每隔一段时间手机端回传检测清粉好友数PostFriendDetectCountNotice = 2028; 

10、终止清粉任务及返回结果PostStopFriendDetectTask = 1096; 

返回通用任务执行结果

11、请求聊天图片或视频消息的详细内容任务与结果返回RequestTalkDetailTask = 1078; 

返回聊天图片或视频消息的详细内容结果RequestTalkDetailTaskResultNotice = 1029; 

12、要求手机上传当前微信二维码任务及返回PullWeChatQrCodeTask = 1079; 

返回手机端微信的二维码PullWeChatQrCodeTaskResultNotice = 1030; 

13、触发手机推送好友列表任务及结果返回TriggerFriendPushTask = 1080; 

返回一:手机端推送好友列表(分页,每页100)FriendPushNotice = 2026;

返回二:手机端推送标签列表

14、触发手机推送朋友圈列表任务及结果返回TriggerCirclePushTask = 1081; 

返回手机朋友圈数据(分页,每页20)CirclePushNotice = 2029; 

15、朋友圈评论删除任务及结果返回CircleCommentDeleteTask = 1082; 

朋友圈评论删除任务反馈 CircleCommentDeleteTaskResultNotice = 1083; 

16、朋友圈评论回复任务及结果返回CircleCommentReplyTask = 1084; 

朋友圈评论回复反馈CircleCommentReplyTaskResultNotice = 1085; 

17、通知手机将某个聊天窗口置为已读TriggerMessageReadTask = 1086; 

无返回

18、消息撤回任务RevokeMessageTask = 1087; 

返回通用任务执行结果

19、转发消息任务ForwardMessageTask = 1088;

返回通用任务执行结果

20、通知手机推送历史聊天记录任务及返回TriggerHistoryMsgPushTask = 1089; 

返回历史消息(分页,每页50)HistoryMsgPushNotice = 2033; 

21、获取群聊二维码任务及结果返回PullChatRoomQrCodeTask = 1090; 

返回群二维码PullChatRoomQrCodeTaskResultNotice = 1043;

22、朋友圈点赞任务及结果返回PostMomentsPraiseTask = 1098; 

返回朋友圈点赞数量PostMomentsPraiseCountNotice = 2030; 

23、停止朋友圈点赞任务PostStopMomentsPraiseTask = 1099; 

返回通用任务执行结果

24、修改联系人备注任务ModifyFriendMemoTask = 1101; 

返回通用任务执行结果

25、领取红包或转账收钱任务及返回TakeLuckyMoneyTask = 1200; 

返回收钱任务执行结果TakeMoneyTaskResultNotice = 1039; 

26、获取指定好友朋友圈任务及返回PullFriendCircleTask = 1201; 

返回手机朋友圈数据CirclePushNotice = 2029; 

27、获取朋友圈的图片任务及返回PullCircleDetailTask = 1202; 

返回朋友圈图片上传信息CircleDetailNotice = 1040; 

28、单条朋友圈点赞任务CircleLikeTask = 1203; 

返回通用任务执行结果

29、触发手机推送群聊列表任务及结果返回TriggerChatroomPushTask = 1210; 

返回一:手机端推送群聊列表(分页,每页2个)ChatroomPushNotice = 2031; 

返回二:群成员(陌生人)信息列表(分页,每页100)ChatRoomMembersNotice = 2034; 

30、请求具体群聊的详细信息任务RequestChatRoomInfoTask = 1211; 

返回ChatRoomAddNotice 群聊新增通知

31、获取联系人详细信息任务及返回

(不一定是好友,如群聊成员)RequestContactsInfoTask = 1212; 

返回联系人信息ContactsInfoNotice = 1036; 

32、群聊管理任务及返回ChatRoomActionTask = 1213; 

返回通用任务执行结果

返回群聊通知类返回结果

33、群内加好友任务AddFriendInChatRoomTask = 1214;

返回通用任务执行结果

34、通讯录加好友任务AddFriendFromPhonebookTask = 1215; 

返回通用任务执行结果

35、删除好友任务及返回DeleteFriendTask = 1216;  

返回通用任务执行结果

微信个人号移除好友通知

36、发红包任务及返回  

github地址

SendLuckyMoneyTask = 1217; 返回:通用任务执行结果,成功ErrMsg=sendId

37、获取聊天消息的原始内容(主要是xml内容)任务及返回RequestTalkContentTask = 1218; 

返回聊天消息的原始内容RequestTalkContentTaskResultNotice = 1219; 

38、转发消息内容任务及返回ForwardMessageByContentTask = 1220; 

返回通用任务执行结果

39、群主通过入群申请任务及返回ChatRoomInviteApproveTask = 1221;

返回通用任务执行结果

40、设置联系人标签任务及返回ContactLabelTask = 1224; // 设置联系人标签

返回联系人标签新增,修改通知;

返回通用任务执行结果

41、删除联系人标签任务及返回ContactLabelDeleteTask = 1225; // 删除联系人标签

返回通用任务执行结果

返回联系人标签删除通知

42、语音消息转文字命令及返回VoiceTransTextTask = 1226; // 语音消息转文字

返回:通用任务执行结果,成功ErrMsg=文字内容

43、查找微信联系人任务及返回FindContactTask = 1227; // 查找微信联系人

返回查找微信联系人结果

FindContactTaskResult = 1228; // 查找微信联系人结果

44、同意加入群聊命令及返回AgreeJoinChatRoomTask = 1229; // 同意加入群聊

返回通用任务执行结果

45、清空聊天记录任务及返回ClearAllChatMsgTask= 1230; // 清空聊天记录

返回通用任务执行结果

46、聊天界面发送朋友验证任务及返回(别人把你删掉了,你发消息会出现一个发送朋友验证的链接,此处有用到)

返回通用任务执行结果

47、获取会话列表任务及返回TriggerConversationPushTask = 1232; // 会话列表推送

返回聊天会话列表(分页)ConversationPushNotice = 2035; // 会话列表

48、微信设置(改昵称,头像)任务及返回WechatSettingTask = 1233; // 微信设置:改昵称,头像

返回通用任务执行结果

49、获取加好友请求列表任务及返回结果PullFriendAddReqListTask = 1234; //获取加好友请求列表

返回请求加好友列表FriendAddReqListNotice = 2036; // 加好友请求列表

50、获取公众号列表任务及结果返回TriggerBizContactPushTask = 1235; // 获取公众号列表

返回公众号列表BizContactPushNotice = 2037; // 公众号列表推送

51、获取时间段内的所有聊天消息msgSvrId及结果返回TriggerChatMsgIdsPushTask = 1251;

52、名片加好友任务及结果返回AddFriendNameCardTask = 1236; // 名片加好友

返回通用任务执行结果

53、根据msgSvrId获取聊天消息及结果返回RequestTalkMsgTask = 1252;  // 根据msgSvrId获取聊天消息

返回RequestTalkMsgTaskResultNotice = 1253;  

5、服务端通知执行的命令 微信sdk

1、微信账号登出命令WechatLogoutTask = 1222;

无返回;微信退出会触发微信离线通知(WeChatOfflineNoticeMessage)

2、手机操作指令(重启手机等)PhoneActionTask = 1223; // 手机操作指令

返回:通用任务执行结果,(上传本地文件:ErrMsg=文件url)

3、通知手机客户端软件升级UpgradeDeviceAppNotice = 1094; 

无返回

4、服务端删除设备通知手机端PostDeleteDeviceNotice = 1097; 

无返回

安卓微信的api,个人微信开发API协议,微信 ipad sdk,微信ipad协议,微信web版接口api,微信网页版接口,微信电脑版sdk,微信开发sdk,微信开发API,微信协议,微信接口文档sdk,替代微信ipad协议的api接口,网页个人微信api分享

微信开发之JSSDK调用

阅读数 20061

没有更多推荐了,返回首页