smartilabs/revolut-php
Composer 安装命令:
composer require smartilabs/revolut-php
包简介
PHP Bindings for the Revolut Business API
README 文档
README
(Unofficial) PHP API Client and bindings for the Revolut Business API.
Using this PHP API Client you can interact with your:
- 💰 Accounts
- 🏢 Counterparties
- 💸 Payments
- 🕰️ Payment Drafts
- 🔀 Transfers
- 📊 Transactions
- 💹 Rates
- 💱 Exchanges
- 🔗 Webhooks
Installation
Requires PHP 7.0 or higher
The recommended way to install revolut-php is through Composer:
First, install Composer:
$ curl -sS https://getcomposer.org/installer | php
Next, install the latest revolut-php:
$ php composer.phar require sverraest/revolut-php
Finally, you need to require the library in your PHP application:
require "vendor/autoload.php";
Development
- Run
composer testandcomposer phpcsbefore creating a PR to detect any obvious issues. - Please create issues for this specific API Binding under the issues section.
- Contact Revolut directly for official Revolut For Business API support.
Quick Start
RevolutPHP\Auth\Provider
Start by following the authentication instructions in the Revolut API docs:
openssl genrsa -out privatekey.pem 1024
openssl req -new -x509 -key privatekey.pem -out publickey.cer -days 1825
Paste the generated public key on the Revolut for Business API settings page, and use the private key to instantiate a new RevolutPHP\Auth\Provider:
$authProvider = new \RevolutPHP\Auth\Provider([
'clientId' => '{clientId}', // As shown when uploading your key
'privateKey' => 'file://{privateKeyPath}',
'redirectUri' => 'https://example.com', // The URL to redirect the user to after the authorisation step
'isSandbox' => true
]);
You can now redirect the user to the authorisation flow in the Revolut for Business app:
$url = $authProvider->getAuthorizationUrl();
Once the user has confirmed authorisation, the user will be redirected back to the redirectUri with an authorisation code attached. You can exchange this authorisation code for an access token:
$accessToken = $authProvider->getAccessToken('authorization_code', [
'code' => $_GET['code']
]);
You can save this $accessToken somewhere safe and pass it directly to the RevolutPHP\Client. The token is valid for 40 minutes. To request a new token after expiration, you can use the refresh token to get a new access token:
if( $accessToken->hasExpired() ) {
$newAccessToken = $authProvider->getAccessToken('refresh_token', [
'refresh_token' => $accessToken->getRefreshToken()
]);
}
RevolutPHP\Client
If you want to get a production client:
use RevolutPHP\Client; $client = new Client($accessToken);
If you want to get a sandbox client:
use RevolutPHP\Client; $client = new Client($accessToken, 'sandbox');
If you want to pass additional GuzzleHTTP options:
use RevolutPHP\Client; $options = ['headers' => ['foo' => 'bar']]; $client = new Client($accessToken, 'sandbox', $options);
Available API Operations
The following exposed API operations from the Revolut For Business API are available using the API Client.
See below for more details about each resource.
💰 Accounts
Get all accounts, Get a specific account and get details for a specific account.
🏢 Counterparties
Get all counterparties, get a specific counterparty, create a new counterparty and delete a counterparty.
💸 Payments
Create and schedule new payments.
🕰️ Payment Drafts
Create, get and delete payment drafts for approval by a business owner/admin.
🔀 Transfers
Create a transfer between your accounts.
📊 Transactions
Get all transactions or a subset (with queryFilters), cancel a scheduled transaction, get a specific transaction and get a transaction by the unique specified requestId.
A Transaction is either created as a Payment or a Transfer.
💹 Rates
Get exchange rates.
💱 Exchanges
There are two ways of using this endpoint:
If you know the amount of currency you want to sell (e.g: I want to exchange 135.5 USD to EUR), then you should specify the amount in the "from" object.
If, on the other hand, you want to specify the amount of currency you want to buy (e.g: I want to exchange USD to receive 200 EUR), then you should specify the amount in the "to" object.
❗ Please note that the "amount" field can be specified only once, either in the "from" object or in the "to" object.
🔗 Webhooks
Create new webhooks.
Usage details
💰 Accounts
Get all accounts
See more at https://revolut-engineering.github.io/api-docs/#business-api-business-api-accounts-get-accounts
use RevolutPHP\Client; $client = new Client($accessToken); $accounts = $client->accounts->all();
Get one account
See more at https://revolut-engineering.github.io/api-docs/#business-api-business-api-accounts-get-account
use RevolutPHP\Client; $client = new Client($accessToken); $account = $client->accounts->get('foo');
Get account details
See more at https://revolut-engineering.github.io/api-docs/#business-api-business-api-accounts-get-account-details
use RevolutPHP\Client; $client = new Client($accessToken); $account = $client->accounts->getDetails('foo');
🏢 Counterparties
Add a Counterparty
use RevolutPHP\Client; $client = new Client($accessToken); $counterparty = $client->counterparties->create(['profile_type' => 'business', 'name' => 'TestCorp' , 'email' => 'test@sandboxcorp.com']);
Delete a Counterparty
See more at https://revolut-engineering.github.io/api-docs/#business-api-business-api-counterparties-delete-counterparty
use RevolutPHP\Client; $client = new Client($accessToken); $client->counterparties->delete('foo');
Get all Counterparties
See more at https://revolut-engineering.github.io/api-docs/#business-api-business-api-counterparties-get-counterparties
use RevolutPHP\Client; $client = new Client($accessToken); $counterparties = $client->counterparties->all();
Get a specific Counterparty
See more at https://revolut-engineering.github.io/api-docs/#business-api-business-api-counterparties-get-counterparty
use RevolutPHP\Client; $client = new Client($accessToken); $counterparty = $client->counterparties->get('bar');
💸 Payments
Create a payment
See more at https://revolut-engineering.github.io/api-docs/#business-api-business-api-payments-create-payment
use RevolutPHP\Client; $client = new Client($accessToken); $payment = [ 'request_id' => 'e0cbf84637264ee082a848b', 'account_id' => 'bdab1c20-8d8c-430d-b967-87ac01af060c', 'receiver' => [ 'counterparty_id': '5138z40d1-05bb-49c0-b130-75e8cf2f7693', 'account_id': 'db7c73d3-b0df-4e0e-8a9a-f42aa99f52ab' ], 'amount' => 123.11, 'currency' => 'EUR', 'reference' => 'Invoice payment #123' ]; $payment = $client->payments->create($payment);
Schedule a payment (for up to 30 days in the future)
See more at https://revolut-engineering.github.io/api-docs/#business-api-business-api-payments-schedule-payment
use RevolutPHP\Client; $client = new Client($accessToken); $payment = [ 'request_id' => 'e0cbf84637264ee082a848b', 'account_id' => 'bdab1c20-8d8c-430d-b967-87ac01af060c', 'receiver' => [ 'counterparty_id': '5138z40d1-05bb-49c0-b130-75e8cf2f7693', 'account_id': 'db7c73d3-b0df-4e0e-8a9a-f42aa99f52ab' ], 'amount' => 123.11, 'currency' => 'EUR', 'reference' => 'Invoice payment #123', 'schedule_for' => '2018-04-20', ]; $payment = $client->payments->create($payment);
🕰️ Payment Drafts
Get all Payment Drafts
See more at https://revolut-engineering.github.io/api-docs/#business-api-get-payment-drafts
use RevolutPHP\Client; $client = new Client($accessToken); $paymentDrafts = $client->paymentDrafts->all();
Get a specific Payment Draft
use RevolutPHP\Client; $client = new Client($accessToken); $counterparty = $client->paymentDrafts->get('bar');
Create a Payment Draft
use RevolutPHP\Client; $client = new Client($accessToken); $draft = [ 'title' => 'Title of payment', 'schedule_for' => '2017-10-10', 'payments' => [[ 'currency' => 'EUR', 'amount' => 123, 'account_id' => 'db7c73d3-b0df-4e0e-8a9a-f42aa99f52ab', 'receiver' => [ 'counterparty_id' => '5138z40d1-05bb-49c0-b130-75e8cf2f7693', 'account_id' => 'bdab1c20-8d8c-430d-b967-87ac01af060c' ], 'reference' => 'External transfer' ]] ]; $draft = $client->paymentDrafts->create($draft);
Delete a payment draft
use RevolutPHP\Client; $client = new Client($accessToken); $client->paymentDrafts->delete('bar');
🔀 Transfers
Transfer money between your accounts
See more at https://revolut-engineering.github.io/api-docs/#business-api-business-api-transfers-create-transfer
use RevolutPHP\Client; $client = new Client($accessToken); $transfer = [ 'request_id' => 'e0cbf84637264ee082a848b', 'source_account_id' => 'bdab1c20-8d8c-430d-b967-87ac01af060c', 'target_account_id' => '5138z40d1-05bb-49c0-b130-75e8cf2f7693', 'amount' => 123.11, 'currency' => 'EUR', 'description' => 'Expenses funding' ]; $transfer = $client->transfers->create($transfer);
📊 Transactions
Get a specific transaction (Transfer, Payment)
See more at https://revolut-engineering.github.io/api-docs/#business-api-business-api-payments-get-transaction
use RevolutPHP\Client; $client = new Client($accessToken); $transaction = $client->transactions->get('foo');
Get a specific transaction by requestId (Transfer, Payment)
You can fetch a transaction by the requestId that you specified on creation. See more at https://revolut-engineering.github.io/api-docs/#business-api-business-api-payments-get-transaction
use RevolutPHP\Client; $client = new Client($accessToken); $transaction = $client->transactions->getByRequestId('inv-123456789');
Cancel a scheduled transaction
See more at https://revolut-engineering.github.io/api-docs/#business-api-business-api-payments-cancel-payment
use RevolutPHP\Client; $client = new Client($accessToken); $client->transactions->cancel('foo');
Get all transactions
See more at https://revolut-engineering.github.io/api-docs/#business-api-business-api-payments-get-transactions
use RevolutPHP\Client; $client = new Client($accessToken); $transactions = $client->transactions->all();
Get all transactions with filters applied
See more at https://revolut-engineering.github.io/api-docs/#business-api-business-api-payments-get-transactions
use RevolutPHP\Client; $client = new Client($accessToken); $searchFilters = [ 'from' => '2018-01-01', 'to' => '2018-04-01', 'count' => 50, 'counterparty' => 'foo', 'type' => 'transfer' ]; $transactions = $client->transactions->all($searchFilters);
💹 Rates
Get exchange rates
See more at https://revolut-engineering.github.io/api-docs/#business-api-business-api-exchanges-get-exchange-rates
use RevolutPHP\Client; $client = new Client($accessToken); $rates = $client->rates->get('USD', 'EUR', 100);
💱 Exchanges
Exchange currency
See more at https://revolut-engineering.github.io/api-docs/#business-api-business-api-exchanges-exchange-currency
use RevolutPHP\Client; $client = new Client($accessToken); $exchange = [ 'from' => [ 'account_id' => '7998c061-115a-4779-b7c5-7175c6502ea0', 'currency' => 'USD', 'amount' => 135.5 ], 'to' => [ 'account_id' => '35ba695a-9153-4f68-ac16-b32f228265c9', 'currency' => 'EUR' ], 'reference' => 'Time to sell', 'request_id' => 'e0cbf84637264ee082a848b' ]; $response = $client->exchanges->exchange($exchange);
🔗 Webhooks
Create a webhook
See more at https://revolut-engineering.github.io/api-docs/#business-api-web-hooks
use RevolutPHP\Client; $client = new Client($accessToken); $webhook = [ 'url' => 'https://foo.bar', ]; $webhook = $client->webhooks->create($webhook);
Frameworks
If you're looking to use this PHP API Client in a specific PHP framework you currently have the following options:
| Framework | Package |
|---|---|
| Symfony | https://github.com/sverraest/revolut-php-bundle |
| Laravel | https://github.com/vdbelt/laravel-revolut |
Errors
Currently the following errors are defined in the Revolut Business API.
| Error | Description |
|---|---|
| 400 Bad request | Your request is invalid. |
| 401 Unauthorized | Your API key is wrong. |
| 403 Forbidden | Access to the requested resource or action is forbidden. |
| 404 Not Found | The requested resource could not be found. |
| 405 Method Not Allowed | You tried to access an endpoint with an invalid method. |
| 406 Not Acceptable | You requested a format that isn't JSON. |
| 429 Too Many Requests | You're sending too many requests. |
| 500 Internal Server Error | We had a problem with our server. Try again later. |
| 503 Service Unavailable | We're temporarily offline for maintenance. Please try again later. |
About
You can follow me on 🐦 Twitter or ✉️ email me at simon[-at-]appfleet.uk.
smartilabs/revolut-php 适用场景与选型建议
smartilabs/revolut-php 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 13 次下载、GitHub Stars 达 0, 最近一次更新时间为 2021 年 01 月 27 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「php」 「api」 「business」 「revolut」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 smartilabs/revolut-php 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 smartilabs/revolut-php 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 smartilabs/revolut-php 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Business rules engine tools.
A PSR-7 compatible library for making CRUD API endpoints
A basic wrapper for citco/carbon which returns business days between two given dates.
Alfabank REST API integration
A service layer implementation for Phalcon projects
Business System for Laravel
统计信息
- 总下载量: 13
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 9
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2021-01-27