class-atlas / laravel-keepz-ecommerce
Laravel package for seamless payment gateway via Keepz ecommerce API
Requires
- php: ^8.2
- ext-readline: *
- illuminate/contracts: ^10.0||^11.0
- saloonphp/saloon: ^3.0
- spatie/laravel-data: ^4.11
- 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: ^3.0
- pestphp/pest-plugin-arch: ^3.0
- pestphp/pest-plugin-laravel: ^3.0
- phpstan/extension-installer: ^1.3
- phpstan/phpstan-deprecation-rules: ^1.1
- phpstan/phpstan-phpunit: ^1.3
- spatie/laravel-ray: ^1.35
README
This Laravel package provides seamless integration with Keepz's eCommerce API â allowing your application to create, monitor, and manage online orders with ease.
Whether you're creating new orders, tracking their statuses, or canceling them â this package simplifies the interaction with Keepz's API using elegant PHP DTOs and Laravel-style conventions.
đ Features
- đ Create Orders
- đ Check Order Status
- â Cancel Orders
đ§ą Installation
Install the package via Composer:
composer require class-atlas/laravel-keepz-ecommerce
âī¸ Configuration
Add the following to your .env
file:
KEEPZ_ECOMMERCE_PRIVKEY=<path_to_keepz_priv_key> KEEPZ_ECOMMERCE_PUBKEY=<path_to_keepz_pub_key> KEEPZ_ECOMMERCE_API_URL=https://gateway.keepz.me/ecommerce-service KEEPZ_ECOMMERCE_INTEGRATOR_ID=<integrator_id>
âšī¸ Note: Public and private key files must be placed under the storage directory. For example:
- storage/keepz/privkey
- storage/keepz/pubkey
The values in your .env file should be relative paths from the storage folder, not full system paths.
- keepz/privkey
- keepz/pubkey
đ Create Order
Use the createOrder
method to create a new order with Keepz:
$uuid = Str::uuid(); $orderData = OrderData::from([ 'receiverId' => $merchant->keepz_id, 'integratorOrderId' => $uuid, 'successRedirectUri' => route('order.success'), 'failRedirectUri' => route('order.error'), 'amount' => $amount, ]); $orderData = KeepzEcommerce::createOrder($orderData); if ($orderData instanceof ErrorData) { if (app()->environment('production')) { abort(500); } else { return $orderData; } } return redirect()->away($orderData->urlForQR);
Returns either:
CreateOrderData
on successErrorData
on failure (includes error code and message)
đ Check Order Status
Use checkOrderStatus
to retrieve the latest status of a specific order:
KeepzEcommerce::checkOrderStatus($uuid);
Returns either:
CheckOrderStatusData
(includes status, timestamps, etc.)ErrorData
(if order not found or request fails)
â Cancel Order
Use cancelOrder
to cancel an existing order via its integratorOrderId
:
KeepzEcommerce::cancelOrder($uuid);
Returns:
CancelOrderData
(contains confirmation and status)
đ§ą Data Transfer Objects
Each API response is automatically converted into a strict typed DTO (Data Transfer Object), making it easy to work with structured responses in a Laravel-ish way.
- â No need to parse JSON manually
- â IntelliSense & static analysis friendly