I had project to implement subscription on Laravel website with PayPal. PayPal have 3 types of API right now, I tried all of them. And find out that PayPal Payments Pro suites best for client needs. So I implement subscription payment with Credit Cards and with PayPal express redirect to PayPal website. Here is code, maybe if you are stuck will help you.

Install via composer PayPal Merchant account https://github.com/paypal/merchant-sdk-php

In controller include this classes:

use PayPal\Service\PayPalAPIInterfaceServiceService;
use PayPal\EBLBaseComponents\PaymentDetailsType;
use PayPal\CoreComponentTypes\BasicAmountType;
use PayPal\EBLBaseComponents\SetExpressCheckoutRequestDetailsType;
use PayPal\EBLBaseComponents\BillingAgreementDetailsType;
use PayPal\PayPalAPI\SetExpressCheckoutRequestType;
use PayPal\PayPalAPI\SetExpressCheckoutReq;
use PayPal\EBLBaseComponents\RecurringPaymentsProfileDetailsType;
use PayPal\EBLBaseComponents\BillingPeriodDetailsType;
use PayPal\EBLBaseComponents\ScheduleDetailsType;
use PayPal\EBLBaseComponents\CreateRecurringPaymentsProfileRequestDetailsType;
use PayPal\PayPalAPI\CreateRecurringPaymentsProfileRequestType;
use PayPal\PayPalAPI\CreateRecurringPaymentsProfileReq;
use PayPal\EBLBaseComponents\ActivationDetailsType;
use PayPal\EBLBaseComponents\CreditCardDetailsType;

For implementing PayPal checkout that redirect to PayPal website use two functions in PaymentController

First call SetExpressCheckout and PayPal will redirect to ReturnURL you specified in it.

ReturnURL execute another function ConfirmPaymentWithExpress and use token from SetExpressCheckout

Continue reading