PHPackages                             wpdesk/bm-sdk - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Payment Processing](/categories/payments)
4. /
5. wpdesk/bm-sdk

ActiveLibrary[Payment Processing](/categories/payments)

wpdesk/bm-sdk
=============

Blue Media PHP SDK

3.2.1(3y ago)0680LGPL-3.0-onlyPHPPHP &gt;=7.2

Since Nov 3Pushed 3y agoCompare

[ Source](https://github.com/wpdesk/bm-sdk)[ Packagist](https://packagist.org/packages/wpdesk/bm-sdk)[ RSS](/packages/wpdesk-bm-sdk/feed)WikiDiscussions master Synced 4d ago

READMEChangelog (1)Dependencies (5)Versions (11)Used By (0)

BlueMedia PHP SDK
-----------------

[](#bluemedia-php-sdk)

Kod zawarty w tym repozytorium umożliwia wykonanie transakcji oraz innych usług oferowanych przez Blue Media S.A.

Użycie SDK zalecane jest podczas implementacji własnych modułów płatności.

**Uwaga:** w wersji 1.0.0 możliwe jest wykonanie płatności oraz ITN z ograniczonym zestawem parametrów.

Spis treści
-----------

[](#spis-treści)

- [Repozytorium](#repozytorium)
- [Wymagania](#wymagania)
- [Instalacja](#instalacja)
- [Konfiguracja klienta](#konfiguracja-klienta)
- [Transakcja poprzez przekierowanie na paywall](#transakcja-poprzez-przekierowanie-na-paywall)
- [Przedtransakcja](#przedtransakcja)
    - [Przedtransakcja, link do kontynuacji płatności](#przedtransakcja-link-do-kontynuacji-p%C5%82atno%C5%9Bci)
    - [Przedtransakcja, brak kontynuacji](#przedtransakcja-brak-kontynuacji)
- [Szybki przelew](#szybki-przelew)
- [Obsługa ITN (Instant Transaction Notification)](#obs%C5%82uga-itn-(instant-transaction-notification))
    - [Obsługa ITN, utworzenie obiektu komunikatu](#obs%C5%82uga-itn-utworzenie-obiektu-komunikatu)
- [Pobieranie listy aktualnie dostępnych regulaminów](#pobieranie-listy-aktualnie-dost%C4%99pnych-regulamin%C3%B3w)
- [Pobieranie listy kanałów płatności](#pobieranie-listy-kana%C5%82%C3%B3w-p%C5%82atno%C5%9Bci)

Repozytorium
------------

[](#repozytorium)

#### Odpalenie testów:

[](#odpalenie-testów)

- `docker-compose up`
- `docker exec -it php_bm_sdk composer install`
- `docker exec -it php_bm_sdk ./vendor/bin/phpunit tests`

Wymagania
---------

[](#wymagania)

- PHP w wersji 7.2 lub nowszej.
- Rozszerzenia PHP:
    - xmlwriter,
    - xmlreader,
    - iconv,
    - mbstring,
    - hash

Instalacja
----------

[](#instalacja)

```
$ composer require bluepayment-plugin/bm-sdk
```

Konfiguracja klienta
--------------------

[](#konfiguracja-klienta)

W celu utworzenia warstwy komunikacji należy utworzyć obiekt klasy `BlueMedia\Client` podając id serwisu oraz klucz współdzielony (przyznane przez BlueMedia).

```
$client = new BlueMedia\Client('ID SERWISU', 'KLUCZ WSPÓŁDZIELONY');
```

Podczas tworzenia obiektu klienta, za argumentami danych serwisu można dodatkowo dodać użyty tryb szyfrowania oraz separator danych (w przypadku kiedy są nadane inne niż domyślne):

```
$client = new BlueMedia\Client(
    'ID SERWISU',
    'KLUCZ WSPÓŁDZIELONY',
    'sha256', // tryb hashowania, domyślnie sha256, można użyć stałej z BlueMedia\Common\Enum\ClientEnum
    '|' // separator danych, domyślnie |
);
```

Transakcja poprzez przekierowanie na paywall
--------------------------------------------

[](#transakcja-poprzez-przekierowanie-na-paywall)

Najprostszym typem wykonania transakcji jest przekierowanie do serwisu BlueMedia wraz z danymi o transakcji. Obsługa płatności leży wtedy w całości po stronie serwisu BlueMedia.

Aby wykonać transakcję należy wywołać metodę `getTransactionRedirect`, poprawne wykonanie metody zwróci formularz który wykona przekierowanie do serwisu BlueMedia:

```
$result = $client->getTransactionRedirect([
   'gatewayUrl' => 'https://pay-accept.bm.pl', // Adres bramki BlueMedia
   'transaction' => [
       'orderID' => '123', // Id transakcji, wymagany
       'amount' => '1.20', // Kwota transakcji, wymagany
       'description' => 'Transakcja 123-123', // Tytuł transakcji, opcjonalny
       'gatewayID' => '0', // Identyfikator kanału płatności, opcjonalny, w tym przypadku można ustawić jako 0 lub pominąć
       'currency' => 'PLN', // Waluta transakcji, opcjonalny, domyślnie PLN
       'customerEmail' => 'test@hostname.domain' // Email klienta, opcjonalny, zalecany ze względu na automatyczne uzupełnienie pola po stronie serwisu BM
   ]
]);

echo $result->getData();
```

Po wykonaniu płatności, serwis BlueMedia wykona przekierowanie na skonfigurowany wcześniej adres powrotu płatności. Przekierowanie następuje poprzez żądanie HTTPS (GET) z trzema parametrami:

- ServiceID - Identyfikator serwisu
- OrderID - Identyfikator transakcji
- Hash - Suma kontrolna wyliczona na podstawie ServiceID i OrderID.

Wymagane jest, aby strona powrotu z płatności weryfikowała poprawność Hash, służy do tego metoda `doConfirmationCheck`. Należy przekazać do niej dane przesłane w żądaniu GET:

```
$data = [
    'ServiceID' => '123456',
    'OrderID' => '123',
    'Hash' => 'df5f737f48bcef93361f590b460cc633b28f91710a60415527221f9cb90da52a'
];

$result = $client->doConfirmationCheck($data); // true | false
```

Przedtransakcja
---------------

[](#przedtransakcja)

Metoda `doTransactionInit` rozszerza standardowy model rozpoczęcia transakcji o obsługę określonych potrzeb:

- zamówienia linku do płatności na podstawie przesłanych parametrów
- obciążenia Klienta (jeśli nie jest wymagana dodatkowa autoryzacja dokonana przez Klienta)
- zweryfikowania poprawności linku płatności, zanim Klient zostanie przekierowany do Systemu – wywołanie powoduje walidację parametrów i konfiguracji Systemu
- skrócenia linka płatności – zamiast kilku/kilkunastu parametrów, link zostaje skrócony do dwóch identyfikatorów
- ukrycia danych wrażliwych parametrów linku transakcji – przedtransakcja odbywa się backendowo, a link do kontynuacji transakcji nie zawiera danych wrażliwych, a jedynie identyfikatory kontynuacji
- użycia SDK w modelu pełnym (bezpiecznym)

Metoda przyjmuje parametry takie jak w przypadku transakcji z przekierowaniem na paywall, z tą różnicą że wysyłany jest inny nagłówek, dzięki czemu serwis BlueMedia obsługuje żądanie w inny sposób. W odpowiedzi otrzymywany jest link do kontynuacji transakcji lub odpowiedź informująca o braku kontynuacji oraz statusem płatności.

#### Przedtransakcja, link do kontynuacji płatności

[](#przedtransakcja-link-do-kontynuacji-płatności)

```
$result = $client->doTransactionInit([
    'gatewayUrl' => 'https://pay-accept.bm.pl',
    'transaction' => [
        'orderID' => '123',
        'amount' => '1.20',
        'description' => 'Transakcja 123-123',
        'gatewayID' => '0',
        'currency' => 'PLN',
        'customerEmail' => 'test@hostname.domain'
    ]
]);

$transactionContinue = $result->getData();

$transactionContinue->getRedirectUrl(); // https://pay-accept.bm.pl/payment/continue/9IA2UISN/718GTV5E
$transactionContinue->getStatus(); // PENDING
$transactionContinue->getOrderId(); // 123
$transactionContinue->toArray(); // [...]
// ...
```

#### Przedtransakcja, brak kontynuacji

[](#przedtransakcja-brak-kontynuacji)

```
$result = $client->doTransactionInit([
    'gatewayUrl' => 'https://pay-accept.bm.pl',
    'transaction' => [
        'orderID' => '123',
        'amount' => '1.20',
        'description' => 'Transakcja 123-123',
        'gatewayID' => '1500',
        'currency' => 'PLN',
        'customerEmail' => 'test@hostname.domain',
        'customerIP' => '127.0.0.1',
        'title' => 'Test',
    ]
]);

$transactionInit = $result->getData();

$transactionInit->getConfirmation(); // NOTCONFIRMED
$transactionInit->getReason(); // MULTIPLY_PAID_TRANSACTION
$transactionInit->getOrderId(); // 123
$transactionInit->toArray(); // [...]
// ...
```

Szybki przelew
--------------

[](#szybki-przelew)

Szybki Przelew to forma płatności, która wymaga od Klienta samodzielnego przepisania danych do przelewu dostarczanych przez System. Dane do przelewu można pozyskać dzięki metodzie `doTransactionBackground`.

W zależności od kanału płatności jaki zostanie wybrany w kontekście transakcji, metoda zwróci dane do przelewu lub gotowy formularz.

Przykład wywołania (dane do transakcji):

```
$result = $client->doTransactionBackground([
    'gatewayUrl' => 'https://pay-accept.bm.pl',
    'transaction' => [
       'orderID' => '12345',
       'amount' => '5.12',
       'description' => 'Test transaction 12345',
       'gatewayID' => '21',
       'currency' => 'PLN',
       'customerEmail' => 'test@test.test',
       'customerIP' => '127.0.0.1',
       'title' => 'Test',
       'validityTime' => date('Y-m-d H:i:s', strtotime('now +5 hour')),
       'linkValidityTime' => date('Y-m-d H:i:s', strtotime('now +5 hour'))
    ]
]);

$transactionBackground = $result->getData();

$transactionBackground->getReceiverNRB(); // 47 1050 1764 1000 0023 2741 0516
$transactionBackground->getReceiverName(); // Blue Media
$transactionBackground->getBankHref(); // https://ssl.bsk.com.pl/bskonl/login.html
$transactionBackground->toArray(); // [...]
// ...
```

Przykład wywołania (formularz płatności):

```
$result = $client->doTransactionBackground([
    'gatewayUrl' => 'https://pay-accept.bm.pl',
    'transaction' => [
       'orderID' => '12345',
       'amount' => '5.12',
       'description' => 'Test transaction 12345',
       'gatewayID' => '1500',
       'currency' => 'PLN',
       'customerEmail' => 'test@test.test',
       'customerIP' => '127.0.0.1',
       'title' => 'Test',
       'validityTime' => date('Y-m-d H:i:s', strtotime('now +5 hour')),
       'linkValidityTime' => date('Y-m-d H:i:s', strtotime('now +5 hour'))
    ]
]);

$transactionBackground = $result->getData();

echo $transactionBackground; //  (...)
```

Obsługa ITN (Instant Transaction Notification)
----------------------------------------------

[](#obsługa-itn-instant-transaction-notification)

Serwis BlueMedia po wykonaniu płatności wysyła na wcześniej skonfigurowany adres ITN komunikat o statusie płatności. Dane przesyłane są w formacie XML dodatkowo zakodowanym w base64. SDK oferuje metodę `doItnIn` która w wyniku przekazania danych z serwisu BlueMedia zwraca gotowy obiekt `BlueMedia\Itn\ValueObject\ItnIn` pozwalający na użycie akcesorów lub konwersję do tablicy. Dzięki temu obiektowi, programista może użyć danych potrzebnych np. do aktualizacji statusu płatności w bazie danych itp.

Po przetworzeniu komunikatu ITN należy przekazać odpowiedź. Służy do tego metoda `doItnInResponse` która przyjmuje obiekt `ItnIn` oraz argument informujący o potwierdzeniu transakcji.

Poniżej przykład zastosowania obsługi ITN:

```
$result = $client->doItnIn($_POST['transactions']);

$itnIn = $result->getData();
$transactionConfirmed = $client->checkHash($itnIn);

// Jeżeli status płatności z ITN jest potwierdzony i hash jest poprawny - zakończ płatność w systemie
if ($itnIn->getPaymentStatus() === 'SUCCESS' && $transactionConfirmed) {
    $order = $this->orderRepository->find($itnIn->getOrderId());

    $order->setPaymentCompleted();
}

$itnResponse = $client->doItnInResponse($itnIn, $transactionConfirmed);

return new Response($itnResponse->getData()->toXml());
```

#### Obsługa ITN, utworzenie obiektu komunikatu

[](#obsługa-itn-utworzenie-obiektu-komunikatu)

Podczas implementacji może okazać się że przed wykonaniem obsługi ITN zajdzie potrzeba np. konfiguracji klienta na podstawie danych dostępowych w oparciu o walutę. W takim modelu programista może wspomóc się metodą `getItnObject`.

```
$itn = Client::getItnObject($_POST['transactions']);

$itn->getCurrency(); // PLN
// ...
```

Pobieranie listy aktualnie dostępnych regulaminów
-------------------------------------------------

[](#pobieranie-listy-aktualnie-dostępnych-regulaminów)

Metoda `getRegulationList` umożliwia odpytanie o aktualną listę regulaminów wraz linkami do wyświetlenia w serwisie oraz akceptacji przez klienta.

```
$result = $this->client->getRegulationList('https://pay-accept.bm.pl');

return $result->getData();
```

Pobieranie listy kanałów płatności
----------------------------------

[](#pobieranie-listy-kanałów-płatności)

Metoda `testGetPaywayList` umożliwia odpytanie o aktualną listę płatności.

```
$result = $this->client->getPaywayList('https://pay-accept.bm.pl');

return $result->getData();
```

###  Health Score

27

—

LowBetter than 49% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity13

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity55

Maturing project, gaining track record

 Bus Factor2

2 contributors hold 50%+ of commits

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~75 days

Recently: every ~84 days

Total

9

Last Release

1416d ago

Major Versions

1.1.0 → 2.0.02022-01-24

2.0.0 → v3.1.02022-01-28

### Community

Maintainers

![](https://www.gravatar.com/avatar/16497f8884c0767d3a114cc1cf8daaa639bac052178b03c59d59dfa95569d50b?d=identicon)[dyszczo](/maintainers/dyszczo)

---

Top Contributors

[![akurzajewska](https://avatars.githubusercontent.com/u/81361000?v=4)](https://github.com/akurzajewska "akurzajewska (6 commits)")[![jagozajac](https://avatars.githubusercontent.com/u/87177993?v=4)](https://github.com/jagozajac "jagozajac (3 commits)")[![dyszczo](https://avatars.githubusercontent.com/u/1263190?v=4)](https://github.com/dyszczo "dyszczo (2 commits)")[![lolen](https://avatars.githubusercontent.com/u/3825268?v=4)](https://github.com/lolen "lolen (2 commits)")[![Karol-BM](https://avatars.githubusercontent.com/u/106435041?v=4)](https://github.com/Karol-BM "Karol-BM (1 commits)")

###  Code Quality

TestsPHPUnit

Code StylePHP\_CodeSniffer

### Embed Badge

![Health badge](/badges/wpdesk-bm-sdk/health.svg)

```
[![Health](https://phpackages.com/badges/wpdesk-bm-sdk/health.svg)](https://phpackages.com/packages/wpdesk-bm-sdk)
```

###  Alternatives

[imdhemy/google-play-billing

Google Play Billing

491.3M5](/packages/imdhemy-google-play-billing)[bitpay/sdk

Complete version of the PHP library for the new cryptographically secure BitPay API

42337.5k4](/packages/bitpay-sdk)[buckaroo/sdk

Buckaroo payment SDK

12189.1k9](/packages/buckaroo-sdk)[contica/facturador-electronico-cr

Un facturador de código libre para integrar facturación electrónica en Costa Rica a un proyecto PHP

2128.8k](/packages/contica-facturador-electronico-cr)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
