Web SDK

BACKEND

PHP SDK - How to Use Rocketfuel with PHP SDK

This is a technical guide for developers and it requires programming experience to follow through the guide.

Prerequisite:

  1. An approved Rocketfuel Merchant Account

  2. Composer installed on the server

How to Install PHP SDK on your PHP app

There are two ways to install PHP SDK

a. Installation via composer

composer require rkfl/rocketfuel-php-sdk

b. Manual installation

git clone https://bitbucket.org/rocketfuelblockchain/rocketfuel-php-sdk.git 
cd rocketfuel-php-sdk 
composer install

For php integration without composer, follow

Usage Examples

  1. Get UUID for triggering iFrame - (*UUID is a Unique User Identifier).

<?php
use RKFL\Api\Client\Options;
use RKFL\Api\Client\Rocketfuel;
require_once <PATH_TO_VENDOR> . '/autoload.php';

$options = new Options(
    [
        'environment' => 'sandbox',
        'merchant_id' => 'MERCHANT_ID',
        'password' => 'PASSWORD',
        'email' => 'EMAIL',
        'merchant_public_key' => "PUBLIC_KEY"
    ]
);

$rocketfuel = new RocketFuel($options);

$payload = [
    'amount' => '100',
    'cart' => [
        [
            'id' => '1',
            'name' => 'test',
            'price' => '100',
            'quantity' => '1'
        ]
    ],
    'currency' => 'USD',
    'order' => '001'
];

$response = $rocketfuel->service()->getUUID($payload);

2. Verify callback from RocketFuel

<?php
    use RKFL\Api\Client\Options;
    use RKFL\Api\Client\Rocketfuel;
    require_once <PATH_TO_VENDOR> . '/autoload.php';
    
    $options = new Options(
        [
            'environment' => 'sandbox',
            'merchant_id' => 'MERCHANT_ID',
            'password' => 'PASSWORD',
            'email' => 'EMAIL',
            'merchant_public_key' => "PUBLIC_KEY"
        ]
    );
    
    $rocketfuel = new RocketFuel($options);
    
    $status= $rocketfuel->helpers()->verifyWebhook($data, $signature);
    

3. Manually Cancel a Subscription

<?php
use RKFL\Api\Client\Options;
use RKFL\Api\Client\Rocketfuel;
require_once <PATH_TO_VENDOR> . '/autoload.php';

$options = new Options(
    [
        'environment' => 'sandbox',
        'merchant_id' => 'MERCHANT_ID',
        'password' => 'PASSWORD',
        'email' => 'EMAIL',
        'merchant_public_key' => "PUBLIC_KEY"
    ]
);

$rocketfuel = new RocketFuel($options);

$subscriptionId = '123_sub';

$status= $rocketfuel->subscription()->cancel($subscriptionId);

4. Manually Debit a Subscription

<?php
use RKFL\Api\Client\Options;
use RKFL\Api\Client\Rocketfuel;
require_once <PATH_TO_VENDOR> . '/autoload.php';

$options = new Options(
    [
        'environment' => 'sandbox',
        'merchant_id' => 'MERCHANT_ID',
        'password' => 'PASSWORD',
        'email' => 'EMAIL',
        'merchant_public_key' => "PUBLIC_KEY"
    ]
);

$rocketfuel = new RocketFuel($options);

$orderId= '123';

$subscriptionData = [
  ...,
  [
    subscriptionId=>'123_sub',
    amount=>1,
    currency=>'USD'
  ],
  ...
];

$status= $rocketfuel->subscription()->debit($orderId, $subscriptionData);

How to configure SDK

Use this code snippet for setting it up.

<?php
use RKFL\Api\Client\Options;
use RKFL\Api\Client\RocketFuel;

$options = new Options(
    [
        'environment' => 'env',
        'merchant_id' => 'MERCHANT_ID',
        'password' => 'PASSWORD',
        'email' => 'EMAIL',
        'merchant_public_key' => "PUBLIC_KEY"
    ]
);

$rocketfuel = new RocketFuel($options);

MERCHANT_ID,PASSWORD,EMAIL,PUBLIC_KEY are merchant details. See below to retrieve these details

PHP SDK WITHOUT COMPOSER

To integrate with PHP without composer, you will need to use this.

Step 1: Clone repo into project

git clone git@bitbucket.org:rocketfuelblockchain/rocketfuel-php-client.git

Step 2: Configure the client and access its methods

   require_once(PATH_TO_RKFL.'../src/RKFL_CLIENT.php');
   //configure Options
   $options = array(
       'environment'=>'sandbox', //sandbox -- prod,
       'merchantId'=>'MERCHANT_ID',
        'secret'=>'CLIENTSECRET',
        'clientId'=>'CLIENTID'
   );

   $rkfl = new \RKFL\Client\RKFL_CLIENT($options);

   $payload = array(
       "amount" => "100",
       "cart" => array(
           array(
               "name" => "Test",
               "id" => "200",
               "price" => 100,
               "quantity" => "1"
           )
       ),
       "merchant_id" => MERCHANT_ID,
       "currency" => "USD",
       "order" => "20",
       "redirectUrl" => ""
   );

   $rkfl->rkflgenerateUUID($payload);

Using webhook

For more information, visit webhook

   require_once(PATH_TO_RKFL.'../src/WEBHOOK_CLASS.php');
    use RKFL\Client\WEBHOOK_CLASS as rkflWebhook

    /**
     * $_REQUEST wont work because the webhook is application/json format and not formdata format
     */
    $payload = file_get_contents('php://input'); //use for receiving payload from RKFL SERVER

    $payload = json_decode($payload);

    $result = rkflWebhook::verify_callback($payload->data->data, $payload->signature);

    if ($result) {
        echo "verified \n";
    } else {
        echo 'not verified';
        return;
    }
    rkflWebhook::validate_payment($payload->data);

FRONTEND

RKFL JS CDN and Implementation

  • Add the script from CDN to the Merchant site.

  • Once we get the response with the UUID from the backend. We will initialise an object of the above included script. We pass the following :

    • uuid

    • callback function

    • environment

    • Token

    const  uuidInfo = JSON.parse(result);
   
     if(uuidInfo.error !== undefined){
        alert("Order placement failed");
        return  false;
    }
    
    uuid = uuidInfo.uuid;
    
    rkfl = new RocketFuel({
        uuid,
        callback:  callBackFunc,
        environment:  "<%= developmentEnv %>"  // prod, preprod
    });
  • After initialising the object, start the payment by calling the initPayment method of the above script.

    function  startPayment(){
        rkfl.initPayment();
    }
  • Callback payload

 // In case of Bank/Exchange payment
          {
            paymentMode: 'Bank/Exchange',
            txn_id: 
            status: 
            meta:
          },

          Sample response:
          {
            paymentMode: 'Bank/Exchange',
            txn_id: "7df55d22-fa5e-4ca2-9af4-a39c95f18b3a"
            status: 0
            meta: {offerId: "1630402767550"}
          },



// In case of Wallet payment
      {
        paymentMode: 'Wallet',
        status: 
        recievedAmount:
        currency:
      },

       Sample response:
       {
           paymentMode: 'Wallet',
           status:"completed",
           recievedAmount:10.00,
           currency:"ETH"
       }

SSO Login

Create merchant Auth using the PUBLIC_KEY

    ### JS Code snippet

        var merchantAuth = function(merchantId) {
            var buffer = Buffer.from(merchantId);
            var encrypted = crypto.publicEncrypt(process.env.PUBLIC_KEY, buffer);
            return encrypted.toString("base64");
        }

RKFL Token usage

  • Autosignup

        const payload = {
            firstName: firstName,
            lastName, lastName,
            email: email,
            merchantAuth: "<%= merchantAuth %>",
        }
        rkfl = new RocketFuel({ environment: "<%= developmentEnv %>", });
        rkfl.rkflAutoSignUp(payload, environment = "<%= developmentEnv %>").then((res) => {
            // save this rkflToken for reference in the DB 
            // It is unique to each customer
            res.result.rkflToken;
        })})
  • Existing RKFL Token

        rkfl = new  RocketFuel({
            token, // rkfltoken
            uuid,
            callback:  callBackFunc,
            environment:  "<%= developmentEnv %>"  // prod, preprod
        })

You can refer to the REFERENCE_LINK for demonstration.

How To Retrieve Merchant Details

The Email and Password refer to the email/password you use in signing into your merchant portal on https://merchant.rocketfuelblockchain.com or equivalent.

The environment refers to the type of details you are using. You should choose production for real transactions and select sandbox when you are testing.

To retrieve Public Key, visit https://merchant.rocketfuelblockchain.com/settings and copy the string highlighted in the screenshot below.

You can also retrieve Merchant Id from the same page. Simply scroll up on the settings page and copy from the section highlighted below

Last updated