shasan-dev / laravel-klarna-payments
A package to utilise Klarna Payments
1.0
2024-10-19 07:33 UTC
Requires
- php: ^8.2
- illuminate/contracts: ^10.0||^11.0
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- larastan/larastan: ^2.9
- laravel/pint: ^1.14
- nunomaduro/collision: ^8.1.1||^7.10.0
- orchestra/testbench: ^9.0.0||^8.22.0
- pestphp/pest: ^2.34
- pestphp/pest-plugin-arch: ^2.7
- pestphp/pest-plugin-laravel: ^2.3
- phpstan/extension-installer: ^1.3
- phpstan/phpstan-deprecation-rules: ^1.1
- phpstan/phpstan-phpunit: ^1.3
- spatie/laravel-ray: ^1.35
This package is not auto-updated.
Last update: 2025-07-27 09:37:06 UTC
README
Laravel Klarna Payments
This package integrates Klarna Payments into your Laravel application.
Installation
-
Install the package via Composer:
composer require shasan-dev/laravel-klarna-payments
-
Publish the configuration file:
php artisan vendor:publish --provider="LaravelKlarna\KlarnaPayments\KlarnaPaymentsServiceProvider" --tag="klarna-payments-config"
-
Update your
.env
file:KLARNA_USER_ID=your_user_id KLARNA_PASSWORD=your_password KLARNA_TESTMODE=true_or_false KLARNA_REGION=NA/OC/EU (default EU)
Usage
Create a Controller
php artisan make:controller KlarnaController
Define Routes
Route::get('payment/klarna-checkout', [KlarnaController::class, 'payment'])->name('klarna.checkout'); Route::get('payment/klarna-success', [KlarnaController::class, 'paymentSuccess'])->name('klarna.success');
Payment Logic
In KlarnaController
, handle the payment logic as follows:
use LaravelKlarna\KlarnaPayments\Facades\KlarnaPayments; public function payment() { $data = [ 'order_amount' => 20 * 100, 'order_lines' => [ [ 'name' => 'Running shoe', 'quantity' => 1, 'quantity_unit' => 'pcs', 'total_amount' => 20 * 100, 'type' => 'physical', 'unit_price' => 20 * 100, ] ], 'purchase_country' => 'US', 'purchase_currency' => 'USD', 'intent' => 'buy', ]; $sessionId = KlarnaPayments::createSession($data)->json()['session_id']; $redirectUrl = KlarnaPayments::createHppSession($sessionId, [ 'success' => route('klarna.success') . "?sid={{session_id}}&order_id={{order_id}}", 'cancel' => route('home'), 'back' => route('home'), 'failure' => route('home') . "?sid={{session_id}}", 'error' => route('home') . "?sid={{session_id}}", ])->json()['redirect_url']; return redirect()->to($redirectUrl); } public function paymentSuccess(Request $request) { $checkPayment = KlarnaPayments::checkPayment($request->get('order_id')); if ($checkPayment->json()['status'] === 'AUTHORIZED') { return 'Payment Success. Reference No. ' . $checkPayment->json()['klarna_reference']; } return 'Payment Not Successful'; }
Final Steps
Visit /payment/klarna-checkout
to initiate a payment.
If you find this package helpful, don't forget to star it! Thanks.
License
MIT License.