kalimeromk / casys-laravel
Integration of casys payment method
Installs: 2 067
Dependents: 0
Suggesters: 0
Security: 0
Stars: 16
Watchers: 2
Forks: 3
Open Issues: 0
Requires (Dev)
- larastan/larastan: ^2.0
- mockery/mockery: ^1.4|^1.5|^1.6|^1.7
- orchestra/testbench: ^5.0|^6.0|^7.0|8.0
README
This is a package to integrate the Casys payment gateway into Laravel. It generates complete scaffolding for simple integration, including support for recurring payments.
Features
- Views
resources/views/vendor/casys
- Configuration
config/casys.php
- Controllers
/Http/Controllers/CasysController
/Http/Controllers/RecurringPaymentController
- Recurring Payment Support
/Http/Services/RecurringPayment.php
- Example integration for managing recurring payments using SOAP services.
- Routes
- Predefined routes for standard and recurring payments.
Installation
Require this package by running:
composer require kalimeromk/casys-laravel
After installation, publish the package files:
php artisan vendor:publish --provider="Kalimero\Casys\CasysServiceProvider"
This will publish the following files:
config/casys.php
resources/views/vendor/casys
Laravel Setup
Register the route file in your RouteServiceProvider
or add the following routes to your existing route file:
Standard Payment Routes
use App\Http\Controllers\CasysController; Route::get('paymentLoader', [CasysController::class, 'index'])->name('loader'); Route::post('payment', [CasysController::class, 'getCasys'])->name('validateAndPay'); Route::post('paymentOKURL', [CasysController::class, 'success'])->name('paymentOKURL'); Route::post('paymentFailURL', [CasysController::class, 'fail'])->name('paymentFailURL');
Recurring Payment Routes
use KalimeroMK\Casys\Controllers\RecurringPaymentController; Route::post('/recurring-payment', [RecurringPaymentController::class, 'handleRecurringPayment'])->name('recurring.payment');
For Laravel <=7, use the controller string syntax:
Route::get('paymentLoader', 'CasysController@index')->name('loader'); Route::post('payment', 'CasysController@getCasys')->name('validateAndPay'); Route::post('paymentOKURL', 'CasysController@success')->name('paymentOKURL'); Route::post('paymentFailURL', 'CasysController@fail')->name('paymentFailURL');
How to Use
Configuration
Add your credentials to the .env
file:
PAY_TO_MERCHANT=your_merchant_id MERCHANT_NAME=your_merchant_name AMOUNT_CURRENCY=MKD PAYMENT_OK_URL=your_success_url PAYMENT_FAIL_URL=your_fail_url CASYS_TOKEN=your_token
Standard Payments
For standard payments, simply pass the amount and client data to the appropriate method in the CasysController
. The views provided by the package will handle the UI. If you wish to customize the views, edit the published views in resources/views/vendor/casys
.
Recurring Payments
The package includes support for recurring payments through the RecurringPayment
class and RecurringPaymentController
. Here’s how you can integrate it:
Recurring Payment Parameters
The recurring payment requires the following parameters:
- RPRef: A string containing details about the recurring payment, formatted as:
RPRef = RequestType,BillingCycle,MaxBCycles,BillingAmount,BillingCycleStart
- RPRefID: Unique ID returned during the initial registration of the recurring transaction.
Example Workflow
-
Initial Registration The cardholder performs the initial transaction with the
RPRef
parameter set. The system returns anRPRefID
, which you should store for future recurring payments. -
Subsequent Payments Use the stored
RPRefID
to initiate subsequent payments without user involvement.
Example Request
Call the /recurring-payment
endpoint with the following payload:
{ "merchant_id": "YourMerchantID", "rp_ref": "R,1M,12,500000,20240101", "rp_ref_id": "UniqueRPRefID", "amount": 500000, "password": "YourMerchantPassword" }
Example Recurring Payment Integration
You can use the RecurringPayment
service class in your application:
use KalimeroMK\Casys\Services\RecurringPayment; $recurringPayment = new RecurringPayment(); $response = $recurringPayment->sendPayment( $merchantId, $rpRef, $rpRefId, $amount, $password ); if ($response['success']) { echo "Recurring payment successful! Reference: " . $response['payment_reference']; } else { echo "Recurring payment failed: " . $response['error_description']; }
Provided Controllers
CasysController
Handles the standard payment flow, including:
- Loading the payment page (
paymentLoader
route). - Validating and processing payments (
payment
route). - Handling success (
paymentOKURL
route) and failure (paymentFailURL
route) callbacks.
RecurringPaymentController
Handles recurring payment requests via the /recurring-payment
route. Example integration is included for making SOAP calls to the Casys gateway.
Info
This package is in an alpha stage and is designed to be flexible for your specific needs. Suggestions are welcome!