PHP code example of getsafepay / sfpy-php

1. Go to this page and download the library: Download getsafepay/sfpy-php 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/ */

    

getsafepay / sfpy-php example snippets






$safepay = new \Safepay\SafepayClient('BQokikJOvBiI2HlWgH4olfQ2');
$tracker = $safepay->order->setup([
    "merchant_api_key" => "sec_8dcac601-4b70-442d-b198-03aadd28f12b",
    "intent" => "CYBERSOURCE",
    "mode" => "payment",
    "currency" => "PKR",
    "amount" => 600000 // in the lowest denomination
]);
echo $tracker;

$safepay = new \Safepay\SafepayClient([
  'api_key' => 'BQokikJOvBiI2HlWgH4olfQ2',
  'api_base' => 'https://sandbox.api.getsafepay.com'
]);


$safepay = new \Safepay\SafepayClient('BQokikJOvBiI2HlWgH4olfQ2');

try {
    // You need to generate a tracker with mode 'instrument'
    // to tell Safepay that you wish to set up a tracker to
    // tokenize a customer's card
    $session = $safepay->order->setup([
        "merchant_api_key" => "sec_8dcac601-4b70-442d-b198-03aadd28f12b",
        "intent" => "CYBERSOURCE",
        "mode" => "instrument",
        "currency" => "PKR"
    ]);

    // You need to either create a customer or retreive the customer
    // from your backend so you have access to the customer ID
    $customer = $safepay->customer->create([
        "first_name" => "Hassan",
        "last_name" => "Zaidi",
        "email" => "[email protected]",
        "phone_number" => "+923331234567",
        "country" => "PK"
    ]);

    // You can optionally create an address object if you have
    // access to the customer's billing details
    $address = $safepay->address->create([
        // 


$safepay = new \Safepay\SafepayClient('BQokikJOvBiI2HlWgH4olfQ2');

try {
    // Change this ID to reflect the ID of the Plan you have created
    // either through the merchant dashboard or through the API.
    $plan_id = "plan_d4869a78-0036-4d66-97bd-6afeb5282bcd";

    // You need to create a Time Based Authentication token
    $tbt = $safepay->passport->create();

    // To ease reconciliation, you may associate a reference
    // that you generate in your system. This will be returned
    // in webhooks received when the subscription is created.
    $reference = "0950fa13-1a28-4529-80bf-89f6f4e830a5";

    // Finally, you can create the Subscribe URL
    $subscribeURL = \Safepay\SubscriptionsCheckout::constructURL([
        "environment" => "production", // one of "development", "sandbox" or "production"
        "plan_id" => $plan_id,
        "tbt" => $tbt,
        "reference" => $reference,
        "cancel_url" => "https://mywebiste.com/subscribe/cancel",
        "redirect_url" => "https://mywebiste.com/subscribe/success",
    ]);
    echo($subscribeURL);
    return $subscribeURL;
} catch(\UnexpectedValueException $e) {
    // Invalid payload
    http_response_code(400);
    exit();
}




use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Log;

Route::post('/sfpy-webhook', function (Request $request) {
    // You can find your shared webhook secret in the Developer
    // section of the Safepay dashboard under the Endpoints tab
    $webhook_secret = '8c3f108cb9ba794799d9f7693eb9f59e6c52aad7249e4838c9da2ad8f962ea04';

    // Retrieve the signature from the request header
    if (! $request->hasHeader('X-SFPY-SIGNATURE')) {
        return response('Missing signature', 400);
    }
    $signature = $request->header('X-SFPY-SIGNATURE');

    // Get the payload
    $payload = json_encode($request->input(), JSON_UNESCAPED_SLASHES);
    
    // Verify the signature    
    $event = null;
    try {
        $event = \Safepay\Webhook::constructEvent($payload, $signature, $webhook_secret);
    } catch(\UnexpectedValueException $e) {
        Log::error($e);
        return response('error parsing payload', 400);
    } catch(\Safepay\Exception\SignatureVerificationException $e) {
        Log::error($e);
        return response('Error verifying webhook signature', 400);
    }

    // Handle the webhook event
    switch ($event->type) {
        case 'payment.succeeded':
            $payment = $event->data;

            // Your code goes here. You may want to mark this payment as complete in your database.

            break;
        case 'payment.failed':
            $payment = $event->data;

            // Your code goes here. You may want to mark this payment as failed in your database.

            break;
        
        // Handle other event types
        default:
            break;
    }

    return response('Ok', 200);
});
bash
composer