Laravel

Mollie Payment Integration in Laravel 7

Before moving towards the topic I want to tell you what is a payment gateway and how it is beneficial for our website.

What is the Payment Gateway?

A payment gateway is a merchant service provided by an e-commerce application service provider that authorizes credit card or direct payments processing for e-businesses, online retailers. Payment gateway like Stripe, Razorpay, Mollie, Authorize are very popular nowadays.

Benefits of Payment Gateway

  • Secure transactions
  • Expanded customer base
  • Faster transaction processing

Requirements

  • Mollie account
  • The Basic knowledge of PHP
  • The basic idea of Laravel Framework

Create a Mollie account by clicking on this link.

mollie account creation

Login to Mollie dashboard in the sidebar you will see developers, click on developers to get your API Key.

mollie api key

Don’t forget to activate your payment method, as it gives errors during the payment. To activate the payment method you have to go settings -> website profile, then under the website profile, you can see the payment methods. You have to activate them.

mollie payment method
mollie payment method list
After clicking on the payment method

Installation

Add Laravel-Mollie to your composer file via the composer require command:

 composer require mollie/laravel-mollie:^2.0 

You can set the mollie API key in two way either by putting API key in you .env file like below

 MOLLIE_KEY=test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Or by calling it in your constructor function like below.

public function  __construct() {
        Mollie::api()->setApiKey('test_FbVACj7UbsdkHtAUWnCnmSNUFHKuuA');
    }

Add routes in your web.php file

Route::get('/mollie-payment','MollieController@preparePayment')->name('mollie.payment');
Route::get('/payment-success','MollieController@paymentSuccess')->name('payment.success');

Create a controller by using the following command

php artisan make:controller MollieController

Under your controller put the following code

<?php

namespace App\Http\Controllers;
use Mollie\Laravel\Facades\Mollie;

class MollieController extends Controller
{   

    public function  __construct() {
        Mollie::api()->setApiKey('test_FbVACj7UbsdkHtAUWnCnmSNGFWMuuA'); // your mollie test api key
    }

    /**
     * Redirect the user to the Payment Gateway.
     *
     * @return Response
     */
    public function preparePayment()
    {   
        

        $payment = Mollie::api()->payments()->create([
        'amount' => [
            'currency' => 'EUR', // Type of currency you want to send
            'value' => '10.00', // You must send the correct number of decimals, thus we enforce the use of strings
        ],
        'description' => 'Payment By codehunger', 
        'redirectUrl' => route('payment.success'), // after the payment completion where you to redirect
        ]);
    
        $payment = Mollie::api()->payments()->get($payment->id);
    
        // redirect customer to Mollie checkout page
        return redirect($payment->getCheckoutUrl(), 303);
    }

    /**
     * Page redirection after the successfull payment
     *
     * @return Response
     */
    public function paymentSuccess() {
        echo 'payment has been received';

    }
}

Visit the below URL

 http://localhost/mollie/public/mollie-payment 

After visiting on the URL, you are redirected to the Mollie payment page

mollie payment page
Mollie Payment Page

Here all your payment methods will be shown, which you activated in your profile. You can choose any payment method to make the payment.

mollie payment
After choosing any payment method, you can see the screen like above

Now you can click on paid for your successful payment. You can see your all payment details under your transaction details.

mollie payment dashboard
your payment details

Still have questions in mind feel free to ask, we are here to help you.

Video Language is in Hindi

Still having confusion feel free to ask, we are here to help you

Related Articles

2 Comments

  1. How can I check the payment status is paid or not. I have to insert all the details in database once I will get the status.

    1. for that you have to add webhook url during the payment request like below
      $payment = Mollie::api()->payments->create([
      “amount” => [
      “currency” => “EUR”,
      “value” => “10.00” // You must send the correct number of decimals, thus we enforce the use of strings
      ],
      “description” => “Order #12345”,
      “redirectUrl” => route(‘order.success’),
      “webhookUrl” => route(‘webhooks.mollie’),
      “metadata” => [
      “order_id” => “12345”,
      ],
      ]);
      the webhook url must be https in order to listen,in the webhook function you can write the code as below
      public function handleWebhookNotification(Request $request) {
      $paymentId = $request->input(‘id’);
      $payment = Mollie::api()->payments->get($paymentId);

      if ($payment->isPaid())
      {
          echo 'Payment received.';
          // Do your thing ...
      }
      

      }

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top button