1. Go to this page and download the library: Download crystaldaking/finance-core library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
crystaldaking / finance-core example snippets
use Crystal\Finance\Core\Money\AssetRegistry;
use Crystal\Finance\Core\Money\Money;
use Crystal\Finance\Core\Money\Percentage;
use Crystal\Finance\Core\Money\RoundingMode;
$registry = AssetRegistry::default();
$amount = Money::of('100.00', 'EUR', $registry);
$fee = $amount->percentage(Percentage::of('2.5'), RoundingMode::HalfUp);
$total = $amount->plus($fee);
$usdtTron = Money::of('10.000000', 'USDT@TRON', $registry);
$usdtEthereum = Money::of('10.000000', 'USDT@ETHEREUM', $registry);
use Crystal\Finance\Core\Fee\FeeCalculator;
use Crystal\Finance\Core\Fee\FeeContext;
use Crystal\Finance\Core\Fee\FeeRule;
use Crystal\Finance\Core\Money\Money;
use Crystal\Finance\Core\Money\Percentage;
$rule = FeeRule::make()
->percent(Percentage::of('2.5'), label: 'service_fee')
->fixed(Money::of('0.30', 'EUR', $registry), label: 'fixed_charge')
->min(Money::of('1.00', 'EUR', $registry))
->max(Money::of('50.00', 'EUR', $registry));
$result = (new FeeCalculator())->calculate(
Money::of('100.00', 'EUR', $registry),
$rule,
FeeContext::make('invoice_collection', ['customer' => 'customer_123']),
);
$result->gross(); // 100.00 EUR
$result->totalFee(); // 2.80 EUR
$result->net(); // 97.20 EUR
$result->breakdown(); // explainable fee lines
use Crystal\Finance\Core\Ledger\LedgerAccountId;
use Crystal\Finance\Core\Ledger\LedgerReference;
use Crystal\Finance\Core\Ledger\LedgerTransaction;
use Crystal\Finance\Core\Ledger\LedgerTransactionType;
use Crystal\Finance\Core\Ledger\LedgerValidator;
use Crystal\Finance\Core\Money\Money;
$transaction = LedgerTransaction::make(
LedgerTransactionType::Transfer,
LedgerReference::manual('transfer_123'),
)
->debit(
LedgerAccountId::fromString('cash:main'),
Money::of('100.00', 'EUR', $registry),
)
->credit(
LedgerAccountId::fromString('equity:owner'),
Money::of('100.00', 'EUR', $registry),
);
(new LedgerValidator())->assertValid($transaction);
use Crystal\Finance\Core\Idempotency\IdempotencyKey;
use Crystal\Finance\Core\Idempotency\IdempotencyScope;
use Crystal\Finance\Core\Idempotency\PayloadFingerprint;
$scope = IdempotencyScope::fromString('ledger:append');
$key = IdempotencyKey::fromString('request_12345678');
$fingerprint = PayloadFingerprint::fromArray([
'reference' => 'transfer_123',
'amount' => '100.00',
'asset' => 'EUR',
]);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.