aurimasniekis / gmo-aozora-client
A PSR-18/17 based client for accessing your bank information from https://gmo-aozora.com/
Requires
- php: ^7.4||^8.0
- ext-json: *
- psr/http-client: ^1.0
- psr/http-factory: ^1.0
Requires (Dev)
This package is auto-updated.
Last update: 2024-11-20 23:24:12 UTC
README
A PSR-18/17 based client for accessing your bank information from https://gmo-aozora.com/
Install
Via Composer
$ composer require aurimasniekis/gmo-aozora-client
This package depends on PSR-17 and PSR-18 packages to be able use this package. For simpler version please use aurimasniekis/gmo-aozora-simple-client.
Configuration
There are two ways to define a configuration, one is statically defining values and another is loading from JSON config file which will be updated with authentication token and device token. Device token is required to be preserved to prevent giving notification from a new login.
Static Configuration:
<?php use AurimasNiekis\GmoAozoraClient\Configuration; $config = new Configuration( string $username, string $password, string $deviceToken = null, string $faToken = null, string $serviceType = self::SERVICE_TYPE, // https://bank.gmo-aozora.com/v1 string $ssoDomain = self::SSO_DOMAIN, // https://sso.gmo-aozora.com string $apiDomain = self::API_DOMAIN // https://bank.gmo-aozora.com/v1 );
JSON Config File:
<?php use AurimasNiekis\GmoAozoraClient\JsonFileConfiguration; $config = new JsonFileConfiguration( string $configFile );
{ "username": "1233456", "password": "1233456" }
Available options:
Usage
In the example PSR-17 and PSR-18 is provided by: nyholm/psr7
and kriswallsmith/buzz
packages.
<?php use Buzz\Client\Curl; use Nyholm\Psr7\Factory\Psr17Factory; use AurimasNiekis\GmoAozoraClient\Client; use AurimasNiekis\GmoAozoraClient\WebClient; use AurimasNiekis\GmoAozoraClient\JsonFileConfiguration; $factory = new Psr17Factory(); $client = new Curl($factory); $config = new JsonFileConfiguration(__DIR__ . '/config.json'); $webClient = new WebClient($config, $client, $factory, $factory); $client = new Client($webClient);
To get account details
$accountDetails = $client->accountDetails();
^ AurimasNiekis\GmoAozoraClient\Model\AccountDetails^ {#9 -raw: array:27 [ ... ] -customerName: null -customerType: null -lastLoginDatetime: DateTimeImmutable @1584736703 {#10 date: 2020-03-20 20:38:23.626 UTC (+00:00) } -queryDatetime: DateTimeImmutable @1584738476 {#11 date: 2020-03-20 21:07:56.664 UTC (+00:00) } -isLock: null -rankName: "1テックま君" -rankLogoUrl: null -atmFeeFreeCount: 2 -transferFeeFreeCount: 1 -transferLimitAmount: "500000000000" -oneDayTransferLimitAmount: "500000000000" -lastDayTotalBalance: "9999999" -totalBalance: "9999999" -ordinaryDepositTotalBalance: "9999999" -sweepTotalBalance: "" -lastDaySweepTotalBalance: "" -termDepositTotalBalance: "" -fcyOrdinaryDepositTotalJpyBalance: "" -uncollectedAmount: "0" -uncollectedDeducationBalance: null -branchCode: "123" -branchName: "..." -accountNumber: "1234567" -debitPlanList: [] -rateList: array:8 [ 0 => array:16 [ "customerRateId" => "1212321" "currency" => "USD" "ttb" => "110.07" "tts" => "110.11" "ttbRiseOrFall" => "1" "ttmRiseOrFall" => "1" "ttsRiseOrFall" => "1" "isServiceTime" => "1" "isValidRate" => "1" "currencyName" => "米ドル" "displayFractionLength" => 2 "orderFractionLength" => 2 "currencyServiceStatus" => "1" "validSeconds" => 10 "generatedAt" => "20200320210755456" "ttm" => "110.09" ] ... ] -authorityList: [] -statementList: array:5 [ 0 => AurimasNiekis\GmoAozoraClient\Model\PaymentStatementEntry^ {#14 -raw: array:7 [ ... ] -data: DateTimeImmutable @1584706076 {#13 date: 2020-03-20 12:07:56.0 UTC (+00:00) } -remark: "Visa" -memo: null -amount: "400" -balance: "123456789" -accountEntryNumber: "123456" -creditDebitType: "2" } 1 => AurimasNiekis\GmoAozoraClient\Model\IncomeStatementEntry^ {#14 -raw: array:7 [ ... ] -data: DateTimeImmutable @1584706076 {#13 date: 2020-03-20 12:07:56.0 UTC (+00:00) } -remark: "Visa" -memo: null -amount: "123456789" -balance: "123456789" -accountEntryNumber: "123456" -creditDebitType: "1" } ... ] }
Statements
Ordinary Deposit Statements:
$statements = $client->ordinaryDepositStatement( DateTimeInterface $toDate = null, DateTimeInterface $fromDate = null, int $perPage = 2000 )
Foreign Currency Ordinary Deposit Statements:
$statements = $client->foreignOrdinaryDepositStatement( DateTimeInterface $toDate = null, DateTimeInterface $fromDate = null, int $perPage = 2000 )
Term Deposit Statements:
$statements = $client->termDepositStatement( DateTimeInterface $toDate = null, DateTimeInterface $fromDate = null, int $perPage = 2000 )
Sweep Account Statements:
$statements = $client->sweepAccountStatement( DateTimeInterface $toDate = null, DateTimeInterface $fromDate = null, int $perPage = 2000 )
Raw statement:
$statements = $client->rawStatement( string $type, array $options, DateTimeInterface $toDate = null, DateTimeInterface $fromDate = null, int $offset = 0, int $limit = 20 )
Raw statements with all pages fetched:
$statements = $client->rawStatementAll( string $type, array $options, DateTimeInterface $toDate = null, DateTimeInterface $fromDate = null, int $perPage = 2000 )
Results for these functions are the same:
array:100 [ 0 => AurimasNiekis\GmoAozoraClient\Model\PaymentStatementEntry^ {#14 -raw: array:7 [ ... ] -data: DateTimeImmutable @1584706076 {#13 date: 2020-03-20 12:07:56.0 UTC (+00:00) } -remark: "Visa" -memo: null -amount: "400" -balance: "123456789" -accountEntryNumber: "123456" -creditDebitType: "2" }, ... ]
Visa Statements:
$statements = $client->visaStatement( DateTimeInterface $toDate = null, DateTimeInterface $fromDate = null, int $perPage = 2000 )
array:100 [ 0 => AurimasNiekis\GmoAozoraClient\Model\VisaStatementEntry^ {#21 -raw: array:9 [ ... ] -date: DateTimeImmutable @1584274771 {#22 date: 2020-03-15 12:19:31.0 UTC (+00:00) } -usage: "AMAZON.CO.JP" -amount: "1234" -status: "1" -localCurrencyAmount: "0.0" -atmUseFee: null -currency: null -conversionRate: null -approvalNumber: "12345" } ... ]
Testing
Run PHP style checker
$ composer cs-check
Run PHP style fixer
$ composer cs-fix
Contributing
Please see CONTRIBUTING and CONDUCT for details.
License
Please see License File for more information.