1. Go to this page and download the library: Download darkghosthunter/laraflow 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/ */
darkghosthunter / laraflow example snippets
// To enable Billable trait methods
Schema::table('users', function (Blueprint $table) {
$table->string('flow_customer_id')->nullable();
$table->string('flow_card_brand')->nullable();
$table->string('flow_card_last_four')->nullable();
});
// To enable Subscriptable/Multisubscribable traits method
Schema::create('subscriptions', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('flow_customer_id');
$table->string('subscription_id');
$table->string('plan_id');
$table->string('coupon_id')->nullable();
$table->date('trial_starts_at')->nullable();
$table->date('trial_ends_at')->nullable();
$table->date('starts_at')->nullable();
$table->date('ends_at')->nullable();
$table->timestamps();
});
return [
// ...
'migrations' => true,
];
Route::post('flow/return/payment')
->uses('PaymentController@status')
->middleware('throttle:20,1'); // 20 attempts every 1 minute.
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use FlowPayment;
class PaymentController extends Controller
{
/**
* Make a Payment.
*
* @param Request $request
* @return \Illuminate\Http\RedirectResponse
*/
public function pay(Request $request)
{
// Validate, check items, ...
// Finally, create the Payment
$response = FlowPayment::commit([
'commerceOrder' => 'MyOrder1',
'subject' => 'Game Console',
'email' => '[email protected]',
'amount' => 9900,
'urlConfirmation' => 'https://myapp.com/webhooks/payment',
'urlReturn' => 'https://myapp.com/payment/return',
]);
return redirect($response->getUrl());
}
}
namespace App;
use Illuminate\Database\Eloquent\Model;
use DarkGhostHunter\Laraflow\Billable;
class User extends Model
{
use Billable;
// ...
}
namespace App;
use Illuminate\Database\Eloquent\Model;
use DarkGhostHunter\Laraflow\Billable;
class User extends Model
{
use Billable;
/**
* Should create a Customer in Flow when created
*
* @return bool
*/
protected $syncOnCreate = true;
}
namespace App;
use Illuminate\Database\Eloquent\Model;
use DarkGhostHunter\Laraflow\Billable;
use DarkGhostHunter\Laraflow\Subscribable;
class User extends Model
{
use Billable, Subscribable;
// ...
}
namespace App;
use Illuminate\Database\Eloquent\Model;
use DarkGhostHunter\Laraflow\Billable;
use DarkGhostHunter\Laraflow\Multisubscribable;
class User extends Model
{
use Billable, Multisubscribable;
// ...
}
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class SubscriptionController extends Controller
{
/**
* Unsubscribe.
*
* @param Request $request
* @return \Illuminate\View\View
*/
public function unsubscribe(Request $request)
{
// Validate, etc, ...
// Unsubscribe the user immediately
$subscription = Auth::user()->unsubscribeNow(
$request->subscription_id
);
if ($subscription->status === 4) {
return view('user.unsubscribed')
->with('subscription', $subscription);
}
return view('user.unsubscribe-fail')
->with('subscription', $subscription);
}
}
namespace App;
use DarkGhostHunter\FlowSdk\Flow;
use Illuminate\Http\Request;
use App\Http\Controller;
class ExampleController extends Controller
{
public function pay(Request $request, Flow $flow)
{
if ($flow->isProduction()) {
// ...
}
}
public function customPay()
{
$flow = app(Flow::class);
echo $flow->isProduction(); // false..
}
}