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 第三方服务管理器, 通过配置的方式管理多个第三方服务,适用于较为复杂的多系统交互场景

软件架构

软件架构说明

安装教程

  1. 下载tsm包到项目任意目录
  2. require ThirdServiceManager.php文件

使用说明

  1. 复制配置文件config.default.phpconfig.php, 添加第三方服务的配置信息
  2. 使用配置中的第三方服务key为参数实例化一个tsm
  3. 调用tsm的execute方法来调用需要的第三方服务api, 参数为配置的api的key和api要求的参数
  4. 可以参照example.php来使用tsm

ThirdServiceManager SDK相关推荐

  1. 使用第三方SDK(如微信、qq、快看、头条等),调用接口405 Method Not Allowed

    使用第三方SDK(如微信.qq.快看.头条等),调用接口405 Method Not Allowed 错误描述:postman请求正常,但客户端调用后接口没有反应,但返回了405错误. 解决方法:第三 ...

  2. 消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法

    消除安卓SDK更新时的"https://dl-ssl.google.com refused"异常的方法 消除安卓SDK更新时的"https://dl-ssl.google ...

  3. HiCar SDK概述

    HiCar SDK概述 HUAWEI HiCar SDK 是 HUAWEI HiCar(以下简称 HiCar )为汽车硬件设备提供的软件开发工具包,为汽车硬件厂商接入 HiCar 提供应用 API 接 ...

  4. NVIDIA空中导航SDK改造5G通信

    NVIDIA空中导航SDK改造5G通信 Transforming Next-Generation Wireless with 5T for 5G and the NVIDIA Aerial SDK N ...

  5. 在Lumen中引入钉钉SDK

    最近在用Lumen开发钉钉企业内部应用,需要调用钉钉的SDK.不得不说,钉钉开发文档写的真是感人,开发的时候那是相当刺激.在使用SDK的时候遇到不少坑,钉钉的文档写的不是很详细,记录下在Laravel ...

  6. HarmonyOS开发工具DevEcoStudio 的下载以及运行(包含下载开发工具,sdk,模拟机,以及运行第一个应用你好,世界)

    开发工具下载 首先打开HarmonyOS 官网 地址链接 向下滑动一下就能看到开发工具DevEcoStudio 了,点击下载 下载之后是一个压缩包(我这里下载的windos版本的) 解压之后有一个.e ...

  7. Android SDK 路径修改

    今天早上感觉电脑有点卡 就修改了SDK的安装路径 这里记录下现在的修改方法 现在android studio 安装的时候sdk  默认下载路径是c盘  AppDate -->android -- ...

  8. android 调用百度sdk点位当前城市

    参考地址: http://lbsyun.baidu.com/index.php?title=android-locsdk/guide/get-location/address 百度的sdk定位 dem ...

  9. android sdk安装

    file 文件 ---setting ,或者用 ctrl+alt+s 快捷键打开界面,如下图 接着如下 标记一,可以更改sdk的问题位置的, 选择自己需要点击线面的Apply 这个时间可能就需要久一点 ...

最新文章

  1. ASP.NET 开发小技巧 (持续更新)
  2. python人脸识别毕业设计-Python 40行代码实现人脸识别功能
  3. s:if的用法(判断用户是否登录过了的操作)
  4. [1.1]XMI 与UML结合开发企业应用中业务模型
  5. 新款苹果电脑_苹果真牛!iPhone的软件,苹果电脑上也照样可用了
  6. 深度学习数据驱动_利用深度学习实现手绘数据可视化的生成
  7. JavaScript 22岁生日快乐!
  8. ubuntu server 下使用subversion的总结【原创】
  9. ASP.NET MVC 使用 Log4net 记录日志
  10. Mysql主从占用大量cpu_Mysql占用过高CPU时的优化手段
  11. java更改svg图片颜色_如何使用Leaflet库填充SVG图像中的颜色
  12. c语言输入字符输出数字,C语言——输入一个字符串,将连续数字字符转换为数字...
  13. win10计算器rsh_win10 自带计算器快捷键有哪些_windows10计算器快捷键汇总
  14. 智能数字看板解决方案
  15. Windows 10 应用创建模糊背景窗口的三种方法
  16. 求出本周是第几周,本周的周一和周日时间
  17. js array 添加对象_不可不知的 Vue.js 列表渲染
  18. 查询mysql的版本
  19. 《scrum要素》读书笔记工作总结
  20. PEP代码规范简单总结

热门文章

  1. 09-mysql-分组函数-最大最小总和平均值
  2. dj电商-架构与布局
  3. python-正则表达式1909
  4. archery docker版升级
  5. 中国工程院院士徐宗本:大数据的挑战和问题
  6. Anaconda 安装 ml_metrics package
  7. Android生成keystore方法
  8. 面试:Websocket
  9. Nginx提供静态内容
  10. 如何在Mac上安装Node.js和NPM