UDN-企业互联网技术人气社区

板块导航

浏览  : 1455
回复  : 6

[移动平台] iUAPMobile----微信接入

[复制链接]
piu~piu~臭的头像 楼主
发表于 2015-12-21 20:42:32 | 显示全部楼层 |阅读模式
从企业MA Server2.7开发就支持微信接入功能,对比微信公众平台开发 和Mobile平台对微信接入的功能,使用MA Server,微信开发真是简单易行~
直接入题~  PS:附件文档给出微信开发简单说明【pdf附件中包括:维系开发本地调试+微信开发基础+mobile微信接入】
这里只截取第三部分内容:


3.使用Mobile平台接入微信(MA2.73.1介绍
iUAP Mobile平台提供微信接入功能:可以用MA作为微信公众平台的服务器进行微信业务处理。目前MAServer支持接收文本消息、图片消息、语音消息、视频消息、小视频消息、地理位置消息、链接消息以及关注/取消关注事件和自定义菜单事件。支持回复文本消息、图片消息、语音消息、视频消息、音乐消息、图文消息。
这里的MA指的是企业MA Server。

iUAPMobile微信开发数据交互原理.png
3.2简要分析
企业MA Server针对微信接入给开发者提供很多接口(已经集成到企业MA Server中),开发者通过MA Server做微信接入实际做的工作很少。
映射到微信公众平台开发(反编译的~这里简单说明下)
1.      微信公众平台接入
在微信公众平台:服务器配置时,会调用WeixinServlet,在doGet(HttpServletRequest req,HttpServletResponse resp)方法中,实现微信接入的功能,其中token="uapmobile"

微信入口.png
2.      接收消息类型校验+被动回复消息
当微信客户端发送消息或者请求后,会调用WeixinServlet的doPost(HttpServletRequestreq, HttpServletResponse resp)方法,这里:String respMessage = WeixinUtil.processRequest(req);就是MA与业务系统做交互得到的数据,再将数据返回给微信客户端。
这就涉及到:
1.  MA如何给业务系统传输消息数据
2.  业务系统如何接收数据,并判断消息类型
3.  业务系统处理后如何再将结果返回给MA
MA与业务系统交互涉及到网关开发,可以参考UDN论坛:http://udn.yyuap.com/forum.php?mod=viewthread&tid=31811   涉及到网关服务部分(因MA Server2.7支持添加更多方式的网关服务,基本原理一致)
  
protected void doPost(HttpServletRequest req, HttpServletResponse  resp)
  
    throws ServletException, IOException
  
{
  
     req.setCharacterEncoding("UTF-8");
  
     resp.setCharacterEncoding("UTF-8");
  
     
  
    String respMessage = WeixinUtil.processRequest(req);
  
   
  
    PrintWriter out = resp.getWriter();
  
     out.print(respMessage);
  
     out.close();
  
   }
  
}
  
3.      Mobile平台支持微信功能说明
ma支持接收文本消息、图片消息、语音消息、视频消息、小视频消息、地理位置消息、链接消息以及关注/取消关注事件和自定义菜单事件。
支持回复文本消息、图片消息、语音消息、视频消息、音乐消息、图文消息。
对于这些接收和回复的消息,ma封装成了java对象,在weixin_vo.rar包中,引入工程即可使用。
weixin_vo.png

3.3使用Moible平台提供的微信接入功能
3.3.1 微信服务器配置
在微信公众平台配置ma的微信请求地址:maserver域名/umserver/weinxin
MA配置.png
注意
如果使用ngrok映射工具的话,需要将配置工具IP配置为127.0.0.1

3.3.2 MAserver上的配置
在mahome/conf/configure/weixin文件夹下新建一个文件夹,该文件夹的名称为你所要开发的微信公众平台的微信号。在新建的文件夹下需要包含三个配置文件,分别为services.xml、datasources.xml、provider.xml。按前文网关服务的配置说明进行配置。
MA与业务系统交互涉及到网关开发,可以参考UDN论坛:http://udn.yyuap.com/forum.php?mod=viewthread&tid=31811   涉及到网关服务部分(因MA Server2.7支持添加更多方式的网关服务,基本原理一致)
·provider.xml:平台支持的几种服务调用的方式:现在远程调用接口的方式支持3种,分别为nclocator、http、ma(调用的是在ma服务器上的服务,本案例采用ma方式)
  
<provider-set>
  
         <provider  id="nclocator"  class="com.yonyou.uap.um.gateway.service.NCLocatorGatewayService"  />
  
         <provider  id="http"  class="com.yonyou.uap.um.gateway.service.HTTPGatewayService" />
  
         <provider  id="ma"  class="com.yonyou.uap.um.gateway.service.MAGatewayService" />
  
</provider-set>
  
·services.xml服务接口信息
  
<?xml version="1.0"  encoding="UTF-8"?>
  
<gateway>
  
    <!--
  
其中service的id属性,如示例weixinProcessService,不可修改。
  
service的provider属性为你要选择的远程调用方式的id—provider.xml配置文件中的provide节点的id。
  
service的method属性为你要调用的接口的方法名,returntype为返回值类型。
  
Interface为你所要调用的接口类名。
  
Security为是否需要token。
  
Datasource的 name属性是在datasource.xml配置文件中配置的datasource的id。
  
-->
  
         <service  id="weixinProcessService"  provider="ma" method="processMessage"
  
                   returntype="com.yonyou.uap.um.weixin.vo.ResponseBaseMessage">
  
                   <properties>
  
                            <params>msg:com.yonyou.uap.um.weixin.vo.RequestBase</params>
  
                            <interface>com.yyuap.weixinService.inf.IMAWeiXinService</interface>
  
                            <security>false</security>
  
                   </properties>
  
                   <ds-set>
  
                            <datasource  name="ma27" />
  
                   </ds-set>
  
         </service>        
  
</gateway>
  
·datasources.xml
  
<?xml version="1.0"  encoding="UTF-8"?>
  
<dsset>
  
         <datasource  id="nc63" isdefault="true">
  
                   <!--NCؾ请求URL-->
  
                   <url>http://10.2.112.81:8090</url>
  
                   <!--NCؾ数据源-->
  
                   <ncds>design</ncds>
  
         </datasource>
  
         <datasource  id="http" isdefault="true">
  
                   <!--NCؾ请求URLncip和端口-->
  
                   <url>http://10.2.112.81:8090/umserver/servlettest</url>
  
                   <!--NCؾ数据源-->
  
                   <ncds>design</ncds>
  
         </datasource>
  
         <datasource id="ma27"  isdefault="true">
  
                   <url>http://127.0.0.1:8080</url>
  
                   <ncds>design</ncds>
  
         </datasource>
  
</dsset>
  
3.3.3 upm文件
service.xml文件中定义的id="weixinProcessService"要调用接口com.yyuap.weixinService.inf.IMAWeiXinService,需要在upm文件中定义其实现。
\MAServer\modules\mobrt\META-INF\ mobrt.upm 定义其实现类
  
<?xml version='1.0'  encoding='UTF-8'?>
  
<module name="mobrt">
  
         <public>
  
       …
  
                   <component  remote="true" accessProtected="false">
  
                            <interface>com.yyuap.weixinService.inf.IMAWeiXinService</interface>
  
                            <implementation>com.yyuap.weixinService.WeiXinImpl</implementation>
  
                   </component>
  
      …
  
         </public>
  
         <private>
  
         </private>
  
</module>
  
3.3.4 MA Controller
接口:com.yyuap.weixinService.inf.IMAWeiXinService
  
public interface  IMAWeiXinService {
  
       public abstract ResponseBaseMessage  processMessage(
  
                     RequestBase  paramRequestBase) throws Exception;
  
}
  
实现类:com.yyuap.weixinService.WeiXinImpl
  
public class  WeiXinImpl implements IMAWeiXinService {
  
    @Override
  
    public  ResponseBaseMessage processMessage(RequestBase msg) throws  Exception {
  
       //  TODO 自动生成的方法存根
  
       String  content = "";
  
       if  (msg instanceof RequestTextMessage) {
  
           content  = ((RequestTextMessage) msg).getContent();
  
       }
  
       ResponseTextMessage  resTextMsg = new  ResponseTextMessage();
  
       //  resTextMsg.setContent("你输入的内容是:" + content);
  
       resTextMsg.setContent("Hello" +  content);
  
        resTextMsg.setMsgType(WeixinServiceImpl.RESP_MESSAGE_TYPE_TEXT);
  
       return  resTextMsg;
  
  
    }
  
}
  
3.4 运行
·启动MA Server
·启动ngrok.bat(或者部署到公网上)
·微信公众号配置:在微信公众平台配置ma的微信请求地址:maserver域名/umserver/weinxintokenuapmobile
·运行效果【创建自定义菜单后,由于微信客户端缓存,需要24小时微信客户端才会展现出来。测试时可以尝试取消关注公众账号后再次关注,则可以看到创建后的效果。】
效果.png

weixin_vo.rar

14.33 KB, 下载次数: 13

iUAPMobile微信接入.pdf

1.4 MB, 下载次数: 10

售价: 5 U币  [记录]

mobile微信接入+微信开发基础+维系开发本地调试

相关帖子

发表于 2015-12-27 09:05:56 | 显示全部楼层
顶               
点评 ( 1 ) 收起 / 展开点评

piu~piu~臭 2015年12月29日 12:33 详情 回复

谢谢~

使用道具 举报

回复

piu~piu~臭的头像 楼主
发表于 2015-12-29 12:33:01 | 显示全部楼层
使用道具 举报

回复

发表于 2016-1-7 17:01:50 | 显示全部楼层
好厉害的样子!
使用道具 举报

回复

piu~piu~臭的头像 楼主
发表于 2016-1-11 19:03:06 | 显示全部楼层
乔巴 发表于 2016-1-7 17:01
好厉害的样子!

         
使用道具 举报

回复

发表于 2016-1-22 10:05:42 来自手机 | 显示全部楼层
使用道具 举报

回复

发表于 2016-1-22 10:41:47 | 显示全部楼层
顶                    
使用道具 举报

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部