Laravel 5 Package for the Pesapal API
##Installation
###Add this package using Composer
From the command line inside your project directory, simply type:
composer require knox/pesapal
###Update your config
Add the service provider to the providers array in config/app.php:
Knox\Pesapal\PesapalServiceProvider::class,
Add the facade to the aliases array in config/app.php:
'Pesapal' => Knox\Pesapal\Facades\Pesapal::class,
###Publish the package configuration
Publish the configuration file and migrations by running the provided console command:
php artisan vendor:publish --provider="Knox\Pesapal\PesapalServiceProvider"
##Setup
###Environmental Variables
PESAPAL_CONSUMER_KEY pesapal consumer key
PESAPAL_CONSUMER_SECRET pesapal consumer secret
PESAPAL_CURRENCY ISO code for the currency
PESAPAL_IPN controller method to call for instant notifications IPN as relative path from App\Http\Controllers\ eg "TransactionController@confirmation"
PESAPAL_CALLBACK_ROUTE route name to handle the callback eg Route::get('donepayment', ['as' => 'paymentsuccess', 'uses'=>'PaymentsController@paymentsuccess']); The route name is "paymentsuccess"
NB: The controller method accepts 4 function parameters, Example:
public function confirmation($trackingid,$status,$payment_method,$merchant_reference)
{
$payments = Payments::where('tracking',$trackingid)->first();
$payments -> payment_status = $status;
$payments -> payment_method = $payment_method;
$payments -> save();
}
###Config
live - Live or Demo environment
The ENV Variables can also be set from here.
##Usage
At the top of your controller include the facade
use Pesapal;
###Example Code
Assuming you have a Payment Model
public function payment(){
$payments = new Payments;
$payments -> order_id = mt_rand(1,1000);
$payments -> user_id = Auth::id();
$payments -> transaction = Pesapal::random_reference();
$payments -> payment_status = 'PENDING';
$payments -> amount = 10;
$payments -> save();
$details = array(
'amount' => $payments -> amount,
'description' => 'Test',
'type' => 'MERCHANT',
'first_name' => 'John',
'last_name' => 'Doe',
'email' => '[email protected]',
'phonenumber' => '254723232323',
'reference' => $payments -> transaction,
//'currency' => 'USD'
);
return Pesapal::makePayment($details);
}
Returns an IFRAME to display the payment options
The Method receives two input arguments
Callback implementation
public function paymentsuccess()
{
$trackingid = Input::get('tracking_id');
$ref = Input::get('merchant_reference');
$payments = Payments::where('transaction',$ref)->first();
$payments -> tracking = $trackingid;
$payments -> save();
return view('payment', ['trackingid' => $trackingid, 'ref' => $ref]);
}
####All Done Feel free to report any issues