定制 fastlabs/xero 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

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:

  1. Go to Xero https://www.xero.com/ and register for free account
  2. Go to https://developer.xero.com/myapps/ and create a PRIVATE APP
  3. 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 我们能提供哪些服务?
定制开发 / 二次开发

基于 fastlabs/xero 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 13
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 3
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2019-05-21