sezzle/sezzlepay

Sezzle extension for Magento 2

Installs: 62 992

Dependents: 0

Suggesters: 0

Security: 0

Stars: 9

Watchers: 7

Forks: 5

Open Issues: 4

Type:magento2-module

pkg:composer/sezzle/sezzlepay

7.0.25 2025-12-16 17:17 UTC

This package is auto-updated.

Last update: 2025-12-16 21:02:42 UTC


README

The following documentation is written for Sezzle internal developers only. Merchant developers should refer to README.md for instructions.

Prerequisites

Docker

All Sezzle developers should already have completed Docker setup for Sezzle-Compose (although Sezzle-Compose will not be used for Magento setup).

MAMP

  1. Download MAMP
  2. Unzip the downloaded file, then drag & drop to the Applications folder

PHP

  1. open ~/.zshrc
  2. Add the following, and save: export PATH=/Applications/MAMP/Library/bin:/Applications/MAMP/bin/php/php8.3.14/bin:$PATH
    • Note: php version should correspond to the one selected in MAMP in the later step
  3. source ~/.zshrc

Enable mod_rewrite for Apache

This section will resolve the issue where stylesheets aren't loading for test environment

  1. cd /Applications/MAMP/conf/apache
  2. open .
  3. Secondary-click on httpd.conf and select Open With > TextEdit.app
  4. Search the document for #LoadModule rewrite_module modules/mod_rewrite.so and remove the # at the beginning of the line

Composer

brew install composer

OpenSearch

In Terminal, run the following:

docker run -d --name opensearch \
  -p 9201:9200 -p 9601:9600 \
  -e "discovery.type=single-node" \
  -e "DISABLE_SECURITY_PLUGIN=true" \
  opensearchproject/opensearch:2.7.0

Initial setup

Install Magento to MAMP

In Terminal, run the following:

cd /Applications/MAMP/htdocs
mkdir magento && cd magento && mkdir 248 && cd 248
composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition=2.4.8 .

Configure MAMP

  1. Open MAMP app
  2. Select Web server: Apache and PHP version: 8.4.1
  3. Click Preferences
  4. In the Ports tab, set Apache Port and Nginx Port to 8888 and MySQL Port to 8889
  5. In the Server tab, select Use MySQL server: 8.0.40
  6. For Document Root, click Choose and navigate to Applications › MAMP › htdocs › magento › 248 > pub. Click Choose to save.
  7. Click OK
  8. Click Start

Create Database

Ensure other MySQL instances are not running.

  1. Open DBeaver or equivalent
  2. Click New Database connection
  3. Select MySQL, then click Next
  4. Port should be 8889
  5. Username and Password should each be root
  6. Click Finish
  7. Secondary-click on the newly created connection and select Rename
  8. Enter mamp then click OK
  9. Click the connection to expand, then Secondary-click on Databases and select Create New Database
  10. Enter Database name: magento then click OK

Configure Magento

In Terminal, run the following:

php -d memory_limit=-1 bin/magento setup:install \
--base-url=http://127.0.0.1:8888 \
--db-host=127.0.0.1:8889 \
--db-name=magento \
--db-user=root \
--db-password=root \
--admin-firstname=admin \
--admin-lastname=admin \
--admin-email=admin@admin.com \
--admin-user=admin \
--admin-password=admin123 \
--language=en_US \
--currency=USD \
--timezone=America/Chicago \
--use-rewrites=1 \
--search-engine=opensearch \
--opensearch-host=localhost \
--opensearch-port=9201 \
--opensearch-index-prefix=magento2 \
--opensearch-timeout=15 \
--backend-frontname=admin
  • Should result in [SUCCESS]: Magento installation complete.

At this point, you should be able to open 127.0.0.1:8888 and 127.0.0.1:8888/admin but not log in

In Terminal, run the following:

php -d memory_limit=-1 bin/magento module:disable Magento_TwoFactorAuth Magento_AdminAdobeImsTwoFactorAuth

At this point, you should be able to open 127.0.0.1:8888/admin and log in, but Sezzle will not be available in Payment Methods

Sample Data

In Terminal, run the following: php -d memory_limit=-1 bin/magento sampledata:deploy

  • When prompted for credentials, use Magento 2 Keys in 1Password (Platform Integrations Team vault)
  • Alternatively, generate new keys. (credentials are Magento Partner Account in 1Password Dev vault - 2FA sent to magento@sezzle.com, submit an ITSD request to obtain access) When prompted to store credentials, say Y
  • Should result in Sample data modules have been added via composer.

Install Sezzle Extension

In Terminal, run the following:

cd app && mkdir code && cd code && mkdir sezzle && cd sezzle && git clone ssh://git@gitlab.sezzle.com:10022/Frontend/magento2AppFrontends.git sezzlepay
cd ../../..

Note: Getting Unknown module(s) error during module:enable? Try this instead:

For older Magento versions:

cd vendor && mkdir sezzle && cd sezzle && git clone ssh://git@gitlab.sezzle.com:10022/Frontend/magento2AppFrontends.git sezzlepay
cd ../..

At this point, if you run the Compile command cluster below, you should be able to see Sezzle as an option on 127.0.0.1:8888/admin, but you will not be able to add API keys

Compile

In Terminal (from magento/248), run the following:

php -d memory_limit=-1 bin/magento module:enable Sezzle_Sezzlepay
php -d memory_limit=-1 bin/magento setup:upgrade
php -d memory_limit=-1 bin/magento setup:di:compile
php -d memory_limit=-1 bin/magento setup:static-content:deploy -f
php -d memory_limit=-1 bin/magento indexer:reindex
php -d memory_limit=-1 bin/magento cache:clean

At this point, you should be able to see sample products on the storefront

Sezzle Configuration

  1. Navigate to 127.0.0.1:8888/admin
  2. Log in with Username admin and Password admin123
  3. Go to Stores > Configuration > Sales > Payment Methods > Additional Payment Solutions
  4. Next to Sezzle, click Configure
  5. Click I've already setup Sezzle, I want to edit my settings
  6. Change Enabled to Yes
  7. Enter Public Key and Private Key
    • Can use any valid sandbox Sezzle API key pair for testing (recommended: Sezzle Shopify Test Store)
    • The API keys validation only confirms that a merchant was found with the provided public and private keys. It does not validate the shop url is correct, hence how merchants re-use API keys across multiple stores.
    • This creates a nightmare for accounting, because the orders are recorded under the one account without distinction of site origin.
    • It also affects widgets, since the API Keys are used to generate the UUID in the widget snippet. Not only do we not know that widgets are installed on the other stores, but config management also gets messy.
  8. Click Save config

Populating the store

This section is in case of error generated Sample Data

Creating a product

  1. Go to Catalog > Products
  2. Click Add Product
  3. Required Fields:
    • Enable Product: Yes
    • Product Name: (any)
    • Price: (any)
    • Quantity: (any)
    • Category: Default Category
    • Visibility: Catalog, Search
  4. Click Save

Adding Products to Home Page Template

  1. Go to Content > Pages
  2. On the line for Home Page, click Select > Edit
  3. Expand Content then click Edit with Page Builder (a red line will appear where it will be inserted)
  4. Under Layout, drag Row to the working area (under the existing snippet)
  5. Under Add Content, drag Products to inside the Row
  6. Hover over Products, then click Settings (gear icon)
  7. Select Category as Default Category, then click Save
  8. Click Save as Template, name the template, then click Save
  9. Click Apply template, then on the template you just saved, click Apply
  10. Click OK
  11. Click the Minimize Window icon (diagonal arrows, pointing inward)
  12. Click Save

Local Testing

  1. Open Docker Desktop and start opensearch container
  2. Open MAMP, update Document root, then click Start
    • Click Preferences.
    • In the Server tab under Document Root, click Choose and navigate to Applications › MAMP › htdocs › magento › 248 > pub. Click Choose to save, then click OK
  3. Open DBeaver and ensure mamp localhost:8889 database is connected
  4. Navigate to 127.0.0.1:8888/admin
  5. All development work will be completed inside /Applications/MAMP/htdocs/magento/248/vendor/sezzle/sezzlepay as you would normally in ~/go/src/sezzle/magento2AppFrontends
    • Gitlab project magento2AppFrontends will mirror push to Github magento2 project for merchant use.
    • Use php -d memory_limit=-1 bin/magento setup:upgrade if any changes to Database
    • Use php -d memory_limit=-1 bin/magento setup:di:compile if making changes to dependencies
    • Use php -d memory_limit=-1 bin/magento setup:static-content:deploy -f if making changes to html, css, or js files

Releasing Updates to Merchants

Code Changes

  1. Update CHANGELOG.md
  2. Update version number in composer.json
  3. Delete previous version zip file
  4. open ..
  5. Select all contents of magento2AppFrontends and compress, renaming the zip file sezzle_sezzlepay-{version}.zip
  6. Merge to production

Magento Submission

  1. Log in to https://commercedeveloper.adobe.com/ using Magento Partner Account entry in 1Password
  2. Click Extensions
  3. Click Extension Name: Sezzle where Platform is M2
  4. Click Submit a New Version
  5. Enter Adobe Commerce Version Number per the same version reflected in composer.json
  6. Unless a feature must be released at a specific date, select Requested Launch Date: On Approval
  7. Click Continue
  8. Click Attach Package. Navigate to and select the zipped project folder, then click Open
  9. Select Adobe Commerce Version Compatibility: (all)
  10. Copy entry from CHANGELOG.md to the Release Notes field
  11. Click Submit

Github Release Tag

Gitlab magento2AppFrontends project will automatically mirror to Github sezzle-magento2 project. Once that has occurred, the following steps must be completed manually. If this step is not completed, merchants will not be able to install the latest version via Composer

  1. Go to https://github.com/sezzle/sezzle-magento2/releases
  2. Click Draft a new release
  3. Click Choose a tag, then enter the new version, following the existing format, then click Creat a new tag... on publish
  4. Enter Release Title: Version {version}
  5. In Decribe this release, copy + paste the CHANGELOG.md entry
    • No need to add attachments, the zip file will be added automatically.
  6. Ensure Set as the latest release is checked, then click Publish release

External Resources

https://experienceleague.adobe.com/en/docs/commerce-operations/installation-guide/composer

https://isuruuy.medium.com/configuring-magento2-using-mamp-server-7fbedc35297d

https://www.mageplaza.com/devdocs/how-install-magento-2-mac-osx.html

Allowlisting Merchants

Under In-Context Settings, merchants will see instructions to Make sure you are approved by Sezzle for the InContext Checkout Solution to work. If they wish to select Checkout Mode: iframe, they should contact us to perform the following:

In sezzle-checkout/deploy/values, update CONTENT_SECURITY_POLICY under both default and card for each applicable environment by appending the merchant's URL(s) to the value within the frame-ancestors section of the string.

Merchant team has been added to CODEOWNERS for this type of change. If checkout team review is needed, post the MR in the #code-review-checkout Slack channel for approval.

If they select Checkout Mode: popup, this is not necessary.