API Verwendung

Einführung

Um die API leicht anzusteuern haben wir Facaden bereitgestellt, welche das Handling vereinfachen.

Die verschiedenen API Endpunkte benötigen die Klarna Order Id. Diese wird als Transaktions Id einer Bestellung in Shopware gespeichert.

{tip} Wenn Sie einen "schlauen" Editor verwenden (wie z.B. PhpStorm) werden Ihnen die Methoden alle automatisch vorgeschlagen und Sie können auch leichter Suchen.

Bestellung abrufen

Um eine Bestellung abzurufen, benötigen Sie die BestitKlarnaOrderManagement\Components\Facade\Order Facade. Über diese können Sie die get Methode aufrufen, welche eine Bestellung von Klarna abruft.

<?php

namespace App\Example;

use BestitKlarnaOrderManagement\Components\Facade\Order as OrderFacade;

class Example
{
    /** @var OrderFacade */
    protected $orderFacade;

    public function __construct(OrderFacade $orderFacade)
    {
        $this->orderFacade = $orderFacade;
    }

    public function example()
    {
        $klarnaResponse = $this->orderFacade->get('klarna-order-id');
    }
}

Betrag erfassen

{tip} Das Positions JSON muss so formatiert werden, dass es in ein array von BestitKlarnaOrderManagement\Components\Api\Model\LineItem deserialisiert werden kann.

Um einen Betrag zu erfassen, benötigen Sie die BestitKlarnaOrderManagement\Components\Facade\Capture Facade. Über diese können Sie die create Methode aufrufen, welche einen Betrag erfasst.

Sie können der Methode auch die Positionen (als JSON), einen Kommentar und Versandinformationen mitgeben.

<?php

namespace App\Example;

use BestitKlarnaOrderManagement\Components\Facade\Capture as CaptureFacade;

class Example
{
    /** @var CaptureFacade */
    protected $captureFacade;

    public function __construct(CaptureFacade $captureFacade)
    {
        $this->captureFacade = $captureFacade;
    }

    public function example()
    {
        $betragInCents = 500;

        $klarnaResponse = $this->captureFacade->create('klarna-order-id', $betragInCents);
    }
}

Betrag rückerstatten

Um einen Betrag zu erstatten, benötigen Sie die BestitKlarnaOrderManagement\Components\Facade\Refund Facade. Über diese können Sie die create Methode aufrufen, welche einen Betrag erstattet.

Sie können der Methode auch die Positionen (als JSON) und einen Kommentar mitgeben.

<?php

namespace App\Example;

use BestitKlarnaOrderManagement\Components\Facade\Refund as RefundFacade;

class Example
{
    /** @var RefundFacade */
    protected $refundFacade;

    public function __construct(RefundFacade $refundFacade)
    {
        $this->refundFacade = $refundFacade;
    }

    public function example()
    {
        $betragInCents = 500;

        $klarnaResponse = $this->refundFacade->create('klarna-order-id', $betragInCents);
    }
}

Bestellung aktualisieren

Um eine Bestellung zu aktualisieren, benötigen Sie die BestitKlarnaOrderManagement\Components\Facade\Order Facade. Über diese können Sie die updateOrder Methode aufrufen, welche eine Bestellung aktualisiert.

Diese Methode benötigt die Klarna Order Id, den neuen Gesamtbetrag der Bestellung und ein array von BestitKlarnaOrderManagement\Components\Api\Model\LineItem Instanzen.

<?php

namespace App\Example;

use BestitKlarnaOrderManagement\Components\Api\Model\LineItem;
use BestitKlarnaOrderManagement\Components\Api\Model\ProductIdentifiers;
use BestitKlarnaOrderManagement\Components\Constants;
use BestitKlarnaOrderManagement\Components\Facade\Order as OrderFacade;

class Example
{
    /** @var OrderFacade */
    protected $orderFacade;

    public function __construct(OrderFacade $orderFacade)
    {
        $this->orderFacade = $orderFacade;
    }

    public function example()
    {
        $lineItem = new LineItem();
        $lineItem->type = Constants::KLARNA_LINE_ITEM_TYPE_PHYSICAL;
        $lineItem->totalTaxAmount = 0;
        $lineItem->totalAmount = 0;
        $lineItem->quantity = 1;
        $lineItem->name = 'Free article';
        $lineItem->productIdentifiers = new ProductIdentifiers(); // ProductIdentifiers are blank intentionally
        $lineItem->taxRate = 0;
        $lineItem->totalDiscountAmount = 0;
        $lineItem->unitPrice = 0;
        $lineItem->quantityUnit = 'Pieces';
        $lineItem->reference = 'SW1000';

        $klarnaResponse = $this->orderFacade->updateOrder('klarna-order-id', 0, [$lineItem]);
    }
}

Autorisierung verlängern

Um eine Autorisierung zu verlängern, benötigen Sie die BestitKlarnaOrderManagement\Components\Facade\Order Facade. Über diese können Sie die extendAuthTime Methode aufrufen, welche eine Autorisierung verlängert.

<?php

namespace App\Example;

use BestitKlarnaOrderManagement\Components\Facade\Order as OrderFacade;

class Example
{
    /** @var OrderFacade */
    protected $orderFacade;

    public function __construct(OrderFacade $orderFacade)
    {
        $this->orderFacade = $orderFacade;
    }

    public function example()
    {
        $klarnaResponse = $this->orderFacade->extendAuthTime('klarna-order-id');
    }
}

Verbleibenden Betrag freigeben

Um den verbleibenden Betrag freizugeben, benötigen Sie die BestitKlarnaOrderManagement\Components\Facade\Order Facade. Über diese können Sie die releaseRemainingAmount Methode aufrufen, welche den verbleibenden Betrag freigibt.

<?php

namespace App\Example;

use BestitKlarnaOrderManagement\Components\Facade\Order as OrderFacade;

class Example
{
    /** @var OrderFacade */
    protected $orderFacade;

    public function __construct(OrderFacade $orderFacade)
    {
        $this->orderFacade = $orderFacade;
    }

    public function example()
    {
        $klarnaResponse = $this->orderFacade->releaseRemainingAmount('klarna-order-id');
    }
}

Rechnung erneut senden

Um eine Rechnung erneut zu senden, benötigen Sie die BestitKlarnaOrderManagement\Components\Facade\Capture Facade. Über diese können Sie die resend Methode aufrufen, welche die Rechnung erneut sendet.

Da eine Rechnung per erfassten Betrag erstellt wird, kann auch nur für einen bestimmten erfassten Betrag eine Rechnung erneut versendet werden. Hierzu wird die Capture Id benötigt, welche bei dem Bestellabruf mitgeliefert wird.

<?php

namespace App\Example;

use BestitKlarnaOrderManagement\Components\Facade\Capture as CaptureFacade;

class Example
{
    /** @var CaptureFacade */
    protected $captureFacade;

    public function __construct(CaptureFacade $captureFacade)
    {
        $this->captureFacade = $captureFacade;
    }

    public function example()
    {
        $klarnaResponse = $this->captureFacade->resend('klarna-order-id', 'capture-id');
    }
}

Bestellung stornieren

Um eine Bestellung zu stornieren, benötigen Sie die BestitKlarnaOrderManagement\Components\Facade\Order Facade. Über diese können Sie die cancel Methode aufrufen, welche die Bestellung storniert.

<?php

namespace App\Example;

use BestitKlarnaOrderManagement\Components\Facade\Order as OrderFacade;

class Example
{
    /** @var OrderFacade */
    protected $orderFacade;

    public function __construct(OrderFacade $orderFacade)
    {
        $this->orderFacade = $orderFacade;
    }

    public function example()
    {
        $klarnaResponse = $this->orderFacade->cancel('klarna-order-id');
    }
}