npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

medusa-payment-paystack

v1.3.0

Published

Paystack Payment provider for Medusa Commerce

Downloads

958

Readme

Medusa Paystack Plugin

About

medusa-payment-paystack is a Medusa plugin that adds Paystack as a payment provider to Medusa ecommerce stores.

GIF Demoing Paying with Paystack

Setup

Prerequisites

Medusa Server

If you don’t have a Medusa server installed yet, you must follow the quickstart guide first.

Install the Paystack Plugin

In the root of your Medusa server, run the following command to install the Paystack plugin:

yarn add medusa-payment-paystack

Configure the Paystack Plugin

Next, you need to enable the plugin in your Medusa server.

In medusa-config.js add the following to the plugins array:

const plugins = [
  // other plugins
  {
    resolve: `medusa-payment-paystack`,
    /** @type {import("medusa-payment-paystack").PluginOptions} */
    options: {
      secret_key: "<PAYSTACK_SECRET_KEY>",
    },
  },
];

The full list of configuration options you can pass to the plugin can be found in Config

Setup Webhooks

To ensure that Medusa is notified of successful payments, you need to set up webhooks in your Paystack dashboard. If you're installing this plugin for production use, this is a required step.

Go to your Paystack dashboard and navigate to the "API Keys & Webhooks" section.

Set the Webhook URL to <your-medusa-backend-url>/paystack/hooks. Eg. https://your-medusa-backend.com/paystack/hooks.

Admin Setup

This step is required for you to be able to use Paystack as a payment provider in your storefront.

Admin Prerequisites

If you don’t have a Medusa admin installed, make sure to follow the guide on how to install it before continuing with this section.

Add Paystack to Regions

You can refer to this documentation in the user guide to learn how to add a payment provider like Paystack to a region.

Storefront Setup

Follow Medusa's Checkout Flow guide using paystack as the provider_id to add Paystack to your checkout flow.

medusa-payment-paystack returns a transaction reference you should send to Paystack as the transaction's reference.

Using this returned reference as the Paystack transaction's reference allows the plugin to confirm the status of the transaction, verify that the paid amount and currency are correct before authorizing the payment.

Using Transaction Reference

medusa-payment-paystack inserts a reference named paystackTxRef into the PaymentSession's data.

const { paystackTxRef } = paymentSession.data;

Provide this reference when initiating the Paystack Popup payment flow.

const paymentForm = document.getElementById("paymentForm");
paymentForm.addEventListener("submit", payWithPaystack, false);

function payWithPaystack(e) {
  e.preventDefault();

  const paystack = new PaystackPop();

  paystack.newTransaction({
    key: "pk_test_xxxxxxxxxx", // Your Paystack public key
    email: document.getElementById("email-address").value,
    amount: document.getElementById("amount").value, // Value in lowest denomination of currency to be paid
    ref: paystackTxRef, // Reference gotten from plugin
    onSuccess() {
      // Call Medusa checkout complete here
    },
    onCancel() {
      alert("Window closed.");
    },
  });
}

Verify Payment

Call the Medusa Complete Cart method in the payment completion callback of your chosen flow.

medusa-payment-paystack will check the status of the transaction with the reference it provided you, verify the amount matches the cart total and mark the cart as paid for in Medusa.

Refund Payments

You can refund captured payments made with Paystack from the Admin dashboard.

medusa-payment-paystack handles refunding the given amount using Paystack and marks the order in Medusa as refunded.

Configuration

| Name | Type | Default | Description | | --------------- | --------- | ----------- | --------------------------------------------------------------------------------------------- | | secret_key | string | undefined | Your Paystack secret key | | disable_retries | boolean | false | Disable retries for 5xx and failed idempotent requests to Paystack | | debug | boolean | false | Enable debug mode for the plugin. If true, helpful debug information is logged to the console |

Demo

Try out the demo here: Medusa store with Paystack Integration

Demo video

Demo Video

Clone the demo repository a11rew/medusa-payment-paystack-demo and follow the setup instructions to get started.