> Symfony 7 >

Course Overview

Login to bookmark this course

Lemon Squeezy Payment Processor

Kickstart your e-commerce journey with Lemon Squeezy integration in Symfony. Build a full checkout system to sell your digital products with a merchant of record to handle global tax compliance with ease

Leave this course?

Are you sure? All your progress on Lemon Squeezy Payment Processor will be lost when you leave it!
  • intermediate
  • 241 students
  • EN/ES Captions
  • EN/ES Script
  • Certificate of Completion

Your Guides

About this course

What PHP libraries does this tutorial use?

// composer.json
{
    "require": {
        "php": ">=8.2",
        "ext-ctype": "*",
        "ext-iconv": "*",
        "doctrine/dbal": "^3", // 3.9.4
        "doctrine/doctrine-bundle": "^2.13", // 2.13.2
        "doctrine/doctrine-migrations-bundle": "^3.4", // 3.4.1
        "doctrine/orm": "^3.3", // 3.3.2
        "symfony/asset": "7.2.*", // v7.2.0
        "symfony/asset-mapper": "7.2.*", // v7.2.3
        "symfony/console": "7.2.*", // v7.2.1
        "symfony/dotenv": "7.2.*", // v7.2.0
        "symfony/flex": "^2", // v2.5.0
        "symfony/form": "7.2.*", // v7.2.4
        "symfony/framework-bundle": "7.2.*", // v7.2.4
        "symfony/http-client": "7.2.*", // v7.2.4
        "symfony/runtime": "7.2.*", // v7.2.3
        "symfony/security-bundle": "7.2.*", // v7.2.3
        "symfony/stimulus-bundle": "^2.22", // v2.23.0
        "symfony/twig-bundle": "7.2.*", // v7.2.0
        "symfony/validator": "7.2.*", // v7.2.4
        "symfony/webhook": "7.2.*", // v7.2.0
        "symfony/yaml": "7.2.*", // v7.2.3
        "symfonycasts/tailwind-bundle": "^0.7.1", // v0.7.1
        "twig/extra-bundle": "^2.12|^3.0", // v3.20.0
        "twig/twig": "^2.12|^3.0" // v3.20.0
    },
    "require-dev": {
        "doctrine/doctrine-fixtures-bundle": "^4.0", // 4.0.0
        "phpunit/phpunit": "^9.5", // 9.6.22
        "symfony/browser-kit": "7.2.*", // v7.2.0
        "symfony/css-selector": "7.2.*", // v7.2.0
        "symfony/maker-bundle": "^1.62", // v1.62.1
        "symfony/phpunit-bridge": "^7.2", // v7.2.0
        "symfony/stopwatch": "7.2.*", // v7.2.4
        "symfony/web-profiler-bundle": "7.2.*", // v7.2.4
        "zenstruck/foundry": "*" // v2.3.8
    }
}

Note

There are several options for MoR service, we’re using Lemon Squeezy in this course, but you can use what we teach here in Paddle, Polar, or any other service you like. We have no preference, we just happened to pick Lemon Squeezy for this course.

Do you have an amazing product that you want to sell to your customers? Are you looking for a payment processor to be a Merchant of Record to handle tax compliance so that you can focus on more revenue? Lemon Squeezy to the rescue! Start selling your digital products fast and easy.

In this tutorial, we'll build a full checkout system for our awesome product and learn all about the next topics:

  • Manage your store in the Lemon Squeezy dashboard
  • Use Lemon Squeezy storefront to sell products
  • Charge a one-time fee with single payments
  • Use API to talk to Lemon Squeezy and sell products directly from your website
  • Use the Lemon.js script to stream the checkout workflow via overlay
  • Prefill customer's info and add custom data
  • Automatic invoice email on successful order
  • Link Lemon Squeezy customers to the users in our DB
  • Use webhooks to sync data in our database
  • Handling the order_created webhook event
  • Live webhook handling with Ngrok
  • Test webhooks by simulating their sending with fake data

Finally, bonus - users' card credentials are never sent to our servers, but directly to Lemon Squeezy. That means we do not save sensitive card credentials on our servers. Yay!

Next courses in the Symfony 7: Learn More Tricks section of the Symfony 7 Track!

9 Comments

Sort By
Login or Register to join the conversation

So excited about this course!
In advance, Thanks heaps for all the effort creating it.

1 | Reply |

Hey John!

I'm thrilled to hear it! We're actively working on releasing it, so it should be released in full in a few weeks :)

Cheers!

2 | Reply |
Tac-Tacelosky avatar Tac-Tacelosky 2 months ago

What is the purpose of limiting PHP in composer.json?

    "platform": {
        "php": "8.2"
    },

The problem is that I don't have all the extensions loaded, including sqlite, so when I run symfony server:start, it fails, but when I run bin/console doctrine:fixture:load, etc. it works fine (obviously, symfony console will fail). And the application works fine in PHP 8.4. So what's the benefit to restriction it to 8.2?

| Reply |

As discussed privately with @Tac-Tacelosky, the issue was using the GitHub repo not the "Download Course Code" zip file we recommend. This code has this restriction removed.

| Reply |

Hey @Tac-Tacelosky

That's a good question. It is useful to force Composer to install packages compatible with that PHP version, which brings stability to the project. You can try pumping it up to version 8.4, it will likely work, but there may be some incompatible packages - you could remove it as well

Cheers!

| Reply |
Tac-Tacelosky avatar Tac-Tacelosky MolloKhan 2 months ago

I understand, but I don't agree that it's valuable to have. I just want to do "composer install" and have it work. Not change my PHP version, or change the code to allow it to run. Especially since it does work with 8.4!

I'd rather have it break (and report the errors) than force me to use a version of PHP that doesn't have all the extensions installed.

| Reply |

Good point! I also think the course code should not come with that version constraint. I'll share your feedback with the team

Thanks!

| Reply |

This is great! I can't wait for the subscriptions course too :)

| Reply |

Hey Skm,

Thanks for your interest in SymfonyCasts tutorials! :)

Cheers!

1 | Reply |

Delete comment?

Share this comment

astronaut with balloons in space

"Houston: no signs of life"
Start the conversation!