1. Go to this page and download the library: Download sevaske/payfort library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
sevaske / payfort example snippets
return [
'sandbox_mode' => env('PAYFORT_SANDBOX_MODE', false),
'debug_mode' => env('PAYFORT_DEBUG_MODE', false),
'log_channel' => env('PAYFORT_LOG_CHANNEL', env('LOG_CHANNEL', 'stack')),
/*
|--------------------------------------------------------------------------
| Merchant Configuration
|--------------------------------------------------------------------------
|
| This section allows you to configure multiple merchants for your application.
| Each merchant can have its own unique settings, such as merchant identifier,
| access code, and SHA phrases for secure transactions. You can easily
| switch between different merchants using the Payfort::merchant({name}) method.
| The default merchant is specified under 'default', while additional merchants
| can be defined by adding their own unique keys.
|
*/
'merchants' => [
'default' => [
'merchant_identifier' => env('PAYFORT_MERCHANT_IDENTIFIER'),
'access_code' => env('PAYFORT_ACCESS_CODE'),
'sha_request_phrase' => env('PAYFORT_SHA_REQUEST_PHRASE'),
'sha_response_phrase' => env('PAYFORT_SHA_RESPONSE_PHRASE'),
'sha_type' => env('PAYFORT_SHA_TYPE', 'sha256'),
],
'apple' => [
'merchant_identifier' => env('PAYFORT_APPLE_MERCHANT_IDENTIFIER'),
'access_code' => env('PAYFORT_APPLE_ACCESS_CODE'),
'sha_request_phrase' => env('PAYFORT_APPLE_SHA_REQUEST_PHRASE'),
'sha_response_phrase' => env('PAYFORT_APPLE_SHA_RESPONSE_PHRASE'),
'sha_type' => env('PAYFORT_APPLE_SHA_TYPE', 'sha256'),
],
],
/*
|--------------------------------------------------------------------------
| Webhook Configuration
|--------------------------------------------------------------------------
|
| Here you can configure webhooks for your application. These settings
| define where your server will receive responses from Amazon Payment
| Services after a transaction is processed, as well as where offline
| notifications will be received for any status updates regarding
| transactions and orders. You can also specify the middleware that
| should be applied to the webhook routes.
|
*/
'webhook' => [
'feedback' => [
'enabled' => env('PAYFORT_WEBHOOK_FEEDBACK_ENABLED', true),
'uri' => env('PAYFORT_WEBHOOK_FEEDBACK_URI', '/payfort/webhook/feedback/{merchant?}'),
'middlewares' => [
\Sevaske\Payfort\Http\Middlewares\PayfortWebhookSignature::class,
],
],
'notification' => [
'enabled' => env('PAYFORT_WEBHOOK_NOTIFICATION_ENABLED', true),
'uri' => env('PAYFORT_WEBHOOK_NOTIFICATION_URI', '/payfort/webhook/notification/{merchant?}'),
'middlewares' => [
\Sevaske\Payfort\Http\Middlewares\PayfortWebhookSignature::class,
],
],
],
];
use \Sevaske\PayfortApi\Signature;
use \Sevaske\PayfortApi\Http\Response as PayfortResponse;
use \Sevaske\PayfortApi\Http\Responses\CheckStatusResponse;
use \Sevaske\Payfort\Payfort;
try {
$response = Payfort::merchant('default')
->api()
->checkStatus(merchantReference: 'ORDER-123456'); // CheckStatusResponse
$response->jsonSerialize(); // Parsed response as array
$response->authorizedAmount(); // ?string
$response->capturedAmount(); // ?string
$response->refundedAmount(); // ?string
} catch (\Sevaske\PayfortApi\Exceptions\PayfortException $exception) {
// handle
}
// using callback
$response = $merchant->api()->checkStatus('12345', callback: function (
CheckStatusResponse $response,
array $request
) {
// ...
return $response;
});
// api calls
Payfort::merchant()->api()->checkStatus();
Payfort::merchant()->api()->createToken();
Payfort::merchant()->api()->recurring();
Payfort::merchant()->api()->refund();
Payfort::merchant()->api()->updateToken();
Payfort::merchant()->api()->voidAuthorization();
// custom request
Payfort::merchant()->api()->request([
'query_command' => 'CHECK_STATUS',
'merchant_reference' => 'ORDER-123456',
]); // PayfortResponse
// custom raw request (raw response with no validations)
Payfort::merchant()->api()->rawRequest(['foo' => 'bar'], 'uri', 'POST'); // ResponseInterface
// calculation signature
$signature = (new Signature(shaPhrase: '', shaType: 'sha256'))->calculate(['foo' => 'bar']);
namespace App\Listeners;
use Illuminate\Contracts\Queue\ShouldQueue;
use Sevaske\Payfort\Events\PayfortFeedbackReceived;
class HandlePayfortFeedback implements ShouldQueue
{
public function handle(PayfortFeedbackReceived $event)
{
// Access event data
$event->getMerchantName(); // string
$event->getPayload() // request data
$event->getMerchant(); // Sevaske\Payfort\Merchant
// Custom logic for handling feedback webhook data
// For example, logging data or updating the database
}
}
namespace App\Providers;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
use Sevaske\Payfort\Events\PayfortFeedbackReceived;
use App\Listeners\HandlePayfortFeedback;
class EventServiceProvider extends ServiceProvider
{
protected $listen = [
PayfortFeedbackReceived::class => [
HandlePayfortFeedback::class,
],
];
public function boot()
{
parent::boot();
}
}