Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
This repository was archived by the owner on Mar 18, 2024. It is now read-only.

Klarna Checkout gateway for Omnipay

License

NotificationsYou must be signed in to change notification settings

MyOnlineStore/omnipay-klarna-checkout

Repository files navigation

This repository is no longer being maintained.

Omnipay: Klarna Checkout

Software LicenseScrutinizer BuildScrutinizer CoverageScrutinizer

Introduction

Omnipay is a framework agnostic, multi-gateway paymentprocessing library for PHP 5.6+. This package implements Klarna Checkout support for Omnipay.

Installation

To install, simply add it to yourcomposer.json file:

$ composer require myonlinestore/omnipay-klarna-checkout

Initialization

First, create the Omnipay gateway:

$gateway =Omnipay\Omnipay::create('\MyOnlineStore\Omnipay\KlarnaCheckout\Gateway');// or$gateway =newMyOnlineStore\Omnipay\KlarnaCheckout\Gateway(/* $httpClient, $httpRequest */);

Then, initialize it with the correct credentials:

$gateway->initialize(['username' =>$username,'secret' =>$secret,'api_region' =>$region,// Optional, may be Gateway::API_VERSION_EUROPE (default) or Gateway::API_VERSION_NORTH_AMERICA'testMode' =>false// Optional, default: true]);// or$gateway->setUsername($username);$gateway->setSecret($secret);$gateway->setApiRegion($region);

Usage

For general usage instructions, please see the mainOmnipayrepository.

General flow

  1. Create a Klarna order
  2. Update transaction (if required)
  3. Render the Iframe
  4. Respond to redirects tocheckoutUrl orconfirmation_url
  5. Respond tocheckout callbacks
  6. Respond to the request topush_url (indicates order was completed by client)with aackowledgement
  7. Extend authorization (if required)
  8. Update the merchant address (if required)
  9. Perform one or morecapture(s),refund(s) orvoid operations

Authorize

To create a new order, use theauthorize method:

$data = ['amount' =>100,'tax_amount' =>20,'currency' =>'SEK','locale' =>'SE','purchase_country' =>'SE','notify_url' =>'',// https://developers.klarna.com/api/#checkout-api__ordermerchant_urls__validation'return_url' =>'',// https://developers.klarna.com/api/#checkout-api__ordermerchant_urls__checkout'terms_url' =>'',// https://developers.klarna.com/api/#checkout-api__ordermerchant_urls__terms'validation_url' =>'',// https://developers.klarna.com/api/#checkout-api__ordermerchant_urls__validation'items' => [        ['type' =>'physical','name' =>'Shirt','quantity' =>1,'tax_rate' =>25,'price' =>100,'unit_price' =>100,'total_tax_amount' =>20,        ],    ],];$response =$gateway->authorize($data)->send()->getData();

This will return the order details as well as the checkout HTML snippet to render on your site.

API documentation

Render Iframe

Klarna Checkout requires an iframe to be rendered when authorizing payments:

$response =$gateway->fetchTransaction(['transactionReference' =>'a5bec272-d68d-4df9-9fdd-8e35e51f92ab'])    ->send();echo$response->getData()['checkout']['html_snippet'];

After submitting the form within the iframe,Klarna will redirect the client to the providedconfirmation_url (success)orcheckout_url (failure)`.

Update transaction

While an order has not been authorized (completed) by the client, it may be updated:

$response =$gateway->updateTransaction(['transactionReference' =>'a5bec272-d68d-4df9-9fdd-8e35e51f92ab','amount'           =>200,'tax_amount'       =>40,'currency'         =>'SEK','locale'           =>'SE','purchase_country' =>'SE','items' => [/*...*/],])->send();

The response will contain the updated order data.

API documentation

Extend authorization

Klarna order authorization is valid until a specific date, and may be extended (up to a maximum of 180 days).The updated expiration date may then be retrieved with afetch request

if ($gateway->extendAuthorization(['transactionReference' =>'a5bec272-d68d-4df9-9fdd-8e35e51f92ab'])->send()->isSuccessful()) {$expiration =new \DateTimeImmutable($gateway->fetchTransaction(['transactionReference' =>'a5bec272-d68d-4df9-9fdd-8e35e51f92ab'])            ->send()            ->getData()['management']['expires_at']    );}

API documentation

Capture

$success =$gateway->capture(['transactionReference' =>'a5bec272-d68d-4df9-9fdd-8e35e51f92ab','amount' =>'995',])->send()->isSuccessful();

API documentation

Fetch

A Klarna order is initially available through the checkout API. After it has been authorized, it will be availablethrough the Order management API (and will, after some time, no longer be available in the checkout API).This fetch request will first check whether the order exitst in the checkout API.If that is not the case, or the status indicates the order is finished,it will also fetch the order from the order management API

$response =$gateway->fetchTransaction(['transactionReference' =>'a5bec272-d68d-4df9-9fdd-8e35e51f92ab'])    ->send();$success =$response->isSuccessful();$checkoutData =$response->getData()['checkout'] ?? [];$managementData =$response->getData()['management'] ?? [];

API documentation |Checkout |Order management

Acknowlegde

Acknowledge a completed order

$success =$gateway->acknowledge(['transactionReference' =>'a5bec272-d68d-4df9-9fdd-8e35e51f92ab'])    ->send()    ->isSuccessful();

API documentation

Refund

$success =$gateway->refund(['transactionReference' =>'a5bec272-d68d-4df9-9fdd-8e35e51f92ab','amount' =>'995',])->send()->isSuccessful();

API documentation

Void

You may release the remaining authorized amount. Specifying a specific amount is not possible.

$success =$gateway->void(['transactionReference' =>'a5bec272-d68d-4df9-9fdd-8e35e51f92ab'])    ->send()    ->isSuccessful();

API documentation

Update customer address

This may be used when updating customer address detailsafter the order has been authorized.Success op this operation is subject to a risk assessment by Klarna. Both addresses are required parameters.

$success =$gateway->refund(['transactionReference' =>'a5bec272-d68d-4df9-9fdd-8e35e51f92ab','shipping_address' => ['given_name'=>'Klara','family_name'=>'Joyce','title'=>'Mrs','street_address'=>'Apartment 10','street_address2'=>'1 Safeway','postal_code'=>'12345','city'=>'Knoxville','region'=>'TN','country'=>'us','email'=>'klara.joyce@klarna.com','phone'=>'1-555-555-5555'    ],'billing_address' => ['given_name'=>'Klara','family_name'=>'Joyce','title'=>'Mrs','street_address'=>'Apartment 10','street_address2'=>'1 Safeway','postal_code'=>'12345','city'=>'Knoxville','region'=>'TN','country'=>'us','email'=>'klara.joyce@klarna.com','phone'=>'1-555-555-5555'    ],])->send()->isSuccessful();

API documentation

Update merchant reference(s)

If an order has been authorized by the client, its merchant references may be updated:

$response =$gateway->updateMerchantReferences(['merchant_reference1' =>'foo','merchant_reference2' =>'bar',])->send();

API documentation

Units

Klarna expresses amounts in minor units as describedhere.

About

Klarna Checkout gateway for Omnipay

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors9

Languages


[8]ページ先頭

©2009-2025 Movatter.jp