amelia / monzo-php
Monzo 银行 (https://monzo.com) 的 API 客户端
Requires
- php: >=7.1
- guzzlehttp/guzzle: ^6.3
- illuminate/support: ~5.5
- ramsey/uuid: ^3.7
Requires (Dev)
- laravel/framework: ~5.5
- laravel/socialite: ^3.0
- php-vcr/php-vcr: ^1.3
- phpunit/phpunit: ^6.0
- symfony/var-dumper: ^3.2
README
此库允许通过 PHP 访问 Monzo API。此库需要 PHP 7.1+。
安装
composer require amelia/monzo-php
如果您还没有通过完成 oauth 获取自己的访问令牌,您还需要执行 composer require laravel/socialite
。
您应该在您的 .env
(或其他方式)中设置以下变量:
MONZO_CLIENT_ID
MONZO_CLIENT_SECRET
MONZO_REDIRECT_URI
您可以在 https://developers.monzo.com 创建应用程序。
Laravel 集成
Amelia\Monzo\MonzoServiceProvider::class
在 Laravel 5.5 中会自动注册。
此包的未来版本将包括按用户自动处理 webhook 和完全自动的社会化集成。
控制这些的环境变量将是:
MONZO_WEBHOOKS=true
MONZO_SOCIALITE=true
社会化集成
为了自动添加社会化回调,此包提供了一个可选的认证系统。
注意 这假设您正在将现有用户添加到 Monzo 的应用程序中。如果您不是这样做,您需要根据社会化 API 的响应设置自己的路由来创建/管理用户。
首先,将 MonzoCredentials
特性添加到您的 Authenticatable
用户模型中。
<?php namespace App; use Amelia\Monzo\MonzoCredentials; use Amelia\Monzo\Contracts\HasMonzoCredentials; use Illuminate\Database\Eloquent\Model; class User extends Model implements HasMonzoCredentials { use MonzoCredentials; }
这将为您的用户模型添加许多设置器/获取器,用于处理 Monzo 凭据。
您可以通过向用户模型添加方法来自定义使用的列
<?php use Amelia\Monzo\MonzoCredentials; use Amelia\Monzo\Contracts\HasMonzoCredentials; class User implements HasMonzoCredentials { use MonzoCredentials; protected function getMonzoAccessTokenColumn() { return 'monzo_access_token'; } protected function getMonzoRefreshTokenColumn() { return 'monzo_refresh_token'; } protected function getMonzoUserIdColumn() { return 'monzo_user_id'; } }
社会化迁移
假设您的用户表名为 users
,您可以简单地运行 php artisan vendor:publish --tag=monzo
。
这将在您的 migrations
目录中创建一个可编辑的迁移文件。
运行 php artisan migrate
以执行此操作。
用法
注意 如果不使用 Laravel,您需要设置 Amelia\Monzo\Monzo
的一个实例,并将一个 Amelia\Monzo\Contracts\Client
实例注入其中,如下所示
<?php $client = new Amelia\Monzo\Client( new GuzzleHttp\Client, getenv('MONZO_CLIENT_ID') ?: null, getenv('MONZO_CLIENT_SECRET') ?: null ); $monzo = new Amelia\Monzo\Monzo($client); // Amelia\Monzo\Monzo::setAccessToken($token) for single user mode
如果使用 Laravel,您只需通过服务容器使用 resolve()
或 app()
注入 Amelia\Monzo\Monzo
。
使用 API 非常简单。
通常,您需要一个访问令牌或用户对象。
示例
获取用户的账户。
<?php $user = User::findOrFail($id); $accounts = $monzo->as($user)->accounts();
获取用户账户的最后 100 笔交易
<?php $user = User::findOrFail($id); $transactions = $monzo->as($user)->transactions('acc_12341243');
获取用户默认账户的最后 100 笔交易
<?php $user = User::findOrFail($id); // will query accounts first, then use the default to query transactions. $transactions = $monzo->as($user)->transactions();
获取用户交易的分页实例
<?php $user = User::findOrFail($id); $transactions = $monzo->as($user)->paginate(50)->transactions('acc_12341243');
扩展并填充 API 中的关系
<?php $user = User::findOrFail($id); $transactions = $monzo->as($user) ->paginate(50) ->expand('account') ->transactions('acc_12341243');
查看用户的余额
<?php $user = User::findOrFail($id); $balance = $monzo->as($user)->balance();