PHPackages                             digital-link/saferpay - 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. digital-link/saferpay

ActiveLibrary[Payment Processing](/categories/payments)

digital-link/saferpay
=====================

Saferpay payment service library

3.0.2(11y ago)01031MITPHPPHP &gt;=5.3.3

Since Feb 25Pushed 11y ago4 watchersCompare

[ Source](https://github.com/digital-link/saferpay)[ Packagist](https://packagist.org/packages/digital-link/saferpay)[ RSS](/packages/digital-link-saferpay/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (5)Versions (24)Used By (1)

### Saferpay API, an unofficial implementation

[](#saferpay-api-an-unofficial-implementation)

[![Build Status](https://camo.githubusercontent.com/35d246ffe6895bcc9ec25cf9e1009997059d4c5dbd1b3e3e65c78a07865fd25c/68747470733a2f2f6170692e7472617669732d63692e6f72672f7061796d656e742f73616665727061792e706e673f6272616e63683d6d6173746572)](https://travis-ci.org/payment/saferpay)[![Total Downloads](https://camo.githubusercontent.com/82b3fc917a806c4be9629c0bb514822707055763695d5221616344d830aede37/68747470733a2f2f706f7365722e707567782e6f72672f7061796d656e742f73616665727061792f646f776e6c6f6164732e706e67)](https://packagist.org/packages/payment/saferpay)[![Latest Stable Version](https://camo.githubusercontent.com/8d950019666fdf90df37bcdfbe65f1c9525beb59982309529f0ef3ff07a63f74/68747470733a2f2f706f7365722e707567782e6f72672f7061796d656e742f73616665727061792f762f737461626c652e706e67)](https://packagist.org/packages/payment/saferpay)

#### installation

[](#installation)

##### with buzz

[](#with-buzz)

```
"payment/saferpay": "~3.0"
"payment/httpclient-buzz": "~1.2"

```

##### with guzzle

[](#with-guzzle)

```
"payment/saferpay": "~3.0"
"payment/httpclient-buzz": "~1.0"

```

#### a simple implementation

[](#a-simple-implementation)

##### uses default (with buzz client)

[](#uses-default-with-buzz-client)

```
use Payment\HttpClient\BuzzClient;
use Payment\Saferpay\Data\PayInitParameter;

```

##### creating a saferpay instance

[](#creating-a-saferpay-instance)

```
$saferpay = new Saferpay;

```

##### set httpclient (with buzz)

[](#set-httpclient-with-buzz)

```
$saferpay->setHttpClient(new BuzzClient());

```

##### implementation

[](#implementation)

```
$amount = 1200;
$currency = 'CHF';

if (getParam('status') == 'success') {
    $payConfirmParameter = $saferpay->verifyPayConfirm(getParam('DATA'), getParam('SIGNATURE'));
    if ($payConfirmParameter->get('AMOUNT') == $amount && $payConfirmParameter->get('CURRENCY') == $currency) {
        $saferpay->payCompleteV2($payConfirmParameter, 'Settlement');
        echo 'payment success!';
    } else {
        $saferpay->payCompleteV2($payConfirmParameter, 'Cancel');
        echo 'payment failed!';
    }
} else {
    $payInitParameter = new PayInitParameter();
    $payInitParameter->setAccountid(PayInitParameter::SAFERPAYTESTACCOUNT_ACCOUNTID);
    $payInitParameter->setAmount($amount);
    $payInitParameter->setCurrency($currency);
    $payInitParameter->setDescription(sprintf('Ordernumber: %s', '000001'));
    $payInitParameter->setSuccesslink(requestUrl() . '?status=success');
    $payInitParameter->setFaillink(requestUrl() . '?status=fail');
    $payInitParameter->setBacklink(requestUrl() . '?status=back');
    $payInitParameter->setDelivery('no'); // hide address form
    header('Location: ' . $saferpay->createPayInit($payInitParameter) , 302);
}

```

#### a billpay implemention (works only with providerset, use it standalone)

[](#a-billpay-implemention-works-only-with-providerset-use-it-standalone)

##### uses billpay (with buzz client)

[](#uses-billpay-with-buzz-client)

```
use Payment\HttpClient\BuzzClient;
use Payment\Saferpay\Data\PayInitParameter;
use Payment\Saferpay\Data\PayConfirmParameter;
use Payment\Saferpay\Data\PayCompleteParameter;
use Payment\Saferpay\Data\PayCompleteResponse;
use Payment\Saferpay\Data\Billpay\BillpayPayInitParameter;
use Payment\Saferpay\Data\Billpay\BillpayPayConfirmParameter;
use Payment\Saferpay\Data\Billpay\BillpayPayCompleteParameter;
use Payment\Saferpay\Data\Billpay\BillpayPayCompleteResponse;
use Payment\Saferpay\Data\Collection\Collection;

```

##### creating a saferpay instance

[](#creating-a-saferpay-instance-1)

```
$saferpay = new Saferpay;

```

##### set httpclient (with buzz)

[](#set-httpclient-with-buzz-1)

```
$saferpay->setHttpClient(new BuzzClient());

```

##### implementation

[](#implementation-1)

```
$amount = 1200;
$currency = 'CHF';

if (getParam('status') == 'success') {
    $payConfirmParameter = new PayConfirmParameter;
    $billpayPayConfirmParameter = new BillpayPayConfirmParameter;

    $payConfirmParameterCollection = new Collection($payConfirmParameter->getRequestUrl());
    $payConfirmParameterCollection->addCollectionItem($payConfirmParameter);
    $payConfirmParameterCollection->addCollectionItem($billpayPayConfirmParameter);

    $payConfirmParameterCollection = $this->getSaferpay()->verifyPayConfirm(
        getParam('DATA'),
        getParam('SIGNATURE'),
        $objPayConfirmParameterCollection
    );

    $payCompleteParameter = new PayCompleteParameter;
    $billpayPayCompleteParameter = new BillpayPayCompleteParameter;

    $payCompleteParameterCollection = new Collection($payCompleteParameter->getRequestUrl());
    $payCompleteParameterCollection->addCollectionItem($payCompleteParameter);
    $payCompleteParameterCollection->addCollectionItem($billpayPayCompleteParameter);

    $payCompleteResponse = new PayCompleteResponse;
    $billpayPayCompleteResponse = new BillpayPayCompleteResponse;

    $payCompleteResponseCollection = new Collection($payCompleteResponse->getRequestUrl());
    $payCompleteResponseCollection->addCollectionItem($payCompleteResponse);
    $payCompleteResponseCollection->addCollectionItem($billpayPayCompleteResponse);

    if ($payConfirmParameterCollection->get('AMOUNT') == $amount &&
        $payConfirmParameterCollection->get('CURRENCY') == $currency) {

        $this->getSaferpay()->payCompleteV2(
            $payConfirmParameterCollection,
            'Settlement',
            PayInitParameter::SAFERPAYTESTACCOUNT_SPPASSWORD,
            $payCompleteParameterCollection,
            $payCompleteResponseCollection
        );

        echo 'payment success!';
    } else {
        $this->getSaferpay()->payCompleteV2(
            $payConfirmParameterCollection,
            'Cancel',
            PayInitParameter::SAFERPAYTESTACCOUNT_SPPASSWORD,
            $payCompleteParameterCollection,
            $payCompleteResponseCollection
        );

        echo 'payment failed!';
    }
} else {
    $payInitParameter = new PayInitParameter();
    $payInitParameter->setAccountid(PayInitParameter::SAFERPAYTESTACCOUNT_ACCOUNTID);
    $payInitParameter->setAmount($amount);
    $payInitParameter->setCurrency($currency);
    $payInitParameter->setDescription(sprintf('Ordernumber: %s', '000001'));
    $payInitParameter->setSuccesslink(requestUrl() . '?status=success');
    $payInitParameter->setFaillink(requestUrl() . '?status=fail');
    $payInitParameter->setBacklink(requestUrl() . '?status=back');
    $payInitParameter->setProviderset(array(BillpayPayInitParameter::PROVIDERSET_BILLPAY_INVOICE));

    $billpayPayInitParameter = new BillpayPayInitParameter();
    $billpayPayInitParameter->setLegalform(BillpayPayInitParameter::LEGALFORM_MISC);
    $billpayPayInitParameter->setDeliveryGender(BillpayPayInitParameter::GENDER_COMPANY);
    $billpayPayInitParameter->setDeliveryFirstname('John');
    $billpayPayInitParameter->setDeliveryLastname('Doe');
    $billpayPayInitParameter->setDeliveryStreet('Samplestreet 0');
    $billpayPayInitParameter->setDeliveryZip('00000');
    $billpayPayInitParameter->setDeliveryCity('Samplecity');
    $billpayPayInitParameter->setDeliveryCountry('US');
    $billpayPayInitParameter->setDeliveryPhone('+10000000000');

    $payInitParameterCollection = new Collection($payInitParameter->getRequestUrl());
    $payInitParameterCollection->addCollectionItem($payInitParameter);
    $payInitParameterCollection->addCollectionItem($billpayPayInitParameter);

    header('Location: ' . $saferpay->createPayInit($payInitParameterCollection) , 302);
}

```

##### we define some helpers (plain php)

[](#we-define-some-helpers-plain-php)

```
function requestUrl()
{
    $protocol = strtolower(substr($_SERVER['SERVER_PROTOCOL'], 0, strpos($_SERVER['SERVER_PROTOCOL'], '/')));
    return $protocol . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
}

function getParam($key, $default = null)
{
    return array_key_exists($key, $_REQUEST) ? $_REQUEST[$key] : $default;
}

```

###  Health Score

30

—

LowBetter than 64% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity9

Limited adoption so far

Community14

Small or concentrated contributor base

Maturity68

Established project with proven stability

 Bus Factor1

Top contributor holds 94.2% 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 ~32 days

Recently: every ~56 days

Total

22

Last Release

4150d ago

Major Versions

1.0.2 → 2.0.02013-06-17

2.2.2 → 3.0.02014-02-01

2.2.3 → 3.0.22014-07-03

### Community

Maintainers

![](https://www.gravatar.com/avatar/d3ca218ce2e6f28d87dee3957522e3bc5e33fa7d4f4a50808f9549abc1f25f84?d=identicon)[digital-link](/maintainers/digital-link)

---

Top Contributors

[![dominikzogg](https://avatars.githubusercontent.com/u/1011217?v=4)](https://github.com/dominikzogg "dominikzogg (163 commits)")[![mikemeier](https://avatars.githubusercontent.com/u/776406?v=4)](https://github.com/mikemeier "mikemeier (9 commits)")[![samiaddami](https://avatars.githubusercontent.com/u/9959288?v=4)](https://github.com/samiaddami "samiaddami (1 commits)")

---

Tags

paymente-commercesaferpay

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/digital-link-saferpay/health.svg)

```
[![Health](https://phpackages.com/badges/digital-link-saferpay/health.svg)](https://phpackages.com/packages/digital-link-saferpay)
```

###  Alternatives

[aimeos/ai-payments

Payment extension for Aimeos e-commerce solutions

2160.7k](/packages/aimeos-ai-payments)[enupal/stripe

Allows customers sign up for recurring and one-time payments with Stripe, perfect for orders, donations, subscriptions, and events. Create simple payment forms in seconds easily without coding. For Craft CMS 3.x

3416.5k1](/packages/enupal-stripe)[commerceredsys/sermepa

Payment gateway library for spanish banks that use Sermepa/Redsýs systems.

1062.0k](/packages/commerceredsys-sermepa)[sunnysideup/ecommerce

Silverstripe E-commerce Application

257.2k79](/packages/sunnysideup-ecommerce)

PHPackages © 2026

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