amelia / monzo-php

该包已被放弃,不再维护。没有推荐替代包。

Monzo 银行 (https://monzo.com) 的 API 客户端

v0.10.0 2018-03-02 17:12 UTC

This package is auto-updated.

Last update: 2024-07-08 14:24:43 UTC


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();