obydul / laraskrill
LaraSkrill is a laravel plugin for processing payments through Skrill.
Requires
- laravel/framework: >=7.0
README
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 inconfig/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
- Skrill Quick Checkout Integration Guide - version 8.3
- Skrill Automated Payments Interface (API) Guide - version 3.2
- Skrill test merchant email: demoqco@sun-fish.com, demoqcoflexible@sun-fish.com, demoqcofixedhh@sun-fish.com
- MQI/API password and secret word: mqi: skrill123, secretword: skrill
- Skrill test card numbers: VISA: 4000001234567890 | MASTERCARD: 5438311234567890
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.