1. Go to this page and download the library: Download finller/laravel-mangopay 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/ */
finller / laravel-mangopay example snippets
class User extends Authenticatable
{
use HasMangopayUser;
}
use Finller\Mangopay\Traits\HasMangopayUser;
class User extends Authenticatable
{
use HasMangopayUser;
}
// or
class Company extends Model
{
use HasMangopayUser;
}
class Company extends Model
{
use HasMangopayUser;
protected function mangopayUserIsLegal(){
return true; //or use some logic to determine the value
};
}
$user->createMangopayWallet([
'Description'=>'Main Wallet',
'Currency'=>'EUR',
'Tag'=>'a name or any info'
]);
//get the list of the user's wallets
$user->mangopayWallets();
$bankAccount = $company->createMangopayBankAccount([
'IBAN' => 'an IBAN',
'Tag' => 'any name or tag',
'BIC' => 'BIC is optional',
'OwnerName' => 'the name',
'OwnerAddress' => [
'AddressLine1' => 'street',
'AddressLine2' => null,
'City' => 'the city name',
'Region' => 'region is
//SEPA PayIn
$payIn = $user->createMangopayMandatePayIn([
'DebitedFunds'=>[
'Amount'=>1260,//12.60€
'Currency'=>'EUR',
],
'Fees'=>[
'Amount'=>0,//0€
'Currency'=>'EUR',
],
'BankAccountId'=>123456,
'CreditedWalletId'=>123456,
'CreditedUserId'=>123456,//by default it's the owner of the wallet
'MandateId'=>123456,
'StatementDescriptor'=>'Your company name or a ref',
]);
$payout = $user->createMangopayPayOut([
'DebitedFunds'=>[
'Amount'=>1260,//12.60€
'Currency'=>'EUR',
],
'Fees'=>[
'Amount'=>0,//0€
'Currency'=>'EUR',
],
'BankAccountId'=>123456,
'DebitedWalletId'=>7891011,
'BankWireRef'=>'Your company name or a ref',
]);
use Finller\Mangopay\Models\MangopayPivot;
$mangopayUserId = "123456";
$pivot = MangopayPivot::findByMangopayId($mangopayUserId);
$laravelUser = $pivot->billable;//this will give you the laravel User or whatever Model you use
$mangopayUser = $pivot->mangopayUser();//this will give you the Mangopay User Object
use App\Events\Mangopay\PayInFailed;
use App\Events\Mangopay\PayInSucceeded;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use MangoPay\EventType;
class MangopayHookController extends Controller
{
/**
* Handle mangopay hook
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function payin(Request $request)
{
$eventType = $request->input('EventType');
$Id = $request->input('RessourceId');
$date = $request->input('Timestamp');
if (!!$Id and !!$eventType) {
switch ($eventType) {
case EventType::PayinNormalSucceeded:
event(new PayInSucceeded($Id, $date));
break;
case EventType::PayinNormalFailed:
event(new PayInFailed($Id, $date));
break;
}
}
//you have to respond in less than 2 secondes with a 200 status code
return response();
}
}
use Illuminate\Broadcasting\Channel;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
use MangoPay\PayIn;
class PayInFailed
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public $Id;
public $date;
public $type = PayIn::class;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct($Id, $date)
{
$this->Id = $Id;
$this->date = $date;
}
/**
* Get the channels the event should broadcast on.
*
* @return \Illuminate\Broadcasting\Channel|array
*/
public function broadcastOn()
{
return new PrivateChannel('channel-name');
}
}
return [
'api' => [
'id' => env('MANGOPAY_ID'),
'secret' => env('MANGOPAY_KEY'),
'url' => env('MANGOPAY_URL', "https://api.mangopay.com") //<-- this is the production base url
],
'folder' => storage_path('mangopay'),
'defaultCurrency' => 'EUR',
];