Built by

a11rew

Category

Payment

Version

1.3.0

Last updated

Apr 7, 2024, 20:41:44 PM2 months ago

About

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

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
Copy to clipboard
medusa-config.js
add the following to the
Copy to clipboard
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
Copy to clipboard
<your-medusa-backend-url>/paystack/hooks
. Eg.
Copy to clipboard
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
Copy to clipboard
paystack
as the
Copy to clipboard
provider_id
to add Paystack to your checkout flow.
Copy to clipboard
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

Copy to clipboard
medusa-payment-paystack
inserts a reference named
Copy to clipboard
paystackTxRef
into the
Copy to clipboard
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.
Copy to clipboard
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.
Copy to clipboard
medusa-payment-paystack
handles refunding the given amount using Paystack and marks the order in Medusa as refunded.

Configuration

NameTypeDefaultDescription
secret_key
Copy to clipboard
string
Copy to clipboard
undefined
Your Paystack secret key
disable_retries
Copy to clipboard
boolean
Copy to clipboard
false
Disable retries for 5xx and failed idempotent requests to Paystack
debug
Copy to clipboard
boolean
Copy to clipboard
false
Enable debug mode for the plugin. If true, helpful debug information is logged to the console

Demo

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

Build your own plugins

Develop your own plugins with our API to speed up your processes.

Make your plugin available via npm for it to be shared in our Plugin Library with the broader Medusa community.