fintech-systems/laravel-payfast-onsite

This package is abandoned and no longer maintained. No replacement package was suggested.

A PayFast Onsite Payments integration for Laravel designed to ease subscription billing. Livewire views are included.

Maintainers

👁 eugenevdm

Package info

github.com/fintech-systems/laravel-payfast-onsite

pkg:composer/fintech-systems/laravel-payfast-onsite

Fund package maintenance!

FintechSystems

Statistics

Installs: 28

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v0.8.0 2022-05-30 12:37 UTC

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT 858c408065c6f7907a1b26fe62bb219f37f499c4

  • Eugene van der Merwe <eugenevdm.woop@gmail.com>

laravelpayfastlaravel-livewirelaravel-jetstreamFintechSystems

This package is auto-updated.

Last update: 2024-08-17 12:50:02 UTC


README

👁 GitHub release (latest by date)
👁 Build Status
👁 GitHub

Update 17 July 2024

This repo is being archived.

Most of the work here was continued at this repo: https://github.com/eugenefvdm/payfast-onsite-subscriptions

A PayFast Onsite Payments implementation for Laravel designed to ease subscription billing. Livewire views are included.

THIS IS BETA SOFTWARE

  • There may be some bugs but the core functionality should work.

Requirements:

Installation

Install the package via composer:

composer require fintech-systems/laravel-payfast-onsite

Publish Configuration and Views

Publish the config file with:

php artisan vendor:publish --provider="FintechSystems\Payfast\PayfastServiceProvider" --tag="payfast-config"

Publish the Success and Cancelled views and the Livewire components for subscriptions and receipts.

php artisan vendor:publish --provider="FintechSystems\Payfast\PayfastServiceProvider" --tag="payfast-views"

Nova Integration

Optionally publish Laravel Nova Subscription and Receipts Resources

php artisan vendor:publish --provider="FintechSystems\Payfast\PayfastServiceProvider" --tag="payfast-nova-resource"

Migrations

A migration is needed to create Customers, Orders, Receipts and Subscriptions tables:

php artisan migrate

Example Configuration

config/payfast.php:

<?php

return [
 'merchant_id' => env('PAYFAST_MERCHANT_ID', '10004002'),
 'merchant_key' => env('PAYFAST_MERCHANT_KEY', 'q1cd2rdny4a53'),
 'passphrase' => env('PAYFAST_PASSPHRASE', 'payfast'),
 'testmode' => env('PAYFAST_TESTMODE', true), 
 'return_url' => env('PAYFAST_RETURN_URL', config('app.url') . '/payfast/success'),
 'cancel_url' => env('PAYFAST_CANCEL_URL', config('app.url') . '/payfast/cancel'),
 'notify_url' => env('PAYFAST_NOTIFY_URL', config('app.url') . '/payfast/webhook'),
 'card_update_link_css' => env('CARD_UPDATE_LINK_CSS', 'inline-flex items-center px-4 py-2 bg-gray-800 border border-transparent rounded-md font-semibold text-xs text-white uppercase tracking-widest hover:bg-gray-700 active:bg-gray-900 focus:outline-none focus:border-gray-900 focus:ring focus:ring-gray-300 disabled:opacity-25 transition'),
 'card_updated_return_url' => env('CARD_UPDATED_RETURN_URL', config('app.url') . '/user/profile'),
 'plans' => [
 3 => [
 'name' => 'Monthly R 99',
 'start_date' => \Carbon\Carbon::now()->addDay()->format('Y-m-d'),
 'payfast_frequency' => 3,
 'initial_amount' => 5.99,
 'recurring_amount' => 5.99,
 ],
 6 => [
 'name' => 'Yearly R 1089',
 'start_date' => \Carbon\Carbon::now()->format('Y-m-d'),
 'payfast_frequency' => 6,
 'initial_amount' => 6.89,
 'recurring_amount' => 6.89,
 ]
 ],
 'cancelation_reasons' => [
 'Too expensive',
 'Lacks features',
 'Not what I expected',
 ],
];

Livewire Setup

Jetstream

I have modelled some Livewire views to fit into a Laravel Jetstream user profile page.

When calling the Livewire component, you can override any PayFast form field by specifying a mergeFields array.

Example modification Jetstream Livewire's resources/views/profiles/show.php:

<!-- Subscriptions -->
<div class="mt-10 sm:mt-0"> 
 @livewire('jetstream-subscriptions', ['mergeFields' => [
 'name_first' => $user->name,
 'name_last' => $user->name,
 'item_description' => 'Subscription to Online Service'
 ]] ) 
</div>

<x-jet-section-border />
<!-- End Subscriptions -->

<!-- Receipts -->
 <div class="mt-10 sm:mt-0">
 @livewire('jetstream-receipts')
 </div>

<x-jet-section-border />
<!-- End Receipts -->

Usage

Examples

  • Generate a payment link
  • Create an ad-hoc token optionally specifying the amount
  • Cancel a subscription
  • Update a card
use FintechSystems\Payfast\Facades\Payfast;

Route::get('/payment', function() {
 return Payfast::payment(5,'Order #1');
});

Route::get('/cancel-subscription', function() {
 return Payfast::cancelSubscription('73d2a218-695e-4bb5-9f62-383e53bef68f');
});

Route::get('/create-subscription', function() {
 return Payfast::createSubscription(
 Carbon::now()->addDay()->format('Y-m-d'),
 5, // Amount
 6 // Frequency (6 = annual, 3 = monthly)
 );
});

Route::get('/create-adhoc-token', function() {
 return Payfast::createAdhocToken(5);
});

Route::get('/fetch-subscription', function() {
 return Payfast::fetchSubscription('21189d52-12eb-4108-9c0e-53343c7ac692');
});

Route::get('/update-card', function() {
 return Payfast::updateCardLink('40ab3194-20f0-4814-8c89-4d2a6b5462ed');
});

Testing

vendor/bin/phpunit

Changelog

Please see CHANGELOG for more information on what has changed recently.

Screenshots

👁 Livewire Subscriptions and Receipts Components

Credits

License

The MIT License (MIT). Please see License File for more information.