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');
}
}