ThirdServiceManager SDK
TSM
gitee地址
新博客地址
快速开始
嗯,这是一个php
的SDK
首先,我们需要加载tsm文件,ThirdServiceManager.php文件需要开发者自行加载,其他的文件tsm会自动加载。
require ThirdServiceManager.php
tsm的使用非常简单,配置好的tsm只需要两行代码就可以调用我们需要的第三方服务。
$service = \TSM\ThirdServiceManager::instance('serviceName');
$response = $service->execute('apiName', $params);
serviceName是配置文件中服务配置的key值,用来标记一个服务的配置。
apiName是配置文件中api配置的key值,用来标记一个api的配置。
$params是一个array,里面存放着此api需要的请求参数。
下一小节来聊下配置文件如何编写。
配置文件说明
配置文件是一个array
return array ('zhifubao' => array(),'weixin' => array(),// ..
);
其中 zhifubao
就是 serviceName
,每一个服务的相关配置放在对应 array
里面。
'zhifubao' => array('service' => array(),'apis' => array(),),'weixin' => array(),// ..
);
在单个服务的配置里面有两个 array
,其中 service
表示服务的通用配置,apis
表示服务中各个api的配置
'zhifubao' => array('service' => array('dev' => array(// 网关地址'host' => 'http://dev.example.com:10099',// 签名salt值'signKey' => '9efa342d13496cce8da058dc5830096d',),'test' => array(// 网关地址'host' => 'http://test.example.com:10099',// 签名salt值'signKey' => '9efa342d13496cce8da058dc5830096d',),'pdtest' => array(// 网关地址'host' => 'http://pdtest.example.com',// 签名salt值'signKey' => '9efa342d13496cce8da058dc5830096d',),'product' => array(// 网关地址'host' => 'http://www.example.com',// 签名salt值'signKey' => '9efa342d13496cce8da058dc5830096d',),),'apis' => array(/** 每一个key表示api别名, 在调用第三方服务时需要用到*/'detail' => array(// api'path' => '/zeus/qxd/resale/order/detail',// 请求方法, 支持值: 'get', 'post''method' => 'get',// 接口请求重试次数, 不能是负数, 默认3次'retryCount' => '4',),'check' => array('path' => '/zeus/qxd/resale/order/detail/check','method' => 'get',),'confirm' => array('path' => '/zeus/qxd/resale/order/detail/confirm','method' => 'get',),),),'weixin' => array(),// ..
);
service
中,通过键值标记不同的开发环境,具体我们会在环境切换
小结讨论。每个键值包含若干值。
键值 | 说明 | 默认值 |
---|---|---|
host | 服务地址 | null |
开发者也可以自定义其他配置,通过 BaseService
中的 getCommonConfig
方法获取,具体我们在 第三方服务管理扩展
讨论。
apis
中,包含了此服务所有api的配置。通过键值表示此api的别名,array的内容包含若干值。
键值 | 说明 | 默认值 |
---|---|---|
path | 接口path | null |
method | 请求方式 | post |
retryCount | 请求次数 | 3 |
开发者也可以自定义其他配置,通过 BaseService
中的 getApiConfig
方法获取,具体我们在 第三方服务管理扩展
讨论。
这样,一个第三方服务就对接完成了
环境切换
对接第三方服务,一般都会有两三套环境。在不同的环境上,地址以及签名salt值等都会有差别。在配置中可以通过 service
下的key值来切换不同的环境。
'zhifubao' => array('service' => array('dev' => array(// 网关地址'host' => 'http://dev.example.com:10099',// 签名salt值'signKey' => '9efa342d13496cce8da058dc5830096d',),'test' => array(// 网关地址'host' => 'http://test.example.com:10099',// 签名salt值'signKey' => '9efa342d13496cce8da058dc5830096d',),'pdtest' => array(// 网关地址'host' => 'http://pdtest.example.com',// 签名salt值'signKey' => '9efa342d13496cce8da058dc5830096d',),'product' => array(// 网关地址'host' => 'http://www.example.com',// 签名salt值'signKey' => '9efa342d13496cce8da058dc5830096d',),),'apis' => array(// .. ),),'weixin' => array(),// ..
);
诸如dev、test之类的值,可以通过配置文件中的APP_ENV来指定。
define(APP_ENV, 'dev');
tsm会根据APP_ENV来切换环境。
推荐使用如下方式来指定APP_ENV的值,在php.ini中自定义一个tsm.env的值,通过get_cfg_var函数来获取这个值。这样可以更灵活的指定环境而不需要修改代码。
define(APP_ENV, get_cfg_var(tsm.env)); // tsm.env 为php.ini中增加的一个自定义的配置值
第三方服务管理扩展
访问第三方接口一般需要数据签名或者数据加解密来认证,tsm
提供了灵活的方式来扩展程序。
在 tsm
的services文件中,新建一个名为、***Service.php的文件并完成一个同名的类,此类需要继承BaseService。
注意
***
要跟配置文件中的拼写serviceName
保持一致并且开头字母大写,例如配置的serviceName为 ‘example’,那么新建的文件名字为ExampleService.php,类名为class ExampleServcie
开发者可以重写 generateParams
方法以及 handleResponse
方法。
在 generateParams
方法中,可以进行数据发送前的数据重新组装,签名计算,数据加密等操作。
在 handleResponse
方法中,可以进行数据返回后的数据验签,数据解密等操作。
另外,BaseService提供了如下不可重写的方法来读取通用配置和api配置。
方法名称 | 参数 | 返回值 | 作用 |
---|---|---|---|
getCommonConfig | 配置key | 配置值 | 获取自定义的通用配置 |
getApiConfig | api key | api配置值(array) | 获取api相关配置数组 |
基本
项目介绍
对接第三方接口SDK
tsm, Third Services Manager 第三方服务管理器, 通过配置的方式管理多个第三方服务,适用于较为复杂的多系统交互场景
软件架构
软件架构说明
安装教程
- 下载tsm包到项目任意目录
- require ThirdServiceManager.php文件
使用说明
- 复制配置文件
config.default.php
为config.php
, 添加第三方服务的配置信息 - 使用配置中的第三方服务key为参数实例化一个tsm
- 调用tsm的execute方法来调用需要的第三方服务api, 参数为配置的api的key和api要求的参数
- 可以参照example.php来使用tsm
ThirdServiceManager SDK相关推荐
- 使用第三方SDK(如微信、qq、快看、头条等),调用接口405 Method Not Allowed
使用第三方SDK(如微信.qq.快看.头条等),调用接口405 Method Not Allowed 错误描述:postman请求正常,但客户端调用后接口没有反应,但返回了405错误. 解决方法:第三 ...
- 消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法
消除安卓SDK更新时的"https://dl-ssl.google.com refused"异常的方法 消除安卓SDK更新时的"https://dl-ssl.google ...
- HiCar SDK概述
HiCar SDK概述 HUAWEI HiCar SDK 是 HUAWEI HiCar(以下简称 HiCar )为汽车硬件设备提供的软件开发工具包,为汽车硬件厂商接入 HiCar 提供应用 API 接 ...
- NVIDIA空中导航SDK改造5G通信
NVIDIA空中导航SDK改造5G通信 Transforming Next-Generation Wireless with 5T for 5G and the NVIDIA Aerial SDK N ...
- 在Lumen中引入钉钉SDK
最近在用Lumen开发钉钉企业内部应用,需要调用钉钉的SDK.不得不说,钉钉开发文档写的真是感人,开发的时候那是相当刺激.在使用SDK的时候遇到不少坑,钉钉的文档写的不是很详细,记录下在Laravel ...
- HarmonyOS开发工具DevEcoStudio 的下载以及运行(包含下载开发工具,sdk,模拟机,以及运行第一个应用你好,世界)
开发工具下载 首先打开HarmonyOS 官网 地址链接 向下滑动一下就能看到开发工具DevEcoStudio 了,点击下载 下载之后是一个压缩包(我这里下载的windos版本的) 解压之后有一个.e ...
- Android SDK 路径修改
今天早上感觉电脑有点卡 就修改了SDK的安装路径 这里记录下现在的修改方法 现在android studio 安装的时候sdk 默认下载路径是c盘 AppDate -->android -- ...
- android 调用百度sdk点位当前城市
参考地址: http://lbsyun.baidu.com/index.php?title=android-locsdk/guide/get-location/address 百度的sdk定位 dem ...
- android sdk安装
file 文件 ---setting ,或者用 ctrl+alt+s 快捷键打开界面,如下图 接着如下 标记一,可以更改sdk的问题位置的, 选择自己需要点击线面的Apply 这个时间可能就需要久一点 ...
最新文章
- ASP.NET 开发小技巧 (持续更新)
- python人脸识别毕业设计-Python 40行代码实现人脸识别功能
- s:if的用法(判断用户是否登录过了的操作)
- [1.1]XMI 与UML结合开发企业应用中业务模型
- 新款苹果电脑_苹果真牛!iPhone的软件,苹果电脑上也照样可用了
- 深度学习数据驱动_利用深度学习实现手绘数据可视化的生成
- JavaScript 22岁生日快乐!
- ubuntu server 下使用subversion的总结【原创】
- ASP.NET MVC 使用 Log4net 记录日志
- Mysql主从占用大量cpu_Mysql占用过高CPU时的优化手段
- java更改svg图片颜色_如何使用Leaflet库填充SVG图像中的颜色
- c语言输入字符输出数字,C语言——输入一个字符串,将连续数字字符转换为数字...
- win10计算器rsh_win10 自带计算器快捷键有哪些_windows10计算器快捷键汇总
- 智能数字看板解决方案
- Windows 10 应用创建模糊背景窗口的三种方法
- 求出本周是第几周,本周的周一和周日时间
- js array 添加对象_不可不知的 Vue.js 列表渲染
- 查询mysql的版本
- 《scrum要素》读书笔记工作总结
- PEP代码规范简单总结