微信企业号_微信企业号开发 - CSDN
精华内容
参与话题
  • .net 微信企业号OA 完整版源码

    热门讨论 2020-07-13 23:31:02
    三人行微企移动OA系统(以下简称为本系统)是基于微信企业号,借用微信平台而建立的移动办公系统。企业用户不需要下载安装APP,只需打开微信扫描二维码关注,即可实现移动协同办公,不局限于电脑PC端,让办公移到...
  • C# 微信企业号验证源码MVC版+webForm版,只要修改你自己对应token,EncodingAESKey,CorpId发布即可用,测试通过验证
  • 微信企业号接口开发源码-Java

    热门讨论 2020-07-30 23:30:30
    微信企业号接口开发源码-Java 只写了整体结构,具体功能需自行实现 --作者:ivhhs.微信号:xixter
  • 实现个人微信同时接收企业号消息

    万次阅读 2018-04-12 18:13:40
    1.用户通过微信企业号后台微信插件页面的二维码方式,关注的企业号。在联系人中可以找到对应企业号,可以实现在个人微信中访问企业号中可见应用。2.在客户端企业微信app中设置,关闭只在企业微信中接收消息的选项...

    1.用户通过微信扫 企业号后台微信插件页面的二维码方式,关注的企业号。在联系人中可以找到对应企业号,可以实现在个人微信中访问企业号中可见应用。


    2.在客户端企业微信app中设置,关闭只在企业微信中接收消息的选项。具体测试中发现,app进入有些企业没有这项设置。对应个人微信联系人中也不能看到该企业号联系人(待确定原因,可能是企业号中权限设置)


    补充,在写这个内容时候。企业已经在推送 企业微信和个人微信互通功能内测。需要的朋友可以了解下


    展开全文
  • 微信企业号

    2019-08-11 11:36:56
    企业号出来了。姑且不论大家是接受还是抵触。 作为一个技术人员,我们要抱着发现新大陆的态度。 不过这个新大陆有点让我蛋疼,尤其在中文的处理上莫名其妙。好吧,如果你要推海外市场,可能它是一个很好的选择,...

    企业号出来了。姑且不论大家是接受还是抵触。

    作为一个技术人员,我们要抱着发现新大陆的态度。

    不过这个新大陆有点让我蛋疼,尤其在中文的处理上莫名其妙。好吧,如果你要推海外市场,可能它是一个很好的选择,用于替换手机上的app,野心有点大,估计安卓和苹果都不干了。

     

    闲话少讲,直奔主题。

    模式:

    主动模式

    这个就是说,主动去骚扰用户,你可以调用腾信的企业号的api,用于给关注你的企业号的人,push各种东西(消息、新闻、视频,声音等),以及修改企业号里面的相关信息(通讯录,组织架构之类的)

    回调模式

    这个比上面的有好点,用户通过微信找我们,让我们提供服务。这时服务可以以主动模式提供过去,这就不叫做骚扰了。

    webjs模式

    做些装饰性的工作。略。

     

    体验一把

    开发语言:python

    服务器: ubuntu 12

     

    接下来上代码,我们大致的体验下主动模式和回调模式。

    主动模式

    首先,腾讯要求,你要骚扰用户,必须有凭证token。好吧,token这样获取:

    def getTokenIntime(CorpId,Secret):
        res = urllib2.urlopen('https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=%s&corpsecret=%s'%(CorpId,Secret))
        res_dict = simplejson.loads(res.read())
        token = res_dict.get('access_token',False)
        if not token:
            with open(r'./wx_log.txt','ab') as f:
                f.write(u'异常: 无法取得token')
        return token
    

    token有超时时间,目前是2个小时。也就是说,获取一次token,两个小时以内就不用再次获取了。

    好了,拿到凭证了,接着可以骚扰别人了,以发短信为例:

    def sendTxtMsg(token,content,to_user="@all",to_party="",to_tag="",application_id=0,safe=0):
        try:
            data = {
               "touser": to_user,
               "toparty": to_party,
               "totag": to_tag,
               "msgtype": "text",
               "agentid": application_id,
               "text": {
                   "content": content,
               },
               "safe":safe
            }
    
            data = simplejson.dumps(data,ensure_ascii=False)
            if Debug:
                with open(r'./wx_data.txt','ab') as f:
                    f.write(data+'\r\n')
            req = urllib2.Request('https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s'%(token,))        
            resp = urllib2.urlopen(req,data)
            msg = u'返回值:' + resp.read()
        except Exception,ex:
            msg = u'异常:' + str(ex)
        finally:
            with open(r'./wx_log.txt','ab') as f:
                f.write(msg+'\r\n')
    

    之后发送新闻神马的,略了。

    目前发现,声音/图片/视频,所谓的media_id,根本找不到,我确定我找过了企业号平台的每一个角落。所以这三个目前发不了。

     

    好吧,主动模式玩了一段之后,发现似乎太无趣了。中文超过一定字数,直接报错{"errcode":41011,"errmsg":"missing agentid"}。在企业号的开发者论坛上问了,无人应答。

     

    好吧,自我安慰下,瑕不掩瑜,虽然我们都是中国人,虽然基本等于宣判不能大肆用中文。试试回调模式,看看中文问题能否得到解决。

    回调模式

    首先,要开启回调模式, 也就是告诉企业号你的服务器url,你想要的token和密钥。

    直接设了,点击,报错,各种错。受不了了。好吧,看看文档。

    文档说,开启回调模式,需要进行“两次握手”,也许是三次。而不是设置了就好了。

    第一次,企业号想你的服务器发送一段信息,post方式,内容放在xml里面。(暗号)

    第二次,你的服务器将内容解密,返回给企业号。(明文)

    第三次,企业号,将你发过来的明文进行比对什么的,然后反馈给在web后台操作的你。(核对)

    严格来讲,第三次,不算握手。

     

    接下来,动手:

    首先,你需要一个公网的服务器(没有的话自行解决)。

    其次,你需要在服务器上部署一个web应用,接受企业号的暗号并解密回传之用。

    简而言之,其实只需要一个在公网的应用即可(比如 GAE 应用)。

     

    由于只是测试,因此简单新建了一个django项目。

    路由映射

    url(r'^$','wx_handler.views.veryfi_callback'),
    

    视图:

    # -*- coding: utf-8 -*-
    from django.shortcuts import render
    from django.http import HttpResponse
    from .WXBizMsgCrypt import WXBizMsgCrypt
    import xml.etree.cElementTree as ET
    
    def veryfi_callback(req):
        msg_signature = req.GET.get('msg_signature',False)
        timestamp = req.GET.get('timestamp',False)
        nonce = req.GET.get('nonce',False)
        wxcpt = WXBizMsgCrypt('MJyh7es2bn1R','8j1F3fXp3eGn6RMeC17RtYiHiEUxUpgCrXassD3vHVE','wxd33505f2be01d541')
        if req.method =='GET':
            echostr = req.GET.get('echostr',False)
            ret,sEchoStr=wxcpt.VerifyURL(msg_signature, timestamp,nonce,echostr)
            if(ret!=0):
                ret_val = "ERR: VerifyURL ret: " + str(ret)
                return ret_val
    
            return HttpResponse(sEchoStr)
        else:
            if req.method=='POST':
                data = req.body #not POST
                ret,sMsg=wxcpt.DecryptMsg(data, msg_signature, timestamp, nonce)
                if( ret!=0 ):
                    ret_val =  "ERR: DecryptMsg ret: " + str(ret)
                    return HttpResponse(ret_val)
    
                xml_tree = ET.fromstring(sMsg)
                from_uid = xml_tree.find('FromUserName').text
                content = xml_tree.find("Content").text
    
                sRespData = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[wxd33505f9be01d541]]></FromUserName><CreateTime>1348831860</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[%s]]></Content><MsgId>1</MsgId><AgentID>1</AgentID></xml>"%(from_uid,'you saied:' + content,)
                ret,sEncryptMsg=wxcpt.EncryptMsg(sRespData, nonce, timestamp)
                return HttpResponse(sEncryptMsg)
            else:
                return HttpResponse("http method not suppoted")
    

     

    其中,有几个地方小小的掉进坑里了。

    由于企业号抛过来的数据类型是 text/xml, 因此用 request.POST是抓不到数据的。

    然后,不能有csrf_token保护,因为企业号肯定不会考虑传入一个form,然后加上csrf_token。因此需要把对应的middleware给取消掉。(反正我是把所有middleware全部屏蔽了)

     

    最后,这个只是针对消息的回复。(不会处理event)

    转载请注明本文来自:http://www.cnblogs.com/Tommy-Yu/p/4014442.html,谢谢!

    转载于:https://www.cnblogs.com/Tommy-Yu/p/4014442.html

    展开全文
  • 微信企业号接入(使用SpringMVC)

    万次阅读 2014-09-19 14:05:27
    企业号是公众平台为企业客户提供的微信移动应用入口。它帮助企业建立与员工、上下游供应链及企业应用间的连接。利用企业号,企业或第三方合作伙伴可以帮助企业快速、低成本的实现移动轻应用的部署与应用,实现生产、...

    企业号简介:

    企业号是公众平台为企业客户提供的微信移动应用入口。它帮助企业建立与员工、上下游供应链及企业应用间的连接。利用企业号,企业或第三方合作伙伴可以帮助企业快速、低成本的实现移动轻应用的部署与应用,实现生产、管理、协作、运营的移动化。

    当你成功申领一个企业号后,你可以登录企业号的管理页面,导入通讯录,配置应用,邀请成员关注该企业号,也可以通过应用向成员发送文本、图文、文件、视频、音频等多媒体消息。通过简单的配置,你就可以自动并回复成员发送的消息,实现公告通知、知识管理、企业文化建设、手机企业通讯录等基本的企业应用。

    你还可以通过本接口文档所描述的接口,建立企业号同企业应用间的连接,实现更多丰富且个性化的企业移动应用。

    建立连接:


    企业应用同微信企业号间的连接有以下三种方式:

    1、企业应用调用企业号提供的接口,管理或查询企业号后台所管理的资源、或给成员发送消息等,以下称主动调用模式。

    2、企业号把用户发送的消息或用户触发的事件推送给企业应用,由企业应用处理,以下称回调模式。

    3、用户在微信中阅读企业应用下发的H5页面,该页面可以调用微信提供的原生接口,使用微信开放的终端能力,以下称JSAPI模式。

    通过这三种连接方式的结合,企业可以在微信企业号中建立功能强大的移动轻应用,并依托微信数亿活跃用户,帮助企业方便、快捷地实现应用的部署,并确保应用的活跃度。

    每一种连接的实现机制不同,以下各节分别描述三种连接机制。

    接入(回调模式):




    具体实现方法(Java):

    首先下载腾讯提供的加密解密包,地址是:微信加密解密地址

    Java:http://qydev.weixin.qq.com/java.zip

    php:http://qydev.weixin.qq.com/php.zip

    C#:http://qydev.weixin.qq.com/csharp.zip

    把下次好的文件解压并添加到项目中:

    记得添加:commons-codec-1.9.jar



    编写核心接入类代码如下:

    <span style="font-size:14px;">package org.oms.qiye.web;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.oms.qiye.aes.AesException;
    import org.oms.qiye.aes.WXBizMsgCrypt;
    import org.oms.qiye.service.CoreService;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    
    /**
     * 注解方式打开链接
     * 
     * @author Sunlight
     *
     */
    @Controller
    public class CoreController {
    	private String token = "sunlight";
    	private String encodingAESKey = "s8vFF4f6AWay3uAdJh79WD6imaam4BV6Kl4eL4UzgfM";
    	private String corpId = "xxxxxxxxxx"; //你的企业号ID
    
    	@RequestMapping(value = { "/coreJoin.do" }, method = RequestMethod.GET)
    	public void coreJoinGet(HttpServletRequest request,
    			HttpServletResponse response) throws IOException {
    		// 微信加密签名
    		String msg_signature = request.getParameter("msg_signature");
    		// 时间戳
    		String timestamp = request.getParameter("timestamp");
    		// 随机数
    		String nonce = request.getParameter("nonce");
    		// 随机字符串
    		String echostr = request.getParameter("echostr");
    
    		System.out.println("request=" + request.getRequestURL());
    
    		PrintWriter out = response.getWriter();
    		// 通过检验signature对请求进行校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败
    		String result = null;
    		try {
    			WXBizMsgCrypt wxcpt = new WXBizMsgCrypt(token, encodingAESKey,
    					corpId);
    			result = wxcpt.VerifyURL(msg_signature, timestamp, nonce, echostr);
    		} catch (AesException e) {
    			e.printStackTrace();
    		}
    		if (result == null) {
    			result = token;
    		}
    		out.print(result);
    		out.close();
    		out = null;
    	}
    
    	@RequestMapping(value = { "/coreJoin.do" }, method = RequestMethod.POST)
    	public void coreJoinPost(HttpServletRequest request,
    			HttpServletResponse response) throws IOException {
    		// 调用核心业务类接收消息、处理消息
    		String respMessage = CoreService.processRequest(request);
    		System.out.println("respMessage=" + respMessage);
    		// 响应消息
    		PrintWriter out = response.getWriter();
    		out.print(respMessage);
    		out.close();
    
    	}
    
    }
    </span>

    CoreService.java 此类目前没有内容,后面编写消息回复功能!

    web.xml文件配置:

    <span style="font-size:14px;"><?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
      <display-name>QiyeProject</display-name>
      <welcome-file-list>
    		<welcome-file>index.jsp</welcome-file>
    	</welcome-file-list>
    
    	<servlet>
    		<servlet-name>mvc</servlet-name>
    		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    		<init-param>
    			<param-name>contextConfigLocation</param-name>
    			<!-- 不写,使用默认值:/WEB-INF/<servlet-name>-servlet.xml -->
    			<param-value>/WEB-INF/mvc-servlet.xml</param-value>
    		</init-param>
    		<load-on-startup>1</load-on-startup>
    	</servlet>
    
    	<servlet-mapping>
    		<servlet-name>mvc</servlet-name>
    		<url-pattern>/</url-pattern>
    	</servlet-mapping>
    
    	<!-- 表单处理乱码 -->
    	<filter>
    		<filter-name>CharacterFilter</filter-name>
    		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    		<init-param>
    			<param-name>encoding</param-name>
    			<param-value>UTF-8</param-value>
    		</init-param>
    	</filter>
    	<filter-mapping>
    		<filter-name>CharacterFilter</filter-name>
    		<url-pattern>/*</url-pattern>
    	</filter-mapping>
    </web-app></span>

    mvc-servlet.xml 文件配置:
    <span style="font-size:14px;"><?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
    	xmlns:context="http://www.springframework.org/schema/context"
    	xmlns:mvc="http://www.springframework.org/schema/mvc"
    	xsi:schemaLocation="http://www.springframework.org/schema/beans 
    	http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 
    	http://www.springframework.org/schema/tx 
    	http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
    	http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.2.xsd
    	http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">
    
    	<context:component-scan base-package="org.oms.qiye.web"></context:component-scan>
    	<mvc:annotation-driven />
    
    	<bean
    		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    		<property name="prefix" value="/WEB-INF/jsp/"></property>
    		<property name="suffix" value=".jsp"></property>
    	</bean>
    	
    	<!-- 静态文件处理 -->
    	<mvc:resources mapping="/resource/images/**" location="/resource/images/" />
    	<mvc:resources mapping="/resource/js/**" location="/resource/js/" />
    	<mvc:resources mapping="/resource/css/**" location="/resource/css/" />
    	
    	
    </beans></span>
    

    此处接入需要注意:

    1.com\qq\weixin\mp\aes目录下是用户需要用到的接入企业微信的接口,其中WXBizMsgCrypt.java文件提供的WXBizMsgCrypt类封装了用户接入企业微信的三个接口,其它的类文件用户用于实现加解密,用户无须关心。sample.java文件提供了接口的使用示例。

    2.WXBizMsgCrypt封装了VerifyURL, DecryptMsg, EncryptMsg三个接口,分别用于开发者验证回调url、接收消息的解密以及开发者回复消息的加密过程。使用方法可以参考Sample.java文件。

    3.请开发者使用jdk1.5以上的版本。针对org.apache.commons.codec.binary.Base64,需要导入jar包commons-codec-1.9(或comm ons-codec-1.8等其他版本),我们有提供,官方下载地址:

    http://commons.apache.org/proper/commons-codec/download_codec.cgi


    ****请特别注意******

    4.异常java.security.InvalidKeyException:illegal Key Size的解决方案:

    在官方网站下载JCE无限制权限策略文件(JDK7的下载地址:

    http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html

    下载后解压,可以看到local_policy.jar和US_export_policy.jar以及readme.txt。如果安装了JRE,将两个jar文件放到%JRE_HOME% \lib\security目录下覆盖原来的文件,如果安装了JDK,将两个jar文件放到%JDK_HOME%\jre\lib\security目录下覆盖原来文件。


    接入结果:


    微信企业号开发交流加QQ群:89714226

    转载请注明出处!


    展开全文
  • 微信企业号 介绍

    2020-07-13 10:51:46
    认识企业号之前,先要知道微信公众号的几种分类。 微信公众号主要面向名人、政府、媒体、企业等机构推出的合作推广业务,到目前为止有以下4种账号: 1)订阅号:主要偏于为用户传达资讯(类似报纸杂志),认证前后...

    https://www.cnblogs.com/polk6/p/6084621.html

    目录

    1. 微信公众号分类

    2. 企业号介绍

    3. 开发资源

     

    1. 微信公众号分类

    认识企业号之前,先要知道微信公众号的几种分类。

    微信公众号主要面向名人、政府、媒体、企业等机构推出的合作推广业务,到目前为止有以下4种账号:

    1) 订阅号:主要偏于为用户传达资讯(类似报纸杂志),认证前后都是每天只可以群发一条消息;

    2) 服务号:主要偏于服务交互(类似银行,114,提供服务查询),认证前后都是每个月可群发4条消息;

    3) 企业号:主要用于公司内部通讯使用,需要先有成员的通讯信息验证才可以关注成功企业号;

    4) 小程序:一种新的开放能力,开发者可以快速地开发一个小程序。

    详细区别可访问此地址http://kf.qq.com/faq/140806zARbmm140826M36RJF.html

     

    2. 企业号介绍

    2.1 特点

    1) 企业号是一种面向企业内部使用的公众号,只有企业通讯录的成员才能关注企业号.

    2) 可定制多个应用,并配置相关人员访问特定应用。企业号里可以包含N个服务号应用。

    3) 无限制消息,每天可群发账号上限数*30人次。

     

    2.2 注册

    注册地址https://mp.weixin.qq.com/cgi-bin/readtemplate?t=register/step1_tmpl&lang=zh_CN

    若想体验测试账号,只需在账号类型这一步选择【测试号】。

     

    2.3 后台展示

     

    2.4 手机端展示

     

     

    3. 开发资源

    下面将说明开发微信企业号的一些资源。

    3.1 网站信息

    微信企业号官网https://qy.weixin.qq.com/

    接口文档http://qydev.weixin.qq.com/wiki/index.php

    开发者论坛http://qydev.weixin.qq.com/qa/index.php

     

    3.2 微信Web开发者工具

    在【小程序】发布的同时,微信也发布了新的Web开发者工具,可访问此网址进行下载:

    https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html

    运行图

     

     

    注意:要使用此功能,必须在创建的企业号里开启【web开发者工具】。

    开启路径:企业号 → 设置 → 功能设置 → web开发者工具

     

    3.3 WeUI库

    WeUI是微信官方设计团队为微信 Web 开发量身设计,可以令用户在HTML5应用中的使用感知更加统一。

    包含button、cell、dialog、 progress, toast、article、icon等各式元素。

    在线演示地址:https://weui.io/

    GitHub:https://github.com/weui/weui

    展开全文
  • 微信企业号(公众号)开发流程汇总

    千次阅读 2019-08-14 17:35:16
    微信企业号与微信公众号的配置流程大同小异(殊途同归)。 2,准备工作 2.1,企业号的申请与域名的申请及备案 企业号(公众号)申请需要提前申请,因为有些东西需要备案,审核啥的; 测试环境/生产环境的域名...
  • 微信企业号/企业微信的corpid和secret

    万次阅读 2017-04-12 15:54:30
    如果要进行微信企业号和企业微信的开发,首先必须知道对应的corpid和secret,因为很多API调用都必须使用这两个参数。典型的API如获取AccessToken的API。下面介绍在哪里查看微信企业号和企业微信的corpid和secret。 ...
  • 强调一下:微信开发者工具可以调试企业微信的自建应用,暂时还不支持调试第三方应用。调试第三方应用时同样也会提示未绑定企业号开发者。 下面将针对如何调试自建应用出现的企业号未绑定问题。 1、首先,将自己...
  • 开发微信企业号,获取ACCESS_TOKEN是必须的,但如何获取ACCESS_TOKEN呢?获取ACCESS_TOKEN需要两个参数,corpidcorpid
  • 微信企业号手机端清理缓存

    千次阅读 2019-01-03 11:44:03
    微信企业号手机端清理缓存 问题出现 微信企业号手机端app,每次更新后都存在缓存,页面版本怎么刷新都不能刷出最新的页面内容格式,而且也没有清空缓存的选择,给开发带来了极大的伤害,无意间发现。。。。。 解决...
  • 微信企业号开发实例源码

    千次阅读 2014-11-19 21:43:50
    从微信服务号到微信企业号开发也有段时间了,
  • 摘要:上一篇总结了微信企业号开发的入门篇,access_token接口调用,这篇咱们来看下微信企业号开发中的网页授权接口调用,这个接口一般都是用来实现微信企业号应用免登录或者获取关注的微信用户的个人信息时会用到。...
  • 经过近期对微信企业号开发的初步研究,发现可以在开通开发模式后,设置允许转发文章到该应用中,这样就可以实现上面说的转发文章到企业号应用的第一步。如果需要进一步进行开发,可以将用户转发过来的信息使用程序...
  • 微信企业号 出现redirect_uri unauthorized 50001 解决办法
  • 微信平台提供的公众号丶服务号丶订阅号、 企业号,它们之间存在着区别和联系,以下为功能对比 公众号:公众号是开发者或商家在微信公众平台上申请的应用账号,该帐号与QQ账号互通,通过公众号,商家可在微信平台上...
  • 1、用管理员的帐号登录后,选择【设置】-【权限管理】进入管理组设置界面,如下图 2、在左边点击【新建管理组】,新建一个管理组(这里必须新建一个管理组,因为系统管理组是无法获取权限的),如下图: ...
  • 微信企业号自建应用

    万次阅读 2017-03-09 15:49:32
    企业号基础/自建应用介绍 ...企业号管理端【应用中心】默认有1个自建应用(企业小助手)和2个基础应用(微企通讯录和移动管理助手)。...1、企业小助手是企业号下默认添加的应用...1)成员关注:向微信侧推送关注成功
  • 微信企业号,发消息或获取人员信息时报no privilege to access/modify contact/party/agent
1 2 3 4 5 ... 20
收藏数 5,858
精华内容 2,343
关键字:

微信企业号