多量平台怎么对接
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多量平台怎么对接相关的知识,希望对你有一定的参考价值。
平台对接方法,基于微服务构架,用于SaaS或者ERP与电商平台的对接,包括:将SaaS或ERP的基础数据映射转换并翻译为统一的基础数据模型
,并将统一的基础数据映射转换并翻译为各个电商平台的数据;将统一的接口模型映射为各个电商平台所开发的接口模型;认证各个电商平台的身份,直连各个电商平台,同时控制各个电商平台的控制权限。
一、CS软件数据采集
技术。
C/S架构软件属于比较老的架构,能采集这种软件数据的产品比较少。
常见的是博为小帮软件机器人,在不需要软件厂商配合的情况下,基于“”所见即所得“的方式采集界面上的数据。输出的结果是结构化的数据库或者excel表。如果只需要业务数据的话,或者厂商倒闭,数据库分析困难的情况下, 这个工具可以采集数据,尤其是详情页数据的采集功能比较有特色。
值得一提的是,这个产品的使用门槛很低,没有 IT背景的业务同学也能使用,大大拓展了使用的人群。
二、网络数据采集API。
通过网络爬虫
和一些网站平台提供的公共API(如Twitter和新浪微博
API)等方式从网站上获取数据。这样就可以将非结构化数据
和半结构化数据的网页数据从网页中提取出来。
联网的网页大数据采集和处理的整体过程包含四个主要模块:web爬虫(Spider)、数据处理(Data Process)、爬取URL队列(URL Queue)和数据。
三、数据库方式
两个系统分别有各自的数据库,同类型的数据库之间是比较方便的:
1)如果两个数据库在同一个服务器上,只要用户名
设置的没有问题,就可以直接相互访问,需要在from后将其数据库名称及表的架构所有者带上即可。
2)如果两个系统的数据库不在一个服务器上,那么建议采用链接服务器的形式来处理,或者使用openset和opendatasource的方式,这个需要对数据库的访问进行外围服务器的配置。
不同类型的数据库之间的连接就比较麻烦,需要做很多设置才能生效,这里不做详细说明。
开放数据库方式需要协调各个软件厂商开放数据库,其难度很大;一个平台如果要同时连接很多个软件厂商的数据库,并且实时都在获取数据,这对平台本身的性能也是个巨大的挑战。 参考技术A 多量平台可以通过API(应用程序编程接口)来对接,该接口可以被应用到多种场景,可以用于简化开发工作,省去开发者重新做出本不存在的接口。另外,也可以使用SDK(软件开发工具包)或者其他第三方工具,来实现多量平台的对接。
微信公众号对接第三方平台开发
前言
微信公众号对接第三方开发的前提就是授权。首先是开通开放平台。开通时填写资料包括公司信息,还需要300大洋。开放平台包括移动应用、网站应用、公众号账号、小程序、第三方平台。这里我们开通第三方平台。
开通第三方平台时填写基本信息,比如平台名称、平台介绍、平台图片。下一步是选择权限集、开发资料。权限集就是托管公众号的功能、比如回复消息、创建菜单、会话管理等等。 开发资料这里有3个地方需要注意,授权事件接收url、授权测试公众号列表、公众号消息于事件接收url。 授权测试公众号列表主要是在全网发布之前,在列表内的公众号才能进行授权。
一键授权给第三方平台
先来看一下官方提供的流程图,有一个直观的认识。
授权官方提供了两种方式,授权注册页面扫码授权、点击移动端链接快速授权。这里我用的是第一种,在自己的页面上放一个链接,点击后会生成一个二维码让公众号管理员扫码授权。 https://mp.weixin.qq.com/cgi-bin/componentloginpage?component\\_appid=xxxx&pre\\_auth\\_code=xxxxx&redirect\\_uri=xxxx&auth\\_type=xxx。
这里看到了链接路径包括包括4个参数。前3个是必填。component_appid是第三方平台的appid、redirect_uri是你需要用来获取授权信息的url。同意授权后微信服务器会请求这给地址。 到这里绕了一圈还有一个参数pre_auth_code。 这个参数怎么获取?这里先看一下官方文档 https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1453779503&token=&lang=zh_CN 。 这里就该使用创建第三方平台时填写的授权事件url了。微信服务器会每隔10分钟向改地址发起请求,接收到的消息是密文,需要自己解密,官方已经提供了demo,可以参考。pre_auth_code就要从这里的密文消息中获取。
用下面这个示意图来消化一下。分3步来获取预授权码
获取component_verify_ticket
获取component_access_token
这里注意一下,获取component_access_token参数是JSON字符串,在对接第三方平台开发时这两个参数至关重要。component_verify_ticket是公众平台和第三方平台沟通的桥梁。这两个参数可以根据自己的需要保存在数据库或者redis里。后续调用其他高级接口和网页授权时都需要用到。
获取预授权码(pre_auth_code)
知道了具体获取的方法,那我们就看下具体的处理方法,第一步先获取verify_ticket。
string sToken = "第三方平台token"; string sAppID = "第三方平台appid"; string sEncodingAESKey = "第三方平台aeskey"; WXBizMsgCrypt wxcpt = new WXBizMsgCrypt(sToken, sEncodingAESKey, sAppID); if (Request.HttpMethod.ToLower() == "post") { string sig = Request.QueryString["msg_signature"]; string timestamp = Request.QueryString["timestamp"]; string nonce = Request.QueryString["nonce"]; StreamReader sr = new StreamReader(Request.InputStream, Encoding.UTF8); string respData = sr.ReadToEnd(); string sMsg = ""; //解析之后的明文 int ret = 0; ret = wxcpt.DecryptMsg(sig, timestamp, nonce, respData, ref sMsg); if (ret != 0) { return; } XmlDocument doc = new XmlDocument(); doc.LoadXml(sMsg); string infotype = doc.SelectSingleNode("xml").SelectSingleNode("InfoType").InnerText; string componentVerifyTicket = doc.SelectSingleNode("xml").SelectSingleNode("ComponentVerifyTicket").InnerText; switch (infotype) { case "component_verify_ticket": LogHelper.Info("ticket:" + componentVerifyTicket);//这里就拿到了component_verify_ticket Response.Write("success"); Response.End(); break; case "unauthorized"://用户取消授权 Response.End(); break; } }
第二步获取componet_access_token
private static ResponseComponentToken GetComponentToken(string appid,string appsecret,string verifyticket) { var urlFormat = "https://api.weixin.qq.com/cgi-bin/component/api_component_token"; object data = null; data = new { component_appid = appid, component_appsecret = appsecret, component_verify_ticket = verifyticket }; return CommonJsonSend.Send<ResponseComponentToken>("", urlFormat, data); }
OK。这里pre_auth_code就不罗列了,可以用程序调,也可以用postman调用。
到这里,拿到pre_auth_code就可以点击上面的授权地址生成二维码,扫码。授权结束。有点费劲!!!
代公众号网页授权
对接第三方平台后,网页授权还是分为两种方式,静默方式只能拿到openid、需要用户授权的可以拿到更多的用户信息。实现方式相比公众号略有不同:
这里做开发时我用senparc SDK, 参数包括公众号appid、第三方平台appid、第三方平台accesstoken。
OAuthAccessTokenResult result = OAuthApi.GetAccessToken(appid, compAppid, compAccessToken, code);
代公众号处理消息和事件
创建第三方平台时填写了消息和事件接收url。第三方平台会把用户和微信互动的消息和事件转发到次url。也就是在这里你可以处理具体的消息和事件,比如关注、取消关注、发送文本消息、图片消息。 这里和公众号处理消息不同的地方在于回复用户的消息全部要加密。加密方式同verify_ticket获取。
这里不需要再自己封装互动的消息和事件。直接用senparcSDK的CustomerMessageHandler处理即可。 最后回复用户消息时需要用到加密消息:FinalResponseDocument。可以参考senparcSDK demo。
if (Request.HttpMethod.ToLower() == "post") { var postModel = new PostModel() { Signature = Request.QueryString["signature"], Msg_Signature = Request.QueryString["msg_signature"], Timestamp = Request.QueryString["timestamp"], Nonce = Request.QueryString["nonce"], EncodingAESKey = sEncodingAESKey, Token = sToken, AppId = sAppID }; var maxRecordCount = 10; var messageHandler = new CustomMessageHandler(Request.InputStream, postModel, maxRecordCount); try { //messageHandler.RequestDocument.Save( // Server.MapPath("~/App_Data/" + DateTime.Now.Ticks + "_Request_" + // messageHandler.RequestMessage.FromUserName + ".txt")); messageHandler.Execute();//执行微信处理过程(关键) //messageHandler.ResponseDocument.Save( // Server.MapPath("~/App_Data/" + DateTime.Now.Ticks + "_Response_" + // messageHandler.ResponseMessage.ToUserName + ".txt")); Response.Output.Write(messageHandler.FinalResponseDocument.ToString()); //Response.Write("success"); return; } catch (Exception ex) { LogHelper.Error(ex.Message,ex); } finally { Response.End(); } }
参考资料
http://www.cnblogs.com/szw/archive/2013/05/14/weixin-course-index.html
https://www.cnblogs.com/sujingnan/p/4418882.html
http://www.cnblogs.com/iCoffee/p/4815746.html
以上是关于多量平台怎么对接的主要内容,如果未能解决你的问题,请参考以下文章