fourier-semperfi/novapay-business-sdk

PHP SDK for NovaPay Business SOAP API

Maintainers

Package info

github.com/Fourier-SemperFi/NovapayBusinessSDK

pkg:composer/fourier-semperfi/novapay-business-sdk

Statistics

Installs: 7

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

dev-main 2026-02-19 21:08 UTC

This package is auto-updated.

Last update: 2026-04-19 21:43:08 UTC


README

PHP SDK for the NovaPay Business SOAP API. No database dependencies — token persistence is the caller's responsibility.

Requirements

  • PHP 7.4+
  • ext-soap
  • ext-simplexml

Installation

composer require novapay/business-sdk

Quick Start

use src\NovaPayClient;

$client = new NovaPayClient();

// Step 1: Pre-auth (sends OTP)
$preAuth = $client->preAuthenticate('login', 'password');

// Step 2: Confirm OTP
$auth = $client->authenticate($preAuth->tempPrincipal, $preAuth->codeOperationOtp, $otp);

// Persist $auth->principal and $auth->expiration yourself!

// Get data
$clients  = $client->getClients($auth->principal);
$accounts = $client->getAccounts($auth->principal, $clients[0]->id);
$balance  = $client->getBalance($auth->principal, $accounts[0]->id);
$extract  = $client->getExtract($auth->principal, $accounts[0]->id, '01.01.2025', '31.01.2025');

API Reference

Authentication

Method Returns Description
preAuthenticate($login, $pass) PreAuthResult Sends OTP to user's phone
authenticate($temp, $code, $otp) AuthResult Confirms OTP, returns session token
refreshSession($principal) AuthResult|null Extends session lifetime
isSessionValid($principal, $exp) bool Static helper to check token validity

Data

Method Returns Description
getClients($principal) Client[] List business clients
getAccounts($principal, $clientId) Account[] List bank accounts
getBalance($principal, $accountId) Balance Single account balance
getBalances($principal, $clientId) Balance[] All account balances (with error callback)
getExtract($principal, $acctId, $from, $to) Extract Parsed statement
getExtractRaw($principal, $acctId, $from, $to) string|null Raw XML for custom parsing

DTO Objects

AuthResult->principal, ->expiration, ->isValid()

Client->id, ->name

Account->id, ->iban, ->currency, ->balance

Balance->accountId, ->confirmed, ->available, ->projected, ->raw

Transaction->code, ->date, ->amount, ->currency, ->purpose, ->paymentType, ->debitName, ->debitIban, ->debitStateCode, ->creditName, ->creditIban, ->creditStateCode, ->isIncoming($iban), ->isOutgoing($iban)

Extract->iban, ->transactions, ->incoming(), ->outgoing(), ->byCreditEdrpou($code), ->byDebitEdrpou($code), ->byCodePattern($regex)

Custom SOAP Options

$client = new NovaPayClient('https://business.novapay.ua/Services/ClientAPIService.svc?wsdl', 'https://business.novapay.ua/Services/ClientAPIService.svc');

// Inject SoapClient for testing
$mock = $this->createMock(SoapClient::class);
$client = NovaPayClient::withSoapClient($mock);

File Structure

src/
├── NovaPayClient.php      # Main API client
├── ExtractParser.php       # XML  DTO parser (usable standalone)
└── DTO/
    ├── Account.php
    ├── AuthResult.php
    ├── Balance.php
    ├── Client.php
    ├── Extract.php
    ├── PreAuthResult.php
    └── Transaction.php