fastlabs/xero
Composer 安装命令:
composer require fastlabs/xero
包简介
Simple / Basic PHP library to interact with Xero billing platform
README 文档
README
XERO PHP API
Simple / Basic PHP library to interact with Xero billing platform
Installation
composer
In order to install this library via composer run the following command in the console:
composer require fastlabs/xero
or add the package manually to your composer.json file in the require section:
"fastlabs/xero": "^2.1"
Example basic code:
<?php
require_once('vendor/autoload.php');
\FastLabs\Xero\Application::$XeroConsumerKey = 'your consumer key';
\FastLabs\Xero\Application::$XeroSharedSecret = 'your shared secret';
\FastLabs\Xero\Application::$RSAprivateKey = 'certs/privatekey.pem';
\FastLabs\Xero\Application::$RSApublicKey = 'certs/publickey.cer';
$xeroApp = FastLabs\Xero\Application::Private();
$org = $xeroApp->loadOrganization()->getOne();
print "Access granted to Xero for Organizatio {$o->OrganisationID}";
manual
# git clone https://bitbucket.org/fastlabs/xero-php-api.git
# cd xero-php-api.git
generate certificate files
cd certs
openssl genrsa -out privatekey.pem 1024
openssl req -new -x509 -key privatekey.pem -out publickey.cer -days 1825
openssl pkcs12 -export -out public_privatekey.pfx -inkey privatekey.pem -in publickey.cer
Now you can create your Private app in Xero:
- Go to Xero https://www.xero.com/ and register for free account
- Go to https://developer.xero.com/myapps/ and create a PRIVATE APP
- Upload the .cer file you just created
Now you can configure the application
cd ..
vi conf.php
You conf.php file should be like:
<?php
/* configuration for private app */
\FastLabs\Xero\Application::$XeroConsumerKey = 'PRIVATE_APPLICATION__CONSUMER_KEY';
\FastLabs\Xero\Application::$XeroSharedSecret = 'PRIVATE_APPLICATION__CONSUMER_SECRET';
\FastLabs\Xero\Application::$RSAprivateKey = __DIR__.'/certs/privatekey.pem';
\FastLabs\Xero\Application::$RSApublicKey = __DIR__.'/certs/publickey.cer';
/* configuration for public app */
// \FastLabs\Xero\Application::$XeroConsumerKey = 'PUBLIC_APPLICATION__CONSUMER_KEY';
// \FastLabs\Xero\Application::$XeroSharedSecret = 'PUBLIC_APPLICATION__CONSUMER_SECRET';
// \FastLabs\Xero\Application::$OauthCallBack = 'http://127.0.0.1:8000/?callback';
And now, let's give it a go...
# cd public
# php -S localhost:8000
Open http://localhost:8000 on your browser
Private Application initialization
<?php
\FastLabs\Xero\Application::$XeroConsumerKey = 'PRIVATE_APPLICATION__CONSUMER_KEY';
\FastLabs\Xero\Application::$XeroSharedSecret = 'PRIVATE_APPLICATION__CONSUMER_SECRET';
\FastLabs\Xero\Application::$RSAprivateKey = __DIR__.'/certs/privatekey.pem';
\FastLabs\Xero\Application::$RSApublicKey = __DIR__.'/certs/publickey.cer';
$xeroApp = \FastLabs\Xero\Application::Private();
// check organization name (also double check if login is valid)
$org = $xeroApp->loadOrganization();
$o = $org->getOne();
if (!$o) {
if ($errors = $org->getErrors()) {
if (array_key_exists(401, $errors)) {
echo 'You are not authorized?! please check your configuration';
exit;
}
}
}
echo "Access via Public application for organization {$o->Name} ( OrganisationID: {$o->OrganisationID} )";
print(" {$o->Name} - {$o->OrganisationID}");
Public application initialiazion & session login-logout example
<?php
// \FastLabs\Xero\Application::$XeroConsumerKey = 'PUBLIC_APPLICATION__CONSUMER_KEY';
// \FastLabs\Xero\Application::$XeroSharedSecret = 'PUBLIC_APPLICATION__CONSUMER_SECRET';
// \FastLabs\Xero\Application::$OauthCallBack = 'http://127.0.0.1:8000/?callback';
$xeroApp = \FastLabs\Xero\Application::Public();
// logout function
if (isset($_REQUEST['wipe'])) {
session_destroy();
header("Location: /");
exit;
}
// check if already logged-in
if (!$xeroApp->isLogged()) {
// check if is a callBack from xero (oAuth process step 2)
if (isset($_REQUEST['oauth_token']))
$xeroApp->checkCallBack();
if (isset($_REQUEST['authenticate'])) {
echo '<a href="' .$xeroApp->getLoginUrl().'">Access via Xero</a>';
} else {
echo '<a href="?authenticate=1">Start the login process?</a>';
}
exit;
}
// check organization name (also double check if login is still valid or expired)
$org = $xeroApp->loadOrganization();
$o = $org->getOne();
if (!$o) {
if ($errors = $org->getErrors()) {
if (array_key_exists(401, $errors)) {
print('Session expired... <a href="?wipe=1">Reconnect</a>');
exit;
}
}
}
echo "Access via Public application for organization {$o->Name} ( OrganisationID: {$o->OrganisationID} )";
print(" {$o->Name} - {$o->OrganisationID}");
fastlabs/xero 适用场景与选型建议
fastlabs/xero 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 13 次下载、GitHub Stars 达 0, 最近一次更新时间为 2019 年 05 月 21 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 fastlabs/xero 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 fastlabs/xero 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 13
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 3
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2019-05-21