Payum for Laravel 5
To get the latest version of Laravel Exceptions, simply require the project using Composer:
composer require recca0120/laravel-payum
Instead, you may of course manually update your require block and run composer update
if you so choose:
{
"require": {
"recca0120/laravel-payum": "^0.0.1"
}
}
Include the service provider within config/app.php
. The service povider is needed for the generator artisan command.
'providers' => [
...
Recca0120\LaravelPayum\ServiceProvider::class,
...
];
return [
'router' => [
'prefix' => 'payment',
'as' => 'payment.',
// if laravel 5.1 remove web
'middleware' => 'web',
],
'storage' => [
// optioins: eloquent, filesystem
'token' => 'filesystem',
// optioins: eloquent, filesystem
'gatewayConfig' => 'filesystem',
],
// 'customFactoryName' => [
// 'factory' => 'FactoryClass',
// 'username' => 'username',
// 'password' => 'password',
// 'sandbox' => false
// ],
'gatewayConfigs' => [
'offline' => []
],
];
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller as BaseController;
use Payum\Core\GatewayInterface;
use Payum\Core\Model\PaymentInterface;
use Payum\Core\Payum;
use Payum\Core\Request\GetHumanStatus;
use Payum\Core\Security\TokenInterface;
use Payum\Core\Storage\StorageInterface;
use Recca0120\LaravelPayum\Service\Payment;
class PaymentController extends BaseController
{
public function prepare(Payment $payment)
{
return $payment->prepare('offline', function (PaymentInterface $payment, $gatewayName, StorageInterface $storage, Payum $payum) {
$payment->setNumber(uniqid());
$payment->setCurrencyCode('TWD');
$payment->setTotalAmount(100);
$payment->setDescription('A description');
$payment->setClientId('anId');
$payment->setClientEmail('foo@example.com');
$payment->setDetails([]);
});
}
public function done(Payment $payment, Request $request, $payumToken)
{
return $payment->done($request, $payumToken, function (GetHumanStatus $status, PaymentInterface $payment, GatewayInterface $gateway, TokenInterface $token) {
return response()->json([
'status' => $status->getValue(),
'client' => [
'id' => $payment->getClientId(),
'email' => $payment->getClientEmail(),
],
'number' => $payment->getNumber(),
'description' => $payment->getCurrencyCode(),
'total_amount' => $payment->getTotalAmount(),
'currency_code' => $payment->getCurrencyCode(),
'details' => $payment->getDetails(),
]);
});
}
}
Route::get('payment', [
'as' => 'payment',
'uses' => 'PaymentController@prepare',
]);
Route::any('payment/done/{payumToken}', [
'as' => 'payment.done',
'uses' => 'PaymentController@done',
]);
If you want use eloquent you need change config.php and create database
publish vendor
artisan vendor:publish --provider="Recca0120\LaravelPayum\ServiceProvider"
migrate
artisan migrate
modify config
return [
'router' => [
'prefix' => 'payment',
'as' => 'payment.',
// if laravel 5.1 remove web
'middleware' => 'web',
],
'storage' => [
// optioins: eloquent, eloquent
'token' => 'filesystem',
// optioins: eloquent, filesystem
'gatewayConfig' => 'filesystem',
],
// 'customFactoryName' => [
// 'factory' => 'FactoryClass',
// 'username' => 'username',
// 'password' => 'password',
// 'sandbox' => false
// ],
'gatewayConfigs' => [
'offline' => []
],
];