xero / xerooauth-php
用于Xero API的PHP类
Requires
- php: >=5.0.0
- ext-curl: *
- ext-openssl: *
This package is auto-updated.
Last update: 2020-03-21 01:49:06 UTC
README
寻找OAuth 2.0?
请查看Xero PHP SDK for OAuth 2.0及其配套的厨房同步应用
寻找OAuth 1.0a?
请查看社区项目https://github.com/calcinai/xero-php
XeroOAuth-PHP (已废弃)
此仓库已被存档,不再审查任何问题或拉取请求。欢迎fork此仓库并与代码一起工作。
用于与Xero OAuth API一起工作的PHP库。
简介
XeroOAuth-PHP是用于Xero API(http://developer.xero.com)的一个示例库。Xero API使用OAuth 1.0a,但我们不推荐将此库用于其他OAuth 1.0a API,因为Xero API具有更高级的实现(RSA-SHA1等),因此具有许多其他API中通常不使用的配置选项。
此库旨在让开发者快速启动OAuth身份验证层,但在将其用于生产环境之前,可能需要对其实施进行一些自定义。
要求
- PHP 5+
- php_curl扩展 - 确保为最新版本(7.30+)
- php_openssl扩展
设置
要设置,您需要修改_config.php文件中的值以符合您自己的需求和应用程序设置,或者查看针对每种不同应用程序类型的自定义示例文件,public.php、private.php或partner.php。
使用方法
在与Xero交互时使用了许多函数
发送请求
请求函数是任何与API通信的核心。您可能希望发送多种类型的请求,所有这些请求都由request()函数处理。
request($method, $url, $parameters, $xml, $format)
参数
- 方法:要使用的API方法(GET、PUT、POST)
- URL:API端点的URL。这由一个特殊函数处理(见下文)
- 参数:参数的关联数组,例如where、order by等(见https://developer.xero.com/documentation/api/requests-and-responses/)
- XML:请求数据(用于PUT和POST操作)
- 格式:响应格式(当前支持xml、json和pdf。注意,PDF并不支持所有端点)
生成URL
创建一个格式正确的请求URL。
url($endpoint, $api)
参数
- 端点:您希望与之交互的端点。注意,除了发票、联系人等API端点之外,还有OAuth端点,如'RequestToken'和'AccessToken'。当指定资源,例如Invoices/$GUID时,您可以通过将GUID附加到基本URL来构建请求。
- API:有两个API:核心(核心会计API)和工资(工资应用API)。默认为核心。
解析响应
一旦您获取到数据,您可以通过parseResponse函数将其转换为可用的东西。
parseResponse($response, $format)
参数
- 响应:要解析的原始API响应
- 格式:支持xml、pdf和json,但不能使用此函数将XML API响应解析为JSON - 必须与请求的响应格式相匹配。
授权
对于使用3方OAuth流程的公共和合作伙伴API类型应用程序,我们需要将用户重定向到Xero以授权API连接。为此,请将用户重定向到如下调用生成的URL:
url("Authorize", '') . "?oauth_token=".$oauth_token."&scope=" . $scope;
附加信息
- oauth_token:这是一个在之前的RequestToken调用中生成的请求令牌
- scope:工资API是一个受权限保护的API,需要逗号分隔的端点列表,应用程序请求访问这些端点,例如 $scope = 'payroll.payrollcalendars,payroll.superfunds,payroll.payruns,payroll.payslip,payroll.employees';
刷新访问令牌
对于合作伙伴API应用程序,其中30分钟访问令牌可以通过API编程刷新,您可以使用refreshToken函数
refreshToken('the access token', 'the session handle')
参数
- 访问令牌:当前访问令牌
- 会话句柄:会话标识符句柄
调试
设置诊断
在您设置过程中,可能会遇到一些配置问题,尤其是对于一些更高级的应用程序类型,如合作伙伴。
为了确保您的配置正确,您可以运行一个诊断函数
diagnostics();
这会返回一个错误消息数组(如果有)。这些是以人类可读的形式,应该足以让您找到正确的方向。如果不,请查看Xero开发者中心和论坛以获取更多详细信息。
在您的生产代码中运行此操作可能是一个糟糕的主意,因为返回的错误只有开发者才能解决,而不是最终用户。
运行时错误
出现错误可能有多种原因:数据验证、令牌问题、授权撤销等。检查HTTP响应代码及其相关错误字符串非常重要。
示例代码中包含一个非常基本的错误输出函数,该函数输出与错误相关的所有可用信息。在将结果公开于生产环境之前,需要对结果进行大量整理。
outputError($object);
响应助手
理解从API接收到的消息类型可能很有用。在每个非成功的响应中,都会返回一个助手元素
- TokenExpired: 这表示访问令牌已过期。如果您使用的是合作伙伴API类型的应用程序,则可以自动更新它,或者如果使用的是公共应用程序,则提示用户重新认证
- TokenFatal: 在这种情况下,令牌处于无法更新的状态,用户将需要重新认证
- SetupIssue: 连接设置/配置中存在问题 - 检查诊断功能
待办事项
- 从报告读取值
- 更好的WHERE和ORDER示例
- 将OAuthsimple更改合并回父存储库
许可 & 信用
此软件根据MIT许可发布。
OAuthSimple
OAuthsimple.php包含来自United Heroes的OAuthSimple PHP类的少量适配。
tmhOAuth
XeroOAuth类基于来自tmhOAuth库的代码和结构。
主要变更历史
0.8 - 2016年12月16日
通过注释相关代码并更新基本URL为api.xero.com,弃用了合作伙伴应用程序的Entrust证书
0.7 - 2016年2月1日
通过@tomcastleman支持PHP7,将发布转移到Github发布功能
0.6 - 2015年4月19日
添加了composer支持。修改了content-type,以便它也适用于PUT请求
0.5 - 2014年11月16日
添加了跟踪类别和选项的CRU示例。更新了CA证书为最新版本 - 注意,如果您使用的是非常旧的curl版本,您可能会遇到'证书无效'类型的错误。删除了一个未使用的函数,并整理了另一个函数的注释,使其更具合理性。
0.4 - 2014年9月29日
合并了一些pull请求,解决了多个调用存在签名验证问题的问题。
0.3 - 2014年1月3日
合并了多个pull请求,整理了格式,并扩展了示例测试。
0.2 - 2013年5月13日
合并到master,添加了更多测试,并改进了合作伙伴API应用程序的安全处理。
0.1 - 2013年5月10日
准备了初始发布候选版本,并将其发布到'refactor'分支。