Skip to content

Emmytheo/medusa-payment-paystack

 
 

Repository files navigation

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 add configurations for your paystack plugin.

In medusa-config.js add the following at the end of the plugins array:

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

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();

  let handler = PaystackPop.setup({
    key: 'pk_test_xxxxxxxxxx',
    email: document.getElementById("email-address").value,
    amount: document.getElementById("amount").value * 100,
    ref: paystackTxRef // Reference returned from plugin
    onClose: function(){
      alert('Window closed.');
    },
    callback: function(response){
      // Call Medusa checkout complete here
    }
  });

  handler.openIframe();
}

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.

Demo

Demo video

Demo Video

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

About

Paystack Payment provider for Medusa Commerce

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 98.9%
  • JavaScript 1.1%