微信API接口、微信二次开发API调用

微信协议接口调用-加微信好友及通过好友请求

加微信好友

/** 
     * 微信自动添加好友
     * @author wechatno:tangjinjinwx
     * @blog http://www.wlkankan.cn
     */
    @Async
    public  void handleMsg(ChannelHandlerContext ctx ,TransportMessage vo, String contentJsonStr) {
        try {
            log.debug(contentJsonStr);
            FriendAddTaskSetting  req =  JSON.parseObject(contentJsonStr,FriendAddTaskSetting.class);
            if(null != req){
                friendAddTaskService.savePcTask(req);
                //3、告诉PC客户端消息已收到
                MessageUtil.sendCustomJsonMsg(ctx, "AutoFriendAddTaskResp", resp);
            } 
        } catch (Exception e) {
            e.printStackTrace();
            MessageUtil.sendJsonErrMsg(ctx, EnumErrorCode.InvalidParam, Constant.ERROR_MSG_DECODFAIL);
        }
    }

微信新增好友通知  
    /**
     * 微信新增好友通知
     * @author wechatno:tangjinjinwx
     * @blog http://www.wlkankan.cn
     */
    @Async
    public  void handleMsg(ChannelHandlerContext ctx, TransportMessage vo) {
        try {
            FriendAddNoticeMessage req = vo.getContent().unpack(FriendAddNoticeMessage.class);
             
            //把消息转发给pc端
            asyncTaskService.msgSend2pc(req.getWeChatId(), EnumMsgType.FriendAddNotice, req);
            
            //保存新增好友
            asyncTaskService.saveFriendAddContactinfo(req);
            
            //告诉客户端消息已收到
            MessageUtil.sendMsg(ctx, EnumMsgType.MsgReceivedAck, vo.getAccessToken(), vo.getId(), null);
        } catch (Exception e) {
            e.printStackTrace();
            MessageUtil.sendErrMsg(ctx, EnumErrorCode.InvalidParam,vo.getId(), Constant.ERROR_MSG_DECODFAIL);
        }
    }

微信协议接口调用-群发微信好友,群发群消息

群发微信好友、群发群
private static void talkMsgToFriend(TaskTimeInfo info, TimeTaskDetailsDao timeTaskDetailsDao,

List<String> friends) {
String executeTime = info.getExecute_time();
Date newDate = DateUtil.convertString2Date(executeTime, DateUtil.DATE_FORMAT_4);
Integer betweenTime = info.getBetween_time();

if (betweenTime ==null || betweenTime==0) {
betweenTime = (int)(Math.random()*3+3);
}

for (String friend : friends) {

String newExecuteTime = DateUtil.convertDate2String(newDate, DateUtil.DATE_FORMAT_4);
String msgStr = "";
String jsonStr = info.getContent();
List<MessageVo> list = JsonUtils.json2Bean(jsonStr);

for (int i = 0; i < list.size(); i++) {
MessageVo msg = list.get(i);

ByteString byteString = ByteString.copyFromUtf8(msg.getContent());

TalkToFriendTaskMessage.Builder build = TalkToFriendTaskMessage.newBuilder();
build.setWeChatId(info.getWechatId());
build.setFriendId(friend);
build.setContent(byteString);
build.setMsgId(MsgIdBuilder.getId());

if (msg.getContentType().equalsIgnoreCase("Text")) {// 文本类型
build.setContentType(EnumContentType.Text);
} else if (msg.getContentType().equalsIgnoreCase("Picture")) {// 图片类型
build.setContentType(EnumContentType.Picture);
} else if (msg.getContentType().equalsIgnoreCase("Voice")) {// 语音类型
build.setContentType(EnumContentType.Voice);
} else if (msg.getContentType().equalsIgnoreCase("Video")) {// 视频类型
build.setContentType(EnumContentType.Video);
} else if (msg.getContentType().equalsIgnoreCase("Link")) {// 链接类型
build.setContentType(EnumContentType.Link);
} else if (msg.getContentType().equalsIgnoreCase("WeApp")) {// 小程序
build.setContentType(EnumContentType.WeApp);
}

TalkToFriendTaskMessage msg1 = build.build();
if (null != msg1) {
try {
String json = JsonFormat.printer().print(msg1);

if (!StringUtils.isEmpty(json)) {
msgStr = msgStr + json;
if (i != (list.size() - 1)) {
msgStr = msgStr + "&&";
}
}
} catch (Exception e) {
e.printStackTrace();
}
}

}

if (null != msgStr) {
try {
if (!StringUtils.isEmpty(msgStr)) {
TimeTaskDetails detail = new TimeTaskDetails();
detail.setTid(info.getId());
detail.setExecute_time(newExecuteTime);
detail.setJson_content(msgStr);
detail.setMsgid(String.valueOf(MsgIdBuilder.getId()));
timeTaskDetailsDao.insert(detail);
}
} catch (Exception e) {
e.printStackTrace();
}
}

newDate = DateUtil.offsetSecode(newDate, betweenTime);

}
}

个人微信api接口调用-发微信朋友圈、拉取朋友圈数据功能

推送微信朋友圈列表
     /**
     * 触发推送朋友圈列表
     * @author wechatno:tangjinjinwx 
     * @blog http://www.wlkankan.cn
     */
    @Async
    public void handleMsg(ChannelHandlerContext ctx, TransportMessage vo, String contentJsonStr) {
        try {
            log.debug(contentJsonStr);
            TriggerCirclePushTaskMessage.Builder bd = TriggerCirclePushTaskMessage.newBuilder();
            JsonFormat.parser().merge(contentJsonStr, bd);
            TriggerCirclePushTaskMessage req = bd.build();
            // TriggerCirclePushTaskMessage req =
            // vo.getContent().unpack(TriggerCirclePushTaskMessage.class);
            // 将消息转发送给手机客户端
            asyncTaskService.msgSend2Phone(ctx, req.getWeChatId(), EnumMsgType.TriggerCirclePushTask, vo, req);
        } catch (Exception e) {
            e.printStackTrace();
            MessageUtil.sendJsonErrMsg(ctx, EnumErrorCode.InvalidParam, Constant.ERROR_MSG_DECODFAIL);
        }
    }

回传微信朋友圈数据

/**
     * 回传微信朋友圈数据
     * @author wechatno:tangjinjinwx
     * @blog http://www.wlkankan.cn
     */
    @Async
    public  void handleMsg(ChannelHandlerContext ctx, TransportMessage vo) {
        try {
            CirclePushNoticeMessage req = vo.getContent().unpack(CirclePushNoticeMessage.class);
            log.debug(JsonFormat.printer().print(req));
            //把消息转发给pc端
            asyncTaskService.msgSend2pc(req.getWeChatId(), EnumMsgType.CirclePushNotice, req);
            //保存朋友圈信息
            asyncTaskService.asyncSaveCircleMsg(req, circleService, weChatContactService);
            //告诉客户端消息已收到
            MessageUtil.sendMsg(ctx, EnumMsgType.MsgReceivedAck, vo.getAccessToken(), vo.getId(), null);
        } catch (Exception e) {
            e.printStackTrace();
            MessageUtil.sendErrMsg(ctx, EnumErrorCode.InvalidParam,vo.getId(), Constant.ERROR_MSG_DECODFAIL);
        }
    }

发微信朋友圈

/**
     * 发微信朋友圈
     * @author wechatno:tangjinjinwx
     * @blog http://www.wlkankan.cn
     */

@Async
    public  void handleMsg(ChannelHandlerContext ctx,TransportMessage vo, String contentJsonStr) {
        try {
            log.debug(contentJsonStr);
            PostSNSNewsTaskMessage.Builder bd = PostSNSNewsTaskMessage.newBuilder();
            JsonFormat.parser().merge(contentJsonStr, bd);
            PostSNSNewsTaskMessage req = bd.build();
            //PostSNSNewsTaskMessage req = vo.getContent().unpack(PostSNSNewsTaskMessage.class);
              
            asyncTaskService.msgSend2Phone(ctx, req.getWeChatId(), EnumMsgType.PostSNSNewsTask, vo, req);
        } catch (Exception e) {
            e.printStackTrace();
            MessageUtil.sendJsonErrMsg(ctx, EnumErrorCode.InvalidParam, Constant.ERROR_MSG_DECODFAIL);
        }
    }

微信API接口、微信二次开发API调用相关推荐

  1. 微信公众号的二次开发(二 自定义菜单的创建)

    在上篇<微信公众号的二次开发(一)>我们介绍了微信订阅号的一些坑, 以及微信公众平台开发的一些基本配置.下面我们继续介绍如何通过用户关注等行为.获取用户的openid. 自定义微信公众号菜 ...

  2. 群控sdk二次开发完整调用API(厉害了我的哥。。。)

    聚播群控sdk二次开发完整调用API功能 微信加好友功能API 1.导入手机通讯录 2.手机通讯录加好友 3.加指定微信群好友 4.自动通过微信好友请求 5.手机模拟定位 6.附近人加好友 7.各种账 ...

  3. 微信商城开源版二次开发(二)

    微信商城开源版二次开发(二) 最近想了解如何Java对接微信平台,快速搭建完整项目开发,发现网上有很对开源的这类二开源码.https://gitee.com/luozijing123/JooLun-w ...

  4. api接口参数加密_解决API接口开发安全性的四种方案

    如今各种API接口层出不穷,一个API的好与不好有很多方面可以考量,其中"安全性"是一个API接口最基本也是最重要的一个特点.尤其是对于充值缴费类的API接口来说,如话费充值API ...

  5. 如何判断微信公众号是否二次开发(一)

    微信公众号是否二次开发,即微信公众号是否使用了公众平台开发接口(其中主要如:自定义菜单接口.配置第三方开发服务器接口.调用外部链接等). 接下来介绍如何用手机直观的去判断微信公众号是否二次开发,主要从 ...

  6. 微信公众号的二次开发(三、接收事件推送获取用户信息)

    在上篇<微信公众号的二次开发(二 自定义菜单的创建)>中我们介绍了自定义菜单的创建.本篇文章将介绍如何通过接收事件推送来获取用户信息.首先我们阅读官方文档: 根据官方文档的介绍 微信公众号 ...

  7. 使用C#中的AutoCAD .NET API对CAD二次开发,获取动态块可见性值

    使用C#中的AutoCAD .NET API对CAD二次开发,获取动态块可见性值 0.效果 1.获取选择集,得到ObjectId 2.将ObjectId转换为BlockReference对象并获取其D ...

  8. 使用C#中的AutoCAD .NET API对CAD二次开发,获取块的属性

    使用C#中的AutoCAD .NET API对CAD二次开发,获取块的属性 /// <summary> /// 获得块对象的所有属性 /// </summary> public ...

  9. 京东商品详情页API接口、京东商品销量API接口、京东商品列表API接口、京东APP详情API接口、京东详情API接口,京东SKU信息接口

    京东商品详情页API接口.京东商品销量API接口.京东商品列表API接口.京东APP详情API接口.京东详情API接口,京东SKU信息接口,通过商品ID提取商品详情页各项数据,包含商品标题,sku i ...

最新文章

  1. 目标检测算法Faster R-CNN简介
  2. matlab中的cellstr的用法,matlab中的cell array, cellstr()和char()的用法
  3. 函数sigsetjump和siglongjump
  4. java虚拟机之二虚拟机内存结构
  5. MySQL · 源码分析 · change master to
  6. Windows学习总结(13)——各品牌电脑进入BIOS按键汇总
  7. 水冒泡了几度_冒泡和选择排序详解
  8. iotop命令监控磁盘io
  9. storm-基本概念
  10. C++day14 学习笔记
  11. Python学习之路day3-文件操作
  12. 12个有趣的HTML5实例(转)
  13. 几款免费好用的OCR工具
  14. 小说取名软件(附带截图)分享与介绍
  15. oracle11g怎么打开oem,oracle11g启动OEM
  16. 第五章:腾讯云有哪些产品
  17. 【线代】相似矩阵中特征根的求法:特征方程、一般方程为什么求得的特征根含义不同?
  18. 数据结构也不是那么没意思之中序二叉树+二叉树转伪双向循环链表
  19. 一分钟搞定最长公共子序列与最长公共子串的问题
  20. Flask入门(4):CBV和FBV

热门文章

  1. raspberry树莓派 -- CAN收发 - waveshare微雪
  2. 使用MyBatis实现增删改查遇到的异常解决方法
  3. 关于 CentOS 迁移龙蜥操作系统,这里有一份详细指南,请查收~
  4. 私活之Python数据挖掘建模平台
  5. MySQL如何查看当前表结构
  6. 判断二叉树是否为满二叉树
  7. 十进制、二进制、十六进制转换
  8. 数制转换(二进制、十进制、十六进制转换)
  9. 推荐一款可自动即时保存备忘内容的电脑记事本软件
  10. 车辆跟踪 matlab,汽车路径跟踪matlab程序