本篇文章给大家谈谈工具类api接口平台,以及网站api接口 工具对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
今天给各位分享工具类api接口平台的知识,其中也会对网站api接口 工具进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
开放平台的主流平台
随着Facebook通过开放平台而一炮走红,全球各大互联网公司开始竞相推出自己的开放平台战略,国内外对开放平台的前景一片看好。
百度开放平台是基于框计算先进技术和服务理念,而提供的开放数据分享暨对接平台。通过该平台,广大站长和开发者可以提交结构化的数据或资源,并在搜索结果中直接展现。
对用户而言,只要在“框”中输入服务需求,系统就能准确识别,并将其分配给最优的内容提供者,最终返回给用户最精准的结果。这种智能的互联网需求交互模式,以及简单可依赖的实现机制,称之为“框计算”。
百度搜索开放平台是一个基于百度网页搜索的开放的数据分享平台,广大站长和开发者,
可以直接提交结构化的数据到百度搜索引擎中,实现更强大、更丰富的应用,使用户获得更好
的搜索体验,并获得更多有价值的流量。
百度连接开放平台基于OAuth2.0授权协议,向所有第三方开放了百度的账号体系、好友关系链以及相关产品线的核心数据接口。通过该平台,所有第三方网站只需通过百度账号就可以登录其网站,而百度应用开放平台的开发者还可以在其IFrame应用中获取百度登录用户的基本资料和好友关系等数据。目前,已有搜狐微博、奇艺网、拉手网、天极网等加入。2011年7月25日上午,百度连接开放平台已在百度开发者平台上发布。
微博开放平台是一个基于新浪微博客系统的开放的信息订阅、分享与交流平台。微博开放平台为您提供了海量的微博信息、粉丝关系、以及随时随地发生的信息裂变式传播渠道。
广大开发者或网站只要登录平台网站并创建应用,即可通过平台开放接口(Open API)对微博系统进行读写,挖掘微博系统的新功能与新玩法。
用微博账号登录:
经过简单的代码整合,并在您的网站上放置微博登录按钮,您的网站用户就能够使用微博账号进行登录。网站可以获取当前用户的用户名、头像图片、当前用户的粉丝和关注对象列表。您可以整合现有的用户账户系统或者直接替换成微博的账户系统,帮助您提升网站的用户注册量和提升网站访问数据。
使用OAuth的授权机制进行开发,在网站的显著位置添加“与新浪微博连接”的功能,让用户与能够直接点击并登录。
分享与动态:
新浪微博现有的用户传播体系非常完整,好友之间通过大量的信息分享带来病毒式的传播。平台提供了分享按钮和动态展现插件,让你仅仅通过几行HTML代码就能够在你的网站上加入社交特性。分享的内容也会在微博网站上展现,用户点击链接后可直接进入相关内容。我们也提供了大量的 API接口帮你实现更多的特性。
目前,开心网开放平台分为社交游戏类组件和实用工具类组件这两种,鼓励用户和开心网共建社交化综合网络。
现阶段,开心网的开放平台主要提供以下服务:OpenID、开放API、好友动态发布、组件实验室、转帖部件、粉丝部落。
只要用户将自己的产品投放到组件实验室,运营数据达到开心网设定的标准,就可以正式升级为第三方组件,供9000多万开心网网友尝试和使用。
人人网开放平台(Renren Open Platform)是面向开发者的开放平台,中国最大的SNS开放平台。拥有丰富的API搜狐博客开放模块(Sohu Open Widget,以下简称SOW)是一个由搜狐公司推出、基于UWA(Universal Widget API)规范、应用于多个平台的Widget标准。
腾讯财付通开放平台是中国领先的第三方在线支付平台财付通全新打造的一个应用平台,通过这个平台,第三方开发商的应用可以通过QQ钱包等渠道,被1亿财付通用户、甚至10亿QQ用户所使用。开放平台上的应用是由财付通或第三方开发商开发的,可以为用户提供独立的、完整的电子商务服务的应用程序。
腾讯社区开放平台是基于QQ空间、朋友社区(QQ校友)两大社交网络的开放平台。
WebQQ开放平台是第一个以应用为核心的腾讯应用平台。 开发者可以通过开放接口构建你心中的最潮的应用!给亿万人分享! 在这里,每一个开发者的每一个应用都将有平等分享腾讯亿万用户机会,各种类型的应用都可以在这里有的放矢!WebQQ开放平台上的应用是指由WebQQ或第三方开发商开发的,可以为用户提供有用、新潮的应用程序。 用户可以从WebQQ点击进入应用市场,看到所有的应用。
根据腾讯官方提供的视频,Qplus提供的功能是将腾讯制作的一些Widget直接在桌面运行,这将对360桌面、以及之前的鱼鱼桌面秀等Widget,甚至Adobe air都形成潜在冲击。
在演示视频中,用户可以切换到“Q+”桌面以替代windows桌面,用Widget替代windows程序,腾讯借壳搭建的“操作系统”初具雏形。
视频显示,腾讯很可能将该功能捆绑进QQ客户端。如果说之前的WebQQ是腾讯的一个尝试,那么现在随着QQ客户端的捆绑和与系统的更紧密结合,腾讯的新战略将更加强制性的影响到广大QQ用户。
根据官方介绍,“Q+”是一个基于Windows系统的开放式应用平台,当用户一键切换到“Q+”后,它将接管原有的Windows桌面。通过它,用户可以便捷地进入互联网丰富多彩的世界,享受到第三方应用商提供的丰富的互联网应用。
初一看Q+和自家的WebQQ以及其他桌面类软件(360桌面等)比较相似,但就目前来看,Q+的野心似乎更加庞大。据了解,“腾讯将尝试以API接口的形式通过Q+向第三方应用商提供如内容分享、文件传输、语音视频等核心功能组件,第三方应用商则可通过这个平台进行调用,将这些用户使用最多、最喜爱的核心功能植入到创新应用中,从而直接服务于超过6.47亿的QQ用户创造更大的价值”。一旦这种合作形式步入正轨,也就意味着Q+平台上的应用数量将不成问题,无论是微博、在线视频、即时交流这些热门应用还是其他互联网应用,只需要一个Q+平台即可实现。 想象一下,如果腾讯将Q+整合进QQ客户端或者和WebQQ打通(相信这个可能性会相当高),QQ用户将自然而然成为Q+平台用户,几乎不需要额外使用成本,接受起来也会比较容易。腾讯若能进一步充分利用云计算,将用户的Q+桌面同步到服务器,就可以大大降低对于操作系统的依赖。这也意味着将来无论你到哪里,只要有一台能上网的电脑,登录Q+平台后就和自己的电脑相差无几了。 腾讯WebOS?没错,Q+平台的推出,已经给我们展示了腾讯WebOS的基本雏形,从它准备开放平台API接口这一举动就可以猜想到Q+的长远目标。虽然目前还需要依靠Windows平台,但是谁知道将来会不会像ChromeOS那样发展成为一个完整的硬件+基本UI界面+Web应用的腾讯OS呢?
更多参见Q+平台词条。
淘宝开放平台项目是淘宝(中国)软件有限公司面向第三方应用开发者,提供API接口和相关开发环境的开放平台。软件开发者可通过淘宝API来获取淘宝用户信息(卖方和卖方用户信息,私有信息需要授权)、淘宝商品信息(全淘宝超过1亿个商品的名称、类目、型号、介绍等信息)、淘宝商品类目信息(全淘宝商品索引及分类明细)、淘宝店铺信息(全淘宝店铺信息)、淘宝交易明细信息(在取得用户授权的情况下,查询每笔交易的详细情况)、淘宝商品管理(淘宝商品的上传、编辑、修改等接口)等信息,并建立相应的电子商务应用。同时,作为淘宝开放平台TOP项目的唯一合作平台——阿里软件平台在其中也扮演着重要的角色,它将为开发者提供整套的淘宝API的附加服务:测试环境、技术咨询、产品上架、版本管理、收费策略、市场销售、产品评估等等。
360web应用开放平台,基于360海量用户资源以及强大的客户端平台,是360大开放平台战略的重要开放途径之一,它致力于与互联网同仁,以及广大第三方开发者,一道建立真正开放、稳定,良性的应用生态产业链。360web应用开放平台,旨在提高国内web应用开发的原创动力,为广大第三方开发者提供可普遍参与的应用收益模式。
YY开放平台(YY Open Platform)是YY语音扩展业务中最为重要的一环,通过为各类开发者提供技术支持与运营支持,与开发者共同发展,为开发者和YY用户创造更有价值的在线互动世界。多玩YY开放平台(YY Open Platform)是基于YY频道各类工会组织娱乐、群体互动、游戏、交友、竞技、活动的业务平台,提供外部合作伙伴参与服务YY用户的各类原材料,例如API、帐号体系、数据通道、数据安全等。供外部合作伙伴开发应用并接入。YY开放平台是YY基础服务重要的开放途径,通过与合作方的共同努力,为YY用户提供更具特色的、以在线语音为主的在线互动平台。平台特点
群体性平台用户分布都是以工会形式,用户参与都是以一个大群体方式参与应用场景。用户更具组织特性。实时性YY开放平台在具备其他开放平台的异步传递(交互)特性的同时,以工会为单位的用户更具有高度的实时特性,在多场景下用户交互行为更倾向于实时交互,能让互动场景更加连贯顺畅,在实时互动的场景下,应用对用户的粘性更高。语音,视频YY开放平台能为应用开发方提供最为便捷的语音交互能力与视频能力,借助强大的YY语音功能,使得应用开发者能够发挥无数想象,创造出具有高度吸引力的应用。组织,运营YY开放平台为开发者提供更多的运营支持,每个工会的会长参与应用的运营与推广,并且YY的世界中特有的主持人身份,帮助维持秩序与营造气氛。 每个应用在达到一定的条件后更具有应用自己的官方短位频道ID,让忠实用户更好的交流,帮助应用更好的举办各种类型的推广活动。
如何重构出这么优雅后台 API 接口
Hello,早上好,我是阿粉~
最近偶然间在看到 Spring 官方文档的时候,新学到一个注解 @ControllerAdvice ,并且成功使用这个注解重构我们项目的对外 API 接口,去除繁琐的重复代码,使其开发更加优雅。
展示具体重构代码之前,我们先来看下原先对外 API 接口是如何开发的。
这个 API 接口主要是用来与我们 APP 交互,这个过程我们统一定义一个交互协议,APP 端与后台 API 接口统一都使用 JSON 格式。
另外后台 API 接口对 APP 返回时,统一一些错误码,APP 端需要根据相应错误码,在页面弹出一些提示。
下面展示一个查询用户信息返回的接口数据:
code 代表对外的错误码, msg 代表错误信息, result 代表具体返回信息。
前端 APP 获取这个返回信息,首先判断接口返回 code 是否为 「000000」 ,如果是代表查询成功,然后获取 result 信息作出相应的展示。否则,直接弹出相应的错误信息。
下面我们来看下,重构之前的,后台 API 层的如何编码。
上面的代码其实很简单,内部统一封装了一个工具类 APIResult ,然后用其包装具体的结果。
除了这个以外,还定义一个异常对象 APPException ,用来统一包装内部的各种异常。
上面的代码很简单,但是呢可以说比较繁琐,重复代码也比较多,每个接口都需要使用 try...catch 包装,然后使用 APIResult 包括正常的返回信息与错误信息。
第二呢,接口对象只能返回 APIResult ,真实业务对象只能隐藏在 APIResult 中。这样不太优雅,另外不能很直观知道真实业务对象。
下面我们开始重构上面的代码,主要目的是去除重复的那一坨 try...catch 代码。
这次重构我们需要使用Spring 注解 @ControllerAdvice 以及 ResponseBodyAdvice ,我们先来看下重构的代码。
首先我们需要实现 ResponseBodyAdvice ,实现我们自己的处理类。
实现上面的接口,我们就可以在 beforeBodyWrite 方法里,修改返回结果了。
上面代码中,只是简单使用 APIResult 包装了返回结果,然后返回。其实我们还可以在此增加一些额外逻辑,比如说如接口返回信息由加密的需求,我们可以在这一层统一加密。
另外,这里判断一下 body 是否 APIResult 类,如果是就直接返回,不做修改。
这么做一来兼容之前的老接口,这是因为默认情况下,我们自己实现的 CustomResponseAdvice 类,将会对所有的 Controller 生效。
如果不做判断,以前的老接返回就会被包装了两层 APIResul ,影响 APP 解析。
除此之外,如果大家担心这个修改对以前的老接口有影响的话,可以使用下面的方式,只对指定的方法生效。
首先自定义一个注解,比如说:
然后将其标注在需要改动的方法中,然后我们在 ResponseBodyAdvice#supports 中判断具体方法上有没有自定义注解 CustomResponse ,如果存在,返回 true ,这就代表最后将会修改返回类。如果不存在,则返回 false ,那么就会跟以前流程一样。
上面的代码重构之后,将重复代码抽取了出来,整体的代码就剩下我们的业务逻辑,这样就变得非常简洁优雅。
不过,上面的重构的代码,还是存在问题,主要是异常的处理。
如果上面的业务代码抛出了异常,那么接口将会返回堆栈错误信息,而不是我们定义的错误信息。所以下面我们这个,再次优化一下。
这次我们主要需要使用 @ExceptionHandler 注解,这个注解需要与 @ControllerAdvice 一起使用。
使用这个 @ExceptionHandler ,将会拦截相应的异常,然后将会调用的相应方法处理异常。这里我们就使用 APIResult 包装一些错误信息返回。
我们可以使用 @ControllerAdvice 加 ResponseBodyAdvice 拦截返回结果,统一做出一些修改。这样就可以使用的业务代码非常简洁,优雅。
另外,针对业务代码的中,我们可以使用 @ExceptionHandler 注解,统一做一个全局异常处理,这样就可以无缝的跟 ResponseBodyAdvice 结合。
不过这里需要一点,我们实现的 ResponseBodyAdvice 类,一定需要跟 @ControllerAdvice 配合一起使用哦,至于具体原因,下篇文章阿粉分析原来的时候,再具体解释哦。敬请期待哦~

百度地图开放平台使用场景怎么写
写使用百度地图API在哪些场景下运用。百度地图API是为开发者免费提供的一套基于百度地图服务的应用接口,包括JavaScript API、Web服务API、Android SDK、iOS SDK、定位SDK、LBS云等多种开发工具与服务,提供基本地图展现、搜索、定位、逆/地理编码、路线规划、LBS云存储与检索等功能,适用于PC端、移动端、服务器等多种设备,多种操作系统下的地图应用开发。
百度地图API包括地图的基本功能,包括平移,缩放,脱拽等等,还有地图上的控件,比如说我们现在打开地图看一下,我们可以看到就是在地图上定位,缩放等这些功能,还有工具类,图层,本地搜索,公交连锁,步行导航等等功能。
扩展资料
百度地图API是为开发者免费提供的一套基于百度地图服务的应用接口,包括JavaScript API、Web服务API、Android SDK、iOS SDK、定位SDK、车联网API、LBS云等多种开发工具与服务,提供基本地图展现、搜索、定位、逆/地理编码、路线规划、LBS云存储与检索等功能,适用于PC端、移动端、服务器等多种设备,多种操作系统下的地图应用开发。
LBS.云是百度地图针对LBS开发者推出的平台级服务,结合已有的地图API和SDK服务,通过开放服务端存储和计算能力,提供海量位置数据(点、面数据)的实时存储、检索、展示一体化解决方案。
鹰眼提供各端SDK和API供开发者便捷接入,追踪您所管理的车辆/人员等运动物体。基于鹰眼提供的接口和云端服务,开发者可以迅速构建一套完全属于您自己的完整、精准且高性能的轨迹管理系统,可应用于车队管理、人员管理等领域。
百度地图Web服务API为开发者提供http/https接口,即开发者通过http/https形式发起检索请求,获取返回json或xml格式的检索数据。用户可以基于此开发JavaScript、C#、C++、Java等语言的地图应用。
百度地图URI API是为开发者提供直接调起百度地图产品(百度地图手机客户端)以满足特定业务场景下应用需求的程序接口,开发者只需按照接口规范构造一条标准的URI,便可在PC和移动端浏览器或移动开发应用中调起百度地图产品,进行地图展示和检索、线路查询、导航等功能,无需进行复杂的地图功能开发。 该套API免费对外开放,无需申请ak。
百度地图车机版open control调用协议是面向各OEM车企、车内相关零部件供应商、车机/车镜系统方案商、第三方开发者提供的一种可被第三方(系统或应用)调用百度地图车机版(以下简称bdmap)的方法,以满足某些特定业务场景下需求的接口。
参考资料:百度地图开发文档-LBS云
参考资料:百度地图开发文档-鹰眼轨迹服务
参考资料:百度地图开发文档-Web服务API
参考资料:百度地图开发文档-地图调起API
参考资料:百度地图开发文档-百度地图车机版
如何保证API接口安全?
在实际的业务开发过程中,我们常常会碰到需要与第三方互联网公司进行技术对接,例如支付宝支付对接、微信支付对接、高德地图查询对接等等服务,如果你是一个创业型互联网,大部分可能都是对接别的公司api接口。
当你的公司体量上来了时候,这个时候可能有一些公司开始找你进行技术对接了,转变成由你来提供api接口,那这个时候,我们应该如何设计并保证API接口安全呢?
最常用的方案,主要有两种:
其中 token 方案,是一种在web端使用最广的接口鉴权方案,我记得在之前写过一篇《手把手教你,使用JWT实现单点登录》的文章,里面介绍的比较详细,有兴趣的朋友可以看一下,没了解的也没关系,我们在此简单的介绍一下 token 方案。
从上图,我们可以很清晰的看到,token 方案的实现主要有以下几个步骤:
在实际使用过程中,当用户登录成功之后,生成的token存放在redis中时是有时效的,一般设置为2个小时,过了2个小时之后会自动失效,这个时候我们就需要重新登录,然后再次获取有效token。
token方案,是目前业务类型的项目当中使用最广的方案,而且实用性非常高,可以很有效的防止黑客们进行抓包、爬取数据。
但是 token 方案也有一些缺点!最明显的就是与第三方公司进行接口对接的时候,当你的接口请求量非常大,这个时候 token 突然失效了,会有大量的接口请求失败。
这个我深有体会,我记得在很早的时候,跟一家中、大型互联网公司进行联调的时候,他们提供给我的接口对接方案就是token方案,当时我司的流量高峰期时候,请求他们的接口大量报错,原因就是因为token失效了,当token失效时,我们会调用他们刷新token接口,刷新完成之后,在token失效与重新刷新token这个时间间隔期间,就会出现大量的请求失败的日志,因此在实际API对接过程中,我不推荐大家采用 token方案。
接口签名,顾名思义,就是通过一些签名规则对参数进行签名,然后把签名的信息放入请求头部,服务端收到客户端请求之后,同样的只需要按照已定的规则生产对应的签名串与客户端的签名信息进行对比,如果一致,就进入业务处理流程;如果不通过,就提示签名验证失败。
在接口签名方案中,主要有四个核心参数:
其中签名的生成规则,分两个步骤:
参数2加密结果,就是我们要的最终签名串。
接口签名方案,尤其是在接口请求量很大的情况下,依然很稳定。
换句话说,你可以将接口签名看作成对token方案的一种补充。
但是如果想把接口签名方案,推广到前后端对接,答案是:不适合。
因为签名计算非常复杂,其次,就是容易泄漏appsecret!
说了这么多,下面我们就一起来用程序实践一下吧!
就像上文所说,token方案重点在于,当用户登录成功之后,我们只需要生成好对应的token,然后将其返回给前端,在下次请求业务接口的时候,需要把token带上。
具体的实践,也可以分两种:
下面,我们介绍的是第二种实现方式。
首先,编写一个jwt 工具。
接着,我们在登录的时候,生成一个token,然后返回给客户端。
最后,编写一个统一拦截器,用于验证客户端传入的token是否有效。
在生成token的时候,我们可以将一些基本的用户信息,例如用户ID、用户姓名,存入token中,这样当token鉴权通过之后,我们只需要通过解析里面的信息,即可获取对应的用户ID,可以省下去数据库查询一些基本信息的操作。
同时,使用的过程中,尽量不要存放敏感信息,因为很容易被黑客解析!
同样的思路,站在服务端验证的角度,我们可以先编写一个签名拦截器,验证客户端传入的参数是否合法,只要有一项不合法,就提示错误。
具体代码实践如下:
签名工具类 SignUtil :
签名计算,可以换成 hamc 方式进行计算,思路大致一样。
上面介绍的token和接口签名方案,对外都可以对提供的接口起到保护作用,防止别人篡改请求,或者模拟请求。
但是缺少对数据自身的安全保护,即请求的参数和返回的数据都是有可能被别人拦截获取的,而这些数据又是明文的,所以只要被拦截,就能获得相应的业务数据。
对于这种情况,推荐大家对请求参数和返回参数进行加密处理,例如RSA、AES等加密工具。
同时,在生产环境,采用 https 方式进行传输,可以起到很好的安全保护作用!
求淘宝开放平台TOP使用指南?
创建新应用 在创建新应用之前,您须已经注册成为TOP(淘宝开放平台)开发者。 如您还不是?请点击“申请成为开发者”(目前可通过赢在淘宝活动申请成为开发者)。 创建新应用,就会获得应用的App Key和App Secret。 在创建新应用的过程中,您会被告知要选择应用类型,如果您还未确定应用类型,请选择WEB应用(B/S模式)下的其他选择项,了解创建新应用详细介绍,请点击 直接创建新应用,请点击 构建您的解决方案 我们以构建“卖家批量修改宝贝模板”为例,在开发您的第一个应用:“卖家批量修改宝贝模板”之前,您非常有必要分析一下需求: 问题A:这个应用的目标用户是谁? 毫无疑问是在淘宝上开店的卖家群体,简称卖家。 除了卖家工具开发外,您还可以有更多的淘宝开放平台应用方向,点击了解更多 问题B:这个应用部署在哪里? 部署在您的独立第三方网站,或提供工具类客户端下载,亦或直接集成到卖家的独立B2C网站上。 问题C:这个应用会涉及到哪些具体的API调用? 首先,需要确认批量修改的是卖家店铺出售中的宝贝,或仓库中的宝贝,亦或二者。 假设修改的是仓库中的宝贝,我们需要先查询符合修改规则的商品列表,则需要调用的API是taobao.items.inventory.get 。 其次,更新商品信息的API是taobao.item.update 。 问题D:我的应用能调用任意API吗? 您需要为新应用申请一个角色。 目前淘宝开放平台提供的应用角色,包括公开查询应用、买家应用、卖家应用、商家应用、高级应用、社区应用、媒体应用、淘宝客应用以及专业应用, 点击了解每一类角色赋予的业务含义。 问题E:访问卖家仓库中的宝贝或修改宝贝信息是否需要卖家授权? 当然需要,淘宝开放平台制定了比较完整的API接口访问授权策略,根据被访问的API涉及的操作以及数据隐私性,分成三个访问级别。 上个问题中涉及的2个API,都是属于API访问级别是"须用户登录"类型的,必须得到卖家的授权。 详细API访问级别定义,请点击 问题F:调用需要授权的API,比如卖家授权,在API具体调用方式上有哪些要求? 首先,调用授权类API,API系统级输入参数需要增加一个参数:session,session是淘宝开放平台用来验证用户身份的字符串。 其次,您的应用无法直接获得用户的session,必须由用户主动在您的应用中输入授权码,您的应用通过这个授权码访问淘宝开放平台进而间接获得用户的session 。 问题G:用户如何获取授权码以及您的应用如何获取session? 问题B中不同的应用类型影响获取session的方法,请点击这个链接 ,详细了解获取授权码和session的方法 问题H:我的应用能直接访问淘宝网线上的数据吗? 您的应用必须在测试环境下通过以后才能申请进入正式环境下测试。 特别提醒,正式环境测试在申请生效后,请在5天内完成测试,否则本应用将返回测试环境开发状态。 点击了解更多测试环境下开发与正式环境下的开发 问题I:正式环境测试通过以后,如何发布我的应用? 您的应用必须在正式环境下测试通过,点击'测试成功,下一步'进入'申请发布',了解审核规则后,点击'申请发布'后进入小二审核中...。 小二将根据您所提交的应用角色权限来进行审核。 参考:公开查询应用、买家应用、卖家应用这3类角色更容易快速通过审核。 注意:请核实您的应用信息,申请发布后将不能再修改,须提交特别审核。
微信的jsapi支付能整合到thinkphp吗
在demo文件夹中:
js_api_call.php:提供了微信jsapi的主要功能
log_.php:提供打印日志功能
notify_url.php:异步通知功能
notify_url.log:异步通知日志
qrcode.js:生成二维码js插件
接下来介绍下WxPayPubHelper文件夹下的文件:
cacert 文件夹是存放微信证书的(PS:具体我还没怎么用证书,虽然下载下来了,证书请在微信商户平台上下载)
SDKRuntimeException.php:这个就是处理异常的、
WxPay.pub.config.php:这个是做一些配置的,稍后会详细讲解
WxPayPubHelper.php:这个其实就是微信支付的工具类,对于初学者只要知道怎么用他里面的方法就够了
OK,了解了微信官方提供的文件,我们就可以开始整合到TP中了,废话不多说,这就开始!
step1:将demo中的WxPayPubHelper整个文件夹都复制到TP的Vendor目录下,像我这样:
step2:配置WxPay.pub.config.php文件:
这里的配置都有注释,如果还有不懂或者配置出现问题可以留言提问
同时我把微信的这个配置放到了TP的config中,这一步大家可以随意
<?php
return array(
//'配置项'='配置值'
define('WEB_HOST', '这是您的网站域名地址'),
/*微信支付配置*/
'WxPayConf_pub'=array(
'APPID' = '您的APPID',
'MCHID' = '您的商户ID',
'KEY' = '商户秘钥',
'APPSECRET' = '您的APPSECRET',
'JS_API_CALL_URL' = WEB_HOST.'/index.php/Home/WxJsAPI/jsApiCall',
'SSLCERT_PATH' = WEB_HOST.'/ThinkPHP/Library/Vendor/WxPayPubHelper/cacert/apiclient_cert.pem',
'SSLKEY_PATH' = WEB_HOST.'/ThinkPHP/Library/Vendor/WxPayPubHelper/cacert/apiclient_key.pem',
'NOTIFY_URL' = WEB_HOST.'/index.php/Home/WxJsAPI/notify',
'CURL_TIMEOUT' = 30
)
);
复制代码
step3:将生成二维码的js放在Public目录下(这里目前用不到,在用扫码支付的情况才用到这个js),将日志文件放在Public目录下:像我这样:
step4:创建控制器:这里创建了一个WxJsAPIController的控制器,这里大家随便起名字,只要这个跟你们在公众平台上的设置相对应就可以(公众平台设置稍后介绍)
下面是控制器的代码部分了,首先初始化控制器,将WxPayPubHelper导入
/**
* 初始化
*/
public function _initialize()
{
//引入WxPayPubHelper
vendor('WxPayPubHelper.WxPayPubHelper');
}
复制代码
接下来是使用统一支付接口,获取prepay_id的方法:
public function jsApiCall()
{
//使用jsapi接口
$jsApi = new \JsApi_pub();
//=========步骤1:网页授权获取用户openid============
//通过code获得openid
if (!isset($_GET['code']))
{
//触发微信返回code码
$url = $jsApi-createOauthUrlForCode(C('WxPayConf_pub.JS_API_CALL_URL'));
Header("Location: $url");
}else
{
//获取code码,以获取openid
$code = $_GET['code'];
$jsApi-setCode($code);
$openid = $jsApi-getOpenId();
}
//=========步骤2:使用统一支付接口,获取prepay_id============
//使用统一支付接口
$unifiedOrder = new \UnifiedOrder_pub();
//设置统一支付接口参数
//设置必填参数
//appid已填,商户无需重复填写
//mch_id已填,商户无需重复填写
//noncestr已填,商户无需重复填写
//spbill_create_ip已填,商户无需重复填写
//sign已填,商户无需重复填写
$unifiedOrder-setParameter("openid",$openid);//商品描述
$unifiedOrder-setParameter("body","贡献一分钱");//商品描述
//自定义订单号,此处仅作举例
$timeStamp = time();
$out_trade_no = C('WxPayConf_pub.APPID').$timeStamp;
$unifiedOrder-setParameter("out_trade_no",$out_trade_no);//商户订单号
$unifiedOrder-setParameter("total_fee","1");//总金额
$unifiedOrder-setParameter("notify_url",C('WxPayConf_pub.NOTIFY_URL'));//通知地址
$unifiedOrder-setParameter("trade_type","JSAPI");//交易类型
//非必填参数,商户可根据实际情况选填
//$unifiedOrder-setParameter("sub_mch_id","XXXX");//子商户号
//$unifiedOrder-setParameter("device_info","XXXX");//设备号
//$unifiedOrder-setParameter("attach","XXXX");//附加数据
//$unifiedOrder-setParameter("time_start","XXXX");//交易起始时间
//$unifiedOrder-setParameter("time_expire","XXXX");//交易结束时间
//$unifiedOrder-setParameter("goods_tag","XXXX");//商品标记
//$unifiedOrder-setParameter("openid","XXXX");//用户标识
//$unifiedOrder-setParameter("product_id","XXXX");//商品ID
$prepay_id = $unifiedOrder-getPrepayId();
//=========步骤3:使用jsapi调起支付============
$jsApi-setPrepayId($prepay_id);
$jsApiParameters = $jsApi-getParameters();
$this-assign('jsApiParameters',$jsApiParameters);
$this-display('pay');
//echo $jsApiParameters;
}
复制代码
这里都是复制微信demo的,改改名字罢了,没什么其他的
接下来是异步通知方法,也是复制的微信demo上的
public function notify()
{
//使用通用通知接口
$notify = new \Notify_pub();
//存储微信的回调
$xml = $GLOBALS['HTTP_RAW_POST_DATA'];
$notify-saveData($xml);
//验证签名,并回应微信。
//对后台通知交互时,如果微信收到商户的应答不是成功或超时,微信认为通知失败,
//微信会通过一定的策略(如30分钟共8次)定期重新发起通知,
//尽可能提高通知的成功率,但微信不保证通知最终能成功。
if($notify-checkSign() == FALSE){
$notify-setReturnParameter("return_code","FAIL");//返回状态码
$notify-setReturnParameter("return_msg","签名失败");//返回信息
}else{
$notify-setReturnParameter("return_code","SUCCESS");//设置返回码
}
$returnXml = $notify-returnXml();
echo $returnXml;
//==商户根据实际情况设置相应的处理流程,此处仅作举例=======
//以log文件形式记录回调信息
// $log_ = new Log_();
$log_name= __ROOT__."/Public/notify_url.log";//log文件路径
log_result($log_name,"【接收到的notify通知】:\n".$xml."\n");
if($notify-checkSign() == TRUE)
{
if ($notify-data["return_code"] == "FAIL") {
//此处应该更新一下订单状态,商户自行增删操作
log_result($log_name,"【通信出错】:\n".$xml."\n");
}
elseif($notify-data["result_code"] == "FAIL"){
//此处应该更新一下订单状态,商户自行增删操作
log_result($log_name,"【业务出错】:\n".$xml."\n");
}
else{
//此处应该更新一下订单状态,商户自行增删操作
log_result($log_name,"【支付成功】:\n".$xml."\n");
}
//商户自行增加处理流程,
//例如:更新订单状态
//例如:数据库操作
//例如:推送支付完成信息
}
}
复制代码
这里我把记录日志的类写到了function.php中:
function log_result($file,$word)
{
$fp = fopen($file,"a");
flock($fp, LOCK_EX) ;
fwrite($fp,"执行日期:".strftime("%Y-%m-%d-%H:%M:%S",time())."\n".$word."\n\n");
flock($fp, LOCK_UN);
fclose($fp);
}
复制代码
好了 其实控制器的方法就这么多,没什么其他的了,下面看一下页面,直接上代码吧:
<!DOCTYPE html
<html
<head
<meta http-equiv="content-type" content="text/html;charset=utf-8"/
<title微信安全支付</title
<script type="text/javascript"
//调用微信JS api 支付
function jsApiCall()
{
WeixinJSBridge.invoke(
'getBrandWCPayRequest',
<?php echo $jsApiParameters; ?,
function(res){
WeixinJSBridge.log(res.err_msg);
alert(res.err_code+res.err_desc+res.err_msg);
//alert("{$jsApiParameters}");
}
);
}
function callpay()
{
if (typeof WeixinJSBridge == "undefined"){
if( document.addEventListener ){
document.addEventListener('WeixinJSBridgeReady', jsApiCall, false);
}else if (document.attachEvent){
document.attachEvent('WeixinJSBridgeReady', jsApiCall);
document.attachEvent('onWeixinJSBridgeReady', jsApiCall);
}
}else{
jsApiCall();
}
}
</script
</head
<body
</br</br</br</br
<div align="center"
<button style="width:210px; height:30px; background-color:#FE6714; border:0px #FE6714 solid; cursor: pointer; color:white; font-size:16px;" type="button" onclick="callpay()" 贡献一下</button
</div
</body
</html
复制代码
无须改动什么,直接复制就好
接下来是微信公众平台上的配置了,这里我遇到过问题,如果有在这里遇到问题的同学请留言,比如出现了access_deined或者access_notallowed等问题,这都可能是因为这里配置不对。
关于工具类api接口平台和网站api接口 工具的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
工具类api接口平台的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于网站api接口 工具、工具类api接口平台的信息别忘了在本站进行查找喔。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
暂时没有评论,来抢沙发吧~