1. Go to this page and download the library: Download marshmallow/cashier-mollie 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/ */
public function mollieCustomerFields() {
return [
'email' => $this->email,
'name' => $this->name,
];
}
/**
* Get the receiver information for the invoice.
* Typically tInvoiceInformation()
{
return [$this->name, $this->email];
}
/**
* Get additional information to be displayed on the invoice. Typically a note provided by the customer.
*
* @return string|null
*/
public function getExtraBillingInformation()
{
return null;
}
$schedule->command('cashier:run')
->daily() // run as often as you like (Daily, monthly, every minute, ...)
->withoutOverlapping(); // make sure to
$user = User::find(1);
// Make sure to configure the 'premium' plan in config/cashier_plans.php
$result = $user->newSubscription('main', 'premium')->create();
namespace App\Http\Controllers;
use Laravel\Cashier\SubscriptionBuilder\RedirectToCheckoutResponse;
use Illuminate\Support\Facades\Auth;
class CreateSubscriptionController extends Controller
{
/**
* @param string $plan
* @return \Illuminate\Http\RedirectResponse
*/
public function __invoke(string $plan)
{
$user = Auth::user();
$name = ucfirst($plan) . ' membership';
if(!$user->subscribed($name, $plan)) {
$result = $user->newSubscription($name, $plan)->create();
if(is_a($result, RedirectToCheckoutResponse::class)) {
return $result; // Redirect to Mollie checkout
}
return back()->with('status', 'Welcome to the ' . $plan . ' plan');
}
return back()->with('status', 'You are already on the ' . $plan . ' plan');
}
}
if ($user->subscribed('main')) {
//
}
public function handle($request, Closure $next)
{
if ($request->user() && ! $request->user()->subscribed('main')) {
// This user is not a paying customer...
return redirect('billing');
}
return $next($request);
}
if ($user->subscription('main')->onTrial()) {
//
}
if ($user->subscribedToPlan('monthly', 'main')) {
//
}
if ($user->subscription('main')->cancelled()) {
//
}
if ($user->subscription('main')->onGracePeriod()) {
//
}
$user = App\User::find(1);
// Swap right now
$user->subscription('main')->swap('other-plan-id');
// Swap once the current cycle has completed
$user->subscription('main')->swapNextCycle('other-plan-id');
$user = User::find(1);
$user->subscription('main')->incrementQuantity();
// Add five to the subscription's current quantity...
$user->subscription('main')->incrementQuantity(5);
$user->subscription('main')->decrementQuantity();
// Subtract five to the subscription's current quantity...
$user->subscription('main')->decrementQuantity(5);
$user->subscription('main')->updateQuantity(10);
public function taxPercentage() {
return 20;
}
$user->subscription('main')->syncTaxPercentage();
$user->subscription('main')->cancel();
$user->subscription('main')->cancelAt(now());
if ($user->subscription('main')->onGracePeriod()) {
//
}
use Carbon\Carbon;
$user->newSubscription('main', 'monthly')
->trialUntil(Carbon::now()->addDays(10))
->create();
if ($user->onTrial('main')) {
//
}
if ($user->subscription('main')->onTrial()) {
//
}
$user = User::create([
// Populate other user properties...
'trial_ends_at' => now()->addDays(10),
]);
if ($user->onTrial()) {
// User is within their trial period...
}
if ($user->onGenericTrial()) {
// User is within their "generic" trial period...
}
$invoice = $event->order->invoice();
$invoice->view(); // get a Blade view
$invoice->pdf(); // get a pdf of the Blade view
$invoice->download(); // get a download response for the pdf
class User extends Model
{
/**
* @return string
* @link https://docs.mollie.com/reference/v2/payments-api/create-payment#parameters
* @example 'nl_NL'
*/
public function getLocale() {
return $this->locale;
}
}
// Replace this:
$table->unsignedInteger('owner_id');
// By this:
$table->uuid('owner_id');
use App\Plan;
use Laravel\Cashier\Exceptions\PlanNotFoundException;
use Laravel\Cashier\Plan\Contracts\PlanRepository;
class DatabasePlanRepository implements PlanRepository
{
public static function find(string $name)
{
$plan = Plan::where('name', $name)->first();
if (is_null($plan)) {
return null;
}
// Return a \Laravel\Cashier\Plan\Plan by creating one from the database values
return $plan->buildCashierPlan();
// Or if your model implements the contract: \Laravel\Cashier\Plan\Contracts\Plan
return $plan;
}
public static function findOrFail(string $name)
{
if (($result = self::find($name)) === null) {
throw new PlanNotFoundException;
}
return $result;
}
}
namespace App;
use Laravel\Cashier\Plan\Plan as CashierPlan;
use Illuminate\Database\Eloquent\Model;
class Plan extends Model
{
/**
* Builds a Cashier plan from the current model.
*
* @returns \Laravel\Cashier\Plan\Plan
*/
public function buildCashierPlan(): CashierPlan
{
$plan = new CashierPlan($this->name);
return $plan->setAmount(mollie_array_to_money($this->amount))
->setInterval($this->interval)
->setDescription($this->description)
->setFirstPaymentMethod($this->first_payment_method)
->setFirstPaymentAmount(mollie_array_to_money($this->first_payment_amount))
->setFirstPaymentDescription($this->first_payment_description)
->setFirstPaymentRedirectUrl($this->first_payment_redirect_url)
->setFirstPaymentWebhookUrl($this->first_payment_webhook_url)
->setOrderItemPreprocessors(Preprocessors::fromArray($this->order_item_preprocessors));
}
}
class AppServiceProvider extends ServiceProvider
{
public function register()
{
$this->app->bind(\Laravel\Cashier\Plan\Contracts\PlanRepository::class, DatabasePlanRepository::class);
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.