PHPackages                             mpyazilim/mppos - 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. mpyazilim/mppos

ActiveLibrary[Payment Processing](/categories/payments)

mpyazilim/mppos
===============

Unified Turkish Bank POS Gateway (Kuveyt Turk, Vakif Katilim, etc.)

v1.1.0(5mo ago)028MITPHPPHP &gt;=8.1

Since Jan 22Pushed 3mo agoCompare

[ Source](https://github.com/mhmtpacal/MPPos)[ Packagist](https://packagist.org/packages/mpyazilim/mppos)[ RSS](/packages/mpyazilim-mppos/feed)WikiDiscussions main Synced today

READMEChangelog (1)DependenciesVersions (4)Used By (0)

MPPos
=====

[](#mppos)

MPYazilim multi-bank POS kutuphanesi.

Bankalarin `payment`, `cancel`, `refund` ve `partialRefund` islemlerini tek API altinda toplar.

BankaDurumKuveytTurk V2Active: Payment, Cancel, Refund, PartialRefundVakif KatilimActive: Payment, Cancel, Refund, PartialRefundParamPOSActive: Payment, Cancel, Refund, PartialRefundGereksinimler
-------------

[](#gereksinimler)

- PHP `8.1+`

Kurulum
-------

[](#kurulum)

```
composer require mpyazilim/mppos
```

Temel Kullanim
--------------

[](#temel-kullanim)

```
use MPPos\MPPos;
```

KuveytTurk
----------

[](#kuveytturk)

### Payment

[](#payment)

KuveytTurk tarafinda odeme 2 adimlidir:

1. `payment()` ile 3D HTML alinur
2. callback sonrasinda `completePayment()` ile provizyon alinur

```
$pos = MPPos::kuveytturk()
    ->account([
        'merchant_id' => '...',
        'customer_id' => '...',
        'username' => '...',
        'password' => '...',
    ])
    ->payload([
        'merchantOrderId' => 'ORD-1001',
        'amount' => 149.90,
        'card_holder' => 'TEST USER',
        'card_number' => '5188961939192544',
        'exp_month' => '06',
        'exp_year' => '25',
        'cvv' => '929',
        'ok_url' => 'https://site.com/kuveyt-ok',
        'fail_url' => 'https://site.com/kuveyt-fail',
        'client_ip' => '1.2.3.4',
        'phone' => '5555555555',
        'email' => 'user@example.com',
    ])
    ->test(true);

$init = $pos->payment();

if ($init['ok']) {
    echo $init['html'];
}
```

### Payment Callback ve Provizyon

[](#payment-callback-ve-provizyon)

```
$pos = MPPos::kuveytturk()
    ->account([
        'merchant_id' => '...',
        'customer_id' => '...',
        'username' => '...',
        'password' => '...',
    ])
    ->payload([
        'AuthenticationResponse' => $_POST['AuthenticationResponse'] ?? '',
    ])
    ->test(true);

$auth = $pos->parsePaymentResponse();

if ($auth['ok']) {
    $pos->completePayment();
    $response = $pos->getResponse();
}
```

### Cancel

[](#cancel)

```
$pos = MPPos::kuveytturk()
    ->account([
        'merchant_id' => '...',
        'customer_id' => '...',
        'username' => '...',
        'password' => '...',
    ])
    ->payload([
        'remote_order_id' => '319800289',
        'merchantOrderId' => 'ORD-1001',
        'ref_ret_num' => '035617458943',
        'auth_code' => '412371',
        'transaction_id' => '458943',
    ]);

$pos->cancel();
$response = $pos->getResponse();
```

### Refund

[](#refund)

```
$pos = MPPos::kuveytturk()
    ->account([
        'merchant_id' => '...',
        'customer_id' => '...',
        'username' => '...',
        'password' => '...',
    ])
    ->payload([
        'remote_order_id' => '319800289',
        'merchantOrderId' => 'ORD-1001',
        'ref_ret_num' => '035617458943',
        'auth_code' => '412371',
        'transaction_id' => '458943',
        'amount' => 149.90,
    ]);

$pos->refund();
$response = $pos->getResponse();
```

### PartialRefund

[](#partialrefund)

```
$pos = MPPos::kuveytturk()
    ->account([
        'merchant_id' => '...',
        'customer_id' => '...',
        'username' => '...',
        'password' => '...',
    ])
    ->payload([
        'remote_order_id' => '319800289',
        'merchantOrderId' => 'ORD-1001',
        'ref_ret_num' => '035617458943',
        'auth_code' => '412371',
        'transaction_id' => '458943',
        'amount' => 50.00,
    ]);

$pos->partialRefund();
$response = $pos->getResponse();
```

Vakif Katilim
-------------

[](#vakif-katilim)

### Payment

[](#payment-1)

Vakif Katilim tarafinda da 3D odeme 2 adimlidir:

1. `payment()` ile bankanin 3D HTML formu alinur
2. callback sonrasinda `completePayment()` ile provizyon alinur

```
$pos = MPPos::vakifkatilim()
    ->account([
        'merchant_id' => '...',
        'customer_id' => '...',
        'username' => '...',
        'password' => '...',
    ])
    ->payload([
        'merchantOrderId' => 'ORD-2001',
        'amount' => 149.90,
        'card_holder' => 'TEST USER',
        'card_number' => '5353550000958906',
        'exp_month' => '01',
        'exp_year' => '26',
        'cvv' => '741',
        'ok_url' => 'https://site.com/vakif-ok',
        'fail_url' => 'https://site.com/vakif-fail',
        'client_ip' => '1.2.3.4',
        'address' => [
            'Type' => '1',
            'Name' => 'Test User',
            'PhoneNumber' => '5555555555',
            'AddressId' => '1',
            'Email' => 'user@example.com',
        ],
    ])
    ->test(true);

$init = $pos->payment();

if ($init['ok']) {
    echo $init['html'];
}
```

### Payment Callback ve Provizyon

[](#payment-callback-ve-provizyon-1)

Vakif Katilim callback tarafinda genelde `ResponseMessage` icinde url-encoded XML doner.

```
$pos = MPPos::vakifkatilim()
    ->account([
        'merchant_id' => '...',
        'customer_id' => '...',
        'username' => '...',
        'password' => '...',
    ])
    ->payload([
        'ResponseMessage' => $_POST['ResponseMessage'] ?? '',
        'ResponseCode' => $_POST['ResponseCode'] ?? '',
        'MerchantOrderId' => $_POST['MerchantOrderId'] ?? '',
        'OrderId' => $_POST['OrderId'] ?? '',
        'MD' => $_POST['MD'] ?? '',
        'HashData' => $_POST['HashData'] ?? '',
    ])
    ->test(true);

$auth = $pos->parsePaymentResponse();

if ($auth['ok']) {
    $pos->completePayment();
    $response = $pos->getResponse();
}
```

### Cancel

[](#cancel-1)

```
$pos = MPPos::vakifkatilim()
    ->account([
        'merchant_id' => '...',
        'customer_id' => '...',
        'username' => '...',
        'password' => '...',
    ])
    ->payload([
        'merchantOrderId' => 'ORD-2001',
        'remote_order_id' => '15161',
        'amount' => 149.90,
    ]);

$pos->cancel();
$response = $pos->getResponse();
```

### Refund

[](#refund-1)

```
$pos = MPPos::vakifkatilim()
    ->account([
        'merchant_id' => '...',
        'customer_id' => '...',
        'username' => '...',
        'password' => '...',
    ])
    ->payload([
        'merchantOrderId' => 'ORD-2001',
        'remote_order_id' => '15161',
    ]);

$pos->refund();
$response = $pos->getResponse();
```

### PartialRefund

[](#partialrefund-1)

```
$pos = MPPos::vakifkatilim()
    ->account([
        'merchant_id' => '...',
        'customer_id' => '...',
        'username' => '...',
        'password' => '...',
    ])
    ->payload([
        'merchantOrderId' => 'ORD-2001',
        'remote_order_id' => '15161',
        'amount' => 50.00,
    ]);

$pos->partialRefund();
$response = $pos->getResponse();
```

Not: Vakif Katilim test URL'leri dokumanda acik verilmedigi icin gerekirse `account()` icine `payment_url`, `provision_url`, `cancel_url`, `refund_url`, `partial_refund_url` override alanlari verilebilir.

ParamPOS
--------

[](#parampos)

### Payment

[](#payment-2)

```
$pos = MPPos::parampos()
    ->account([
        'client_code' => '...',
        'username' => '...',
        'password' => '...',
        'guid' => '...',
    ])
    ->payload([
        'order_id' => 'ORD-3001',
        'amount' => 14990,
        'card_holder' => 'TEST USER',
        'card_number' => '4546711234567894',
        'exp_month' => '12',
        'exp_year' => '26',
        'cvv' => '000',
        'success_url' => 'https://site.com/param-ok',
        'fail_url' => 'https://site.com/param-fail',
        'phone' => '5555555555',
        'ip' => '1.2.3.4',
    ]);

$response = $pos->payment();
```

### Payment Complete3D

[](#payment-complete3d)

```
$response = MPPos::parampos()
    ->account([
        'client_code' => '...',
        'username' => '...',
        'password' => '...',
        'guid' => '...',
    ])
    ->complete3D(
        ucdMd: $_POST['md'] ?? '',
        islemGuid: $_POST['islemGUID'] ?? '',
        orderId: $_POST['orderId'] ?? ''
    );
```

### Cancel

[](#cancel-2)

```
$pos = MPPos::parampos()
    ->account([
        'client_code' => '...',
        'username' => '...',
        'password' => '...',
        'guid' => '...',
    ])
    ->payload([
        'order_id' => 'ORD-3001',
        'amount' => 14990,
    ]);

$pos->cancel();
$response = $pos->getResponse();
```

### Refund

[](#refund-2)

```
$pos = MPPos::parampos()
    ->account([
        'client_code' => '...',
        'username' => '...',
        'password' => '...',
        'guid' => '...',
    ])
    ->payload([
        'order_id' => 'ORD-3001',
        'amount' => 14990,
    ]);

$pos->refund();
$response = $pos->getResponse();
```

### PartialRefund

[](#partialrefund-2)

```
$pos = MPPos::parampos()
    ->account([
        'client_code' => '...',
        'username' => '...',
        'password' => '...',
        'guid' => '...',
    ])
    ->payload([
        'order_id' => 'ORD-3001',
        'amount' => 5000,
    ]);

$pos->partialRefund();
$response = $pos->getResponse();
```

Response
--------

[](#response)

Tum banka islemlerinden sonra sonuc verisi `getResponse()` ile alinabilir.

```
Array
(
    [ok] => true
    [code] => 00
    [message] => PROVIZYON ALINDI
    [http_code] => 200
    [type] => Sale
    [provider] => vakifkatilim
)
```

###  Health Score

36

—

LowBetter than 79% of packages

Maintenance77

Regular maintenance activity

Popularity7

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity46

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

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 ~6 days

Total

2

Last Release

156d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/ea00149e9e304d6ab6a2adc2fb46041c7c8d8e9946675b4e3c46c1423b4e6d20?d=identicon)[mhmtpacal](/maintainers/mhmtpacal)

---

Top Contributors

[![mhmtpacal](https://avatars.githubusercontent.com/u/51230161?v=4)](https://github.com/mhmtpacal "mhmtpacal (46 commits)")

### Embed Badge

![Health badge](/badges/mpyazilim-mppos/health.svg)

```
[![Health](https://phpackages.com/badges/mpyazilim-mppos/health.svg)](https://phpackages.com/packages/mpyazilim-mppos)
```

###  Alternatives

[msilabs/bkash

bKash Payment Gateway API for Laravel Framework.

181.2k](/packages/msilabs-bkash)

PHPackages © 2026

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