freethinkerz/laravel-pay

A laravel Payment Gateway wrapper for MeSomb and NotchPay

1.2.0 2024-01-16 23:28 UTC

This package is auto-updated.

Last update: 2024-04-17 00:00:21 UTC


README

A laravel Payment Gateway wrapper for MeSomb and NotchPay

Roadmap

API Features and their implementations https://mesomb.hachther.com/en/api/v1.1/schema/

Feature Status Documentation
Payment Check the documentation
Transaction Status Check the documentation
Application Status Check the documentation
Deposits Check the documentation
Test
Better Documentation

Installation

Before you start, you must register your service and MeSomb and get API Access keys. Please follow this tutorial.

Install Package

composer require freethinkerz/laravel-pay

Publish Configuration Files

Setting the following parameters from MeSomb

Get the information below from MeSomb after following the above tutorial.

MESOMB_APP_KEY=<ApplicationKey>
MESOMB_API_HOST=https://mesomb.hachther.com
MESOMB_API_VERSION=v1.1
MESOMB_ACCESS_KEY=<AccessKey>
MESOMB_SECRET_KEY=<SecretKey>
MESOMB_SSL_VERIFY=true

Publish configurations file

php artisan vendor:publish --tag=mesomb-configuration

Migrate Mesomb Transaction Tables

php artisan migrate

Usage

Quick Examples

Simple Collect

// OrderController.php
use FreeThinkerz\LaravelPay\Operation\Payment\Collect;

class OrderController extends Controller {

    public function confirmOrder()
    {
        $request = new Collect('67xxxxxxx', 1000, 'MTN', 'CM');

        $payment = $request->pay();

        if($payment->success){
            // Fire some event,Pay someone, Alert user
        } else {
            // fire some event, redirect to error page
        }

        // get Transactions details $payment->transactions
    }
}

Simple Deposit

// OrderController.php
use FreeThinkerz\LaravelPay\Operation\Payment\Deposit;

class OrderController extends Controller {

    public function makeDeposit()
    {
        $request = new Deposit('67xxxxxxx', 1000, 'MTN', 'CM');

        $payment = $request->pay();

        if($payment->success){
            // Fire some event,Pay someone, Alert user
        } else {
            // fire some event, redirect to error page
        }

        // get Transactions details $payment->transactions
    }
}

Attaching Payments to Models Directly

// Order.php

use FreeThinkerz\LaravelPay\Helper\HasPayments;

class Order extends Model
{
    use HasPayments;
}

// OrderController.php

class OrderController extends Controller {

    public function confirmOrder(){

        $order = Order::create(['amount' => 100]);

        $payment  = $order->payment('67xxxxxxx', $order->amount, 'MTN', 'CM')->pay();

        if($payment->success){
            // Fire some event,Pay someone, Alert user
        } else {
            // fire some event, redirect to error page
        }

        // View Order payments via $order->payments

        // Get payment transaction with $payment->transaction

        return $payment;
    }
}

Handle multiple applications

This is how you process if you want to handle multiple MeSomb applications with the same project.

  1. Set up your configuration file with the default application and other information as specified below.
  2. Update the applicationKey (the accessKey and the secretKey if needed) on the fly as you can see below.
// OrderController.php
use FreeThinkerz\LaravelPay\Operation\Payment\Collect;

class OrderController extends Controller {

    public function confirmOrder()
    {
        $request = new Collect('67xxxxxxx', 1000, 'MTN', 'CM');

        // Update applicationKey before process the payment
        // You also have setAccessKey and setSecretKey
        $payment = $request->setApplicationKey('<applicationKey>')->pay();

        if($payment->success){
            // Fire some event,Pay someone, Alert user
        } else {
            // fire some event, redirect to error page
        }

        // get Transactions details $payment->transactions
    }
}

Author

FreeThinkerz https://github.com/FreeThinkerz

Apreciations

Thank you to Malico (hi@malico.me) for starting this module.

Hachther LLC (For Adding updates to the module) contact@hachther.com