Payum
Source🩷 Sponsor
  • Payum docs
  • Get started
  • Instant payment notification
  • ISO4217 or Currency Details
  • The Architecture
  • Your order integration
  • Supported Gateways
  • Storages
  • Debugging
  • Logging
  • Event Dispatcher
  • Configure gateways in backend
  • Working with sensitive information
  • Encrypt gateway configs stored in database
  • Mask credit card number
  • Develop a custom Payum gateway
  • Troubleshooting
  • Frameworks and e-commerce integration.
  • Payum vs Omnipay
  • How to contribute from sub repository
  • Examples
    • Paypal: Create Gateway
    • Paypal: Redirects
    • Handle redirect
    • Get Status
    • Stripe Js: Create gateway
    • Capture Payment
    • Get Http Reponse
    • Capture Credit Card
    • Authorise script
    • Capture Script
    • Done Script
    • index
    • Notify script
    • Payout Script
    • Refund script
  • Authorize-NET
    • AIM
      • Authorize.Net AIM: Get started
  • Be2Bill
    • Be2Bill Direct
    • Be2Bill Offsite
  • jms-payment-bridge
    • Get Started
  • Klarna
    • Checkout
      • Klarna Checkout: Get Started
    • Invoice
      • Klarna Invoice: Get Started
  • Laravel
    • Get Started
    • Blade Templating
    • Eloquent Storage
    • Payment done controller
    • Store gateway config in database
    • Examples
  • Offline
    • Get Started
  • Payex
    • Get Started
  • Paypal
    • Express Checkout
      • Get Started
      • Authorize order
      • Authorize token custom query parameters
      • Cancel recurring payment
      • Confirm order step
      • Recurring Payments Basics
    • IPN
      • Get Started
    • Masspay
      • Get Started
    • Pro Checkout
      • Get Started
    • Pro Hosted
      • Get Started
    • REST
      • Get Started
      • Credit Card Purchase
  • Silex
    • Get Started
    • Payment Done Controller
  • Sofort
    • Get Started
    • Disable Notifications
  • Stripe
    • Checkout
    • Direct
    • Stripe.js
    • Raw Capture
    • Store card and use later
    • Subscription Billing
  • Symfony
    • Get started
    • Authorize Payment
    • Configure payment in backend
    • Console commands
    • Container tags
    • Custom Action
    • Custom API usage
    • Creating custom view for payment page
    • Custom purchase examples
    • Debugging
    • Encrypt gateway configs stored in database
    • ISO4217 or Currency Details
    • Purchase done action
    • Refund Payment
    • Sandbox
    • Storages
    • Configuration Reference
    • Custom Purchase Examples
      • Authorize.NET AIM
      • Be2Bill onsite
      • Be2Bill Credit Card
      • Klarna Checkout
      • Klarna Invoice
      • Payex
      • Paypal Express Checkout
      • Paypal Pro Checkout
      • Paypal via Omnipay
      • Stripe checkout
      • Stripe.js
      • Stripe via Omnipay
Powered by GitBook
On this page
  • Installation
  • config.php
  • prepare.php
  • Supporting Payum
Edit on GitHub
  1. Klarna
  2. Checkout

Klarna Checkout: Get Started

PreviousCheckoutNextInvoice

Last updated 1 year ago

In this chapter we are going to talk about the most common task: purchase of a product using . Unfortunately, You cannot use Payum's order to purchase stuff. Only klarna specific format is supported. We assume you already read basic .

Installation

The preferred way to install the library is using . Run composer require to add dependencies to composer.json:

php composer.phar require payum/klarna-checkout php-http/guzzle7-adapter

config.php

We have to only add the gateway factory. All the rest remain the same:

<?php
//config.php

use Payum\Core\PayumBuilder;
use Payum\Core\Payum;

/** @var Payum $payum */
$payum = (new PayumBuilder())
    ->addGateway('klarna', [
        'factory' => 'klarna_checkout',
        'merchant_id' => 'EDIT IT',
        'secret' => 'EDIT IT',
    ])

    ->getPayum()
;

An initial configuration for Payum basically wants to ensure we have things ready to be stored such as a token, or a payment details. We also would like to have a registry of various gateways supported and the place where they can store their information (e.g. payment details).

Note: Consider using something other than FilesystemStorage in production. DoctrineStorage may be a good alternative.

First we have modify config.php a bit. We need to add gateway factory and payment details storage.

prepare.php

<?php
// prepare.php

use Payum\Core\Model\ArrayObject;

include __DIR__.'/config.php';

/** @var \Payum\Core\Storage\StorageInterface $storage */
$storage = $this->getPayum()->getStorage(ArrayObject::class);

$details = $storage->create();
$details['purchase_country'] = 'SE';
$details['purchase_currency'] = 'SEK';
$details['locale'] = 'sv-se';
$storage->update($details);

/** @var \Payum\Core\Security\TokenInterface $authorizeToken */
$authorizeToken = $payum->getTokenFactory()->createAuthorizeToken('klarna', $details, 'done.php');

/** @var \Payum\Core\Security\TokenInterface $notifyToken */
$notifyToken = $payum->getTokenFactory()->createNotifyToken('klarna', $details);

$details['merchant'] = array(
    'terms_uri' => 'http://example.com/terms',
    'checkout_uri' => $authorizeToken->getTargetUrl(),
    'confirmation_uri' => $authorizeToken->getTargetUrl(),
    'push_uri' => $notifyToken->getTargetUrl()
);
$details['cart'] = array(
    'items' => array(
         array(
            'reference' => '123456789',
            'name' => 'Klarna t-shirt',
            'quantity' => 2,
            'unit_price' => 12300,
            'discount_rate' => 1000,
            'tax_rate' => 2500
         ),
         array(
            'type' => 'shipping_fee',
            'reference' => 'SHIPPING',
            'name' => 'Shipping Fee',
            'quantity' => 1,
            'unit_price' => 4900,
            'tax_rate' => 2500
         )
    )
);
$storage->update($details);

header("Location: ".$authorizeToken->getTargetUrl());

Supporting Payum

Payum is an MIT-licensed open source project with its ongoing development made possible entirely by the support of community and our customers. If you'd like to join them, please consider:

That's it. As you see we configured Klarna Checkout config.php and set details prepare.php. and scripts remain same.

Klarna Checkout
get it started
composer
capture.php
done.php
Become a sponsor