Transactions
Transactions currently support initialize, verify, fetch, and list operations.
Initialize a transaction
php
use Maxiviper117\Paystack\Actions\Transaction\InitializeTransactionAction;
use Maxiviper117\Paystack\Data\Input\Transaction\InitializeTransactionInputData;
$action = app(InitializeTransactionAction::class);
$response = $action(
new InitializeTransactionInputData(
email: 'customer@example.com',
amount: 15.50,
callbackUrl: 'https://example.com/payments/callback',
)
);Verify a transaction
php
use Maxiviper117\Paystack\Actions\Transaction\VerifyTransactionAction;
use Maxiviper117\Paystack\Data\Input\Transaction\VerifyTransactionInputData;
$action = app(VerifyTransactionAction::class);
$response = $action(
new VerifyTransactionInputData(reference: 'paystack-reference')
);In PHP, timestamp fields on response DTOs are typed. For example, $response->transaction->paidAt is a CarbonImmutable|null.
If you are in a controller or route that should return JSON, you can return the response DTO directly:
php
use Illuminate\Http\Request;
use Maxiviper117\Paystack\Actions\Transaction\VerifyTransactionAction;
use Maxiviper117\Paystack\Data\Input\Transaction\VerifyTransactionInputData;
Route::get('/billing/paystack/callback', function (
Request $request,
VerifyTransactionAction $verifyTransaction,
) {
return $verifyTransaction(
new VerifyTransactionInputData(
reference: (string) $request->query('reference', '')
)
);
});Fetch and list
Available action classes:
FetchTransactionActionListTransactionsAction
Matching input DTOs:
FetchTransactionInputDataListTransactionsInputData
Matching response DTOs:
FetchTransactionResponseDataListTransactionsResponseData
Amount handling
InitializeTransactionInputData accepts the amount in major currency units and converts it to Paystack subunits during request serialization. For example, 15.50 becomes 1550.
Facade usage
php
use Maxiviper117\Paystack\Data\Input\Transaction\InitializeTransactionInputData;
use Maxiviper117\Paystack\Facades\Paystack;
$response = Paystack::initializeTransaction(
new InitializeTransactionInputData(
email: 'customer@example.com',
amount: 15.50,
callbackUrl: 'https://example.com/payments/callback',
)
);