Skip to content
Reindert Vetter edited this page Jan 7, 2022 · 39 revisions

Introduction

For how to handle the exceptions correctly, see Exceptions.

Show

To load more information see Extra Information.

use \PlugAndPay\Sdk\Service\Client;
use \PlugAndPay\Sdk\Service\OrderService;

$client  = new Client($token);
$service = new OrderService($client);

$order = $service->find(1);

$createdAt     = $order->createdAt();
$deletedAt     = $order->deletedAt();
$id            = $order->id();
$invoiceNumber = $order->invoiceNumber();
$isFirst       = $order->isFirst();
$isHidden      = $order->isHidden();
$invoiceStatus = $order->invoiceStatus();
$mode          = $order->mode();
$reference     = $order->reference();
$source        = $order->source();
$subtotal      = $order->subtotal()->value();
$total         = $order->total()->value();
$updatedAt     = $order->updatedAt();

Index

To load more information see Extra Information.

use \PlugAndPay\Sdk\Enum\OrderIncludes;
use \PlugAndPay\Sdk\Service\Client;
use \PlugAndPay\Sdk\Service\OrderService;

$client  = new Client($token);
$service = new OrderService($client);

$orders = $service->include(OrderIncludes::BILLING, OrderIncludes::COMMENTS)->get();

Filter

use \PlugAndPay\Sdk\Service\Client;
use \PlugAndPay\Sdk\Service\OrderService;

$client  = new Client($token);
$service = new OrderService($client);

$orders = $service->get(function(OrderFilter $filter) {
    $filter
      ->affiliateId(1234)
      ->checkoutId(1234)
      ->contractId(1234)
      ->contractType(\PlugAndPay\Sdk\Enum\ContractType::SUBSCRIPTION)
      ->country('NL')
      ->direction(\PlugAndPay\Sdk\Enum\Direction::DESC)
      ->discountCode('sale123')
      ->email('maarten.veenstra@example.net')
      ->hasBump(true)
      ->hasTax(true)
      ->invoiceStatus(\PlugAndPay\Sdk\Enum\InvoiceStatus::FINAL)
      ->isDeleted(true)
      ->isFirst(true)
      ->isHidden(true)
      ->isUpsell(true)
      ->limit(1)
      ->mode(\PlugAndPay\Sdk\Enum\OrderMode::LIVE)
      ->page(2)
      ->paymentStatus(\PlugAndPay\Sdk\Enum\PaymentStatus::PAID)
      ->productId(1234)
      ->productTag('color-blue')
      ->query('Piet Niet')
      ->sinceInvoiceDate(new DateTime())
      ->sincePaidAt(new DateTime())
      ->sort(\PlugAndPay\Sdk\Enum\OrderSortType::PAID_AT)
      ->source(\PlugAndPay\Sdk\Enum\OrderSource::API)
      ->untilInvoiceDate(new DateTime())
      ->untilPaidAt(new DateTime());
});

Create Order

When creating an order, to load more information see Extra Information.

use \PlugAndPay\Sdk\Entity\Address;
use \PlugAndPay\Sdk\Entity\Billing;
use \PlugAndPay\Sdk\Entity\Comment;
use \PlugAndPay\Sdk\Entity\Contact;
use \PlugAndPay\Sdk\Entity\Item;
use \PlugAndPay\Sdk\Entity\Money;
use \PlugAndPay\Sdk\Entity\Order;
use \PlugAndPay\Sdk\Entity\Payment;
use \PlugAndPay\Sdk\Entity\PaymentRequest;
use \PlugAndPay\Sdk\Enum\OrderIncludes;
use \PlugAndPay\Sdk\Enum\PaymentRequestType;
use \PlugAndPay\Sdk\Enum\PaymentStatus;
use \PlugAndPay\Sdk\Enum\TaxExempt;
use \PlugAndPay\Sdk\Service\Client;
use \PlugAndPay\Sdk\Service\OrderService;

$client  = new Client($token);
$service = new OrderService($client);
$order = (new Order())
    ->setTaxExempt(TaxExempt::REVERSE)
    ->setTaxIncluded(true)
    ->setHidden(false)
    ->setBilling((new Billing())
        ->setAddress((new Address())
            ->setCity('Rijnsburg')
            ->setCountry('NL')
            ->setStreet('Koestraat')
            ->setHouseNumber('55 b')
            ->setZipcode('2231 JE')
        )
        ->setContact((new Contact())
            ->setCompany('RosLie B.V.')
            ->setEmail('test@test.nl')
            ->setFirstName('Bilal')
            ->setLastName('de Wit')
            ->setTelephone('0678786754')
            ->setWebsite('roslie.nl')
            ->setVatIdNumber('NL000099998B57')
        )
    )
    ->setComments(
        [
            (new Comment())->setValue('the comment'),
        ]
    )
    ->setItems(
        [
            (new Item())
                ->setAmount(new Money(10.))
                ->setLabel('the-label')
                ->setQuantity(2)
                ->setTaxByRateId(123)
                ->setProductId(123),
        ]
    )
    ->setPayment((new Payment())
        ->setStatus(PaymentStatus::PROCESSING))
    ->setPaymentRequest((new PaymentRequest())
        ->setType(PaymentRequestType::LINK)
        ->setIban('NL55INGB0000000000')
        ->setName('John Doe')
    )
    ->setTags(['first_tag', 'second_tag']);

$order = $service->create($order);
$orderId = $order->id();

Update Order

See Extra Information to load more information in your response. For now, you cannot update order items and discounts.

use \PlugAndPay\Sdk\Entity\Order;
use \PlugAndPay\Sdk\Enum\OrderIncludes;
use \PlugAndPay\Sdk\Service\Client;
use \PlugAndPay\Sdk\Service\OrderService;

$client  = new Client($token);
$service = new OrderService($client);
$orderId = 12;

$order = $service->update($orderId, function(Order $order) {
    $order->setTags(['first_tag', 'second_tag']);
    $order->payment()->setStatus(PaymentStatus::PROCESSING);
    $order->billing()->contact()->setEmail('rosalie39@example.net');
})

Destroy Order

use \PlugAndPay\Sdk\Service\Client;
use \PlugAndPay\Sdk\Service\OrderService;

$client  = new Client($token);
$service = new OrderService($client);
$orderId = 12;

$service->delete($orderId)

Extra Information

By using the include method you can get more information. It is important that you only request the information you need.

use \PlugAndPay\Sdk\Enum\OrderIncludes;

$service
    ->include(
        OrderIncludes::BILLING,
        OrderIncludes::COMMENTS,
        OrderIncludes::ITEMS,
        OrderIncludes::PAYMENT,
        OrderIncludes::TAGS,
        OrderIncludes::TAXES,
    )
    ->find(1);

Billing

$order = $service
    ->include(\PlugAndPay\Sdk\Enum\OrderIncludes::BILLING)
    ->find(1);

$billing = $order->billing();

$company      = $billing->company();
$email        = $billing->email();
$firstName    = $billing->firstName();
$lastName     = $billing->lastName();
$telephone    = $billing->telephone();
$website      = $billing->website();
$city         = $billing->address()->city();
$country      = $billing->address()->country();
$street       = $billing->address()->street();
$houseNumber  = $billing->address()->houseNumber();
$zipcode      = $billing->address()->zipcode();

Comments

$order = $service
    ->include(\PlugAndPay\Sdk\Enum\OrderIncludes::COMMENTS)
    ->find(1);

$comment = $order->comments()[0];

$createdAt = $comment->createdAt();
$id        = $comment->id();
$updatedAt = $comment->updatedAt();
$value     = $comment->value();

Discount

/** @var \PlugAndPay\Sdk\Entity\Order $order */
$order = $service
    ->include(\PlugAndPay\Sdk\Enum\OrderIncludes::DISCOUNTS)
    ->find(1);

$discount = $order->discounts()[0];
// Or receive all discounts per item:
$order->items()[0]->discounts()[0];

$value    = $discount->amount()->value();
$currency = $discount->amount()->currency();
$code     = $discount->code();
$type     = $discount->type();

Items

$order = $service
    ->include(\PlugAndPay\Sdk\Enum\OrderIncludes::ITEMS)
    ->find(1);

$item = $order->items()[0];

$discount      = $item->discounts()[0]->amount()->value();
$discountCode  = $item->discounts()[0]->code();
$id            = $item->id();
$label         = $item->label();
$productId     = $item->productId();
$quantity      = $item->quantity();
$subtotal      = $item->subtotal()->value();

Payment

$order = $service
    ->include(\PlugAndPay\Sdk\Enum\OrderIncludes::PAYMENT)
    ->find(1);

$payment = $order->payment();

$orderId = $payment->orderId();
$paidAt  = $payment->paidAt();
$status  = $payment->status();
$url     = $payment->url();

Tags

$order = $service
    ->include(\PlugAndPay\Sdk\Enum\OrderIncludes::TAGS)
    ->find(1);

$tags = $order->tags();

Taxes

$order = $service
    ->include(\PlugAndPay\Sdk\Enum\OrderIncludes::TAXES)
    ->find(1);

// All taxes
$tax = $order->taxes()[0];
$tax->amount()->value()
$tax->rate()->percentage()

// Tax per item
$item              = $order->items()[0];
$itemTaxValue      = $item->tax()->amount()->value();
$itemTaxPercentage = $item->tax()->rate()->percentage();
Clone this wiki locally