obydul/laraskrill

LaraSkrill is a laravel plugin for processing payments through Skrill.

v1.2.0 2022-07-03 19:02 UTC

This package is auto-updated.

Last update: 2024-11-07 12:54:55 UTC


README

Latest Stable Version Latest Unstable Version License

Introduction

By using this plugin you can process or refund payments from Skrill in your Laravel application. You may read this article and can see the output of this package. Article link: Laravel Skrill Payment Gateway Integration with LaraSkrill

Demo Laravel Project: Laravel LaraSkrill Integration

Installation

  • Use the following command to install:
composer require obydul/laraskrill
  • Laravel 5.5 uses package auto-discovery, so doesn't require you to manually add the ServiceProvider. If you don't use auto-discovery, add the service provider to your $providers array in config/app.php file like:
Obydul\LaraSkrill\LaraSkrillServiceProvider::class

Installation completed.

Configuration

  • After installation, create a constructor.
/**
 * Construct.
 */
private $skrilRequest;

public function __construct()
{
    // skrill config
    $this->skrilRequest = new SkrillRequest();
    $this->skrilRequest->pay_to_email = 'demoqco@sun-fish.com'; // your merchant email
    $this->skrilRequest->return_url = 'RETURN URL';
    $this->skrilRequest->cancel_url = 'CANCEL URL';
    $this->skrilRequest->logo_url = 'https://cdn.shouts.dev/images/shoutsdev.png';  // optional
    $this->skrilRequest->status_url = 'IPN URL or Email';  // you can use https://webhook.site webhook url as test IPN
    $this->skrilRequest->status_url2 = 'IPN URL or Email'; // optional
}

API/MQI password

To make a refund, we need the API/MQI password. In your Skrill account, go to Settings > Developer Settings > Change MQI/API password.

Usage

Following are some ways through which you can access the LaraSkrill provider:

// Import the class namespaces first, before using it directly
use Obydul\LaraSkrill\SkrillClient;
use Obydul\LaraSkrill\SkrillRequest;

// Create object instance
$request = new SkrillRequest();
$client = new SkrillClient($request);

// Methods
$sid = $client->generateSID();
$client->paymentRedirectUrl($sid);
$refund_prepare_response = $client->prepareRefund();
$do_refund = $client->doRefund();

Make a Payment

// create object instance of SkrillRequest
$this->skrilRequest->amount = '10.26';
$this->skrilRequest->currency = 'USD';
$this->skrilRequest->language = 'EN';
$this->skrilRequest->prepare_only = '1';

// custom fields (optional)
$this->skrilRequest->merchant_fields = 'site_name, invoice_id, customer_id, customer_email';
$this->skrilRequest->site_name = 'Shout.dev';
$this->skrilRequest->invoice_id = 'INV_' . strtoupper(str()->random(10));
$this->skrilRequest->customer_id = 1001;
$this->skrilRequest->customer_email = 'customer@shouts.dev';

$this->skrilRequest->detail1_description = 'Product ID:';
$this->skrilRequest->detail1_text = '101';

// you can also pass your unique transaction id  (optional)
// $this->skrilRequest->transaction_id = 'SHOUTSTX0001';

// create object instance of SkrillClient
$client = new SkrillClient($this->skrilRequest);
$sid = $client->generateSID(); //return SESSION ID

// handle error
$jsonSID = json_decode($sid);
if ($jsonSID != null && $jsonSID->code == "BAD_REQUEST")
    return $jsonSID->message;

// do the payment
$redirectUrl = $client->paymentRedirectUrl($sid); //return redirect url
return redirect()->to($redirectUrl); // redirect user to Skrill payment page

Refund

// Create object instance of SkrillRequest
$prepare_refund_request = new SkrillRequest();
// config
$prepare_refund_request->email = 'merchant_email';
$prepare_refund_request->password = 'api_password';
$prepare_refund_request->refund_status_url = 'refund_status_url';
// request
$prepare_refund_request->transaction_id = 'MNPTTX0001';
$prepare_refund_request->amount = '5.56';
$prepare_refund_request->refund_note = 'Product no longer in stock';
$prepare_refund_request->merchant_fields = 'site_name, customer_email';
$prepare_refund_request->site_name = 'Your Website';
$prepare_refund_request->customer_email = 'customer@example.com';

// do prepare refund request
$client_prepare_refund = new SkrillClient($prepare_refund_request);
$refund_prepare_response = $client_prepare_refund->prepareRefund(); // sid or error code

// refund requests
$refund_request = new SkrillRequest();
$refund_request->sid = $refund_prepare_response;

// do refund
$client_refund = new SkrillClient($refund_request);
$do_refund = $client_refund->doRefund();
dd($do_refund); // response

Note

Table 1: LaraSkrill Config Parameters

Checkout Parameters

There are many parameters of Skrill checkout. Please take a look at the page 13. Skrill Quick Checkout Integration Guide - v8.3

Note: 'pay_to_email', 'return_url', 'cancel_url', 'status_url', 'status_url2' and 'logo_url' are already included in the config file. You can add other fields at checkout without these fields.

Table 2: Refund Parameters

More parameters: You can add more fields. Please take a look at the page 24. Skrill Automated Payments Interface (API) Guide - v3.0

Note: 'action', 'email', 'password', 'status_url' are already included. You can add other fields at refund without these fields.

Skrill IPN (status_url): If you want to get data from 'status_url' instead of receiving email, then use this code to your ipn listener: Skrill IPN by Md. Obydullah

Information

License

The MIT License (MIT). Please see License File for more information.

Others

Note: I've taken the main concept from skrill-quick and thank you, Mikica Ivosevic.

In case of any issues/questions, kindly create one on the Discussions section.

Thank you for installing LaraSkrill.