Andrew Glago
Femi Akinyemi
Paystack allows African businesses to accept payments in local and foreign currencies from multiple local and global payment channels.
Our submission, the medusa-payment-paystack
plugin adds Paystack as a payment provider to Medusa ecommerce stores.
Combined with Medusa, business owners in Africa will be able to setup ecommerce stores accepting payments in local currencies tailored towards the 236 million (2022) and counting ecommerce users in Africa.
Clone the demo repository a11rew/medusa-payment-paystack-demo and follow the setup instructions to quickly get started.
Or, setup Paystack in your Medusa server manually with the following instructions;
To begin this guide, you will need to create a Paystack account. By doing this, you will be able to obtain the Paystack account's secret key from the dashboard. The plugin uses this to verify purchases, issue refunds, and connect Medusa to Paystack.
Additionally, you need a Medusa server installed and set up with at least @medusajs/medusa^1.5.0
. Follow the quickstart guide to get started.
You also need Medusa Admin installed to enable Paystack as a payment provider. You can alternatively use the REST APIs.
This section guides you over the steps necessary to add Paystack as a payment provider to your Medusa server.
If you don’t have a Medusa server installed yet, you must follow the quickstart guide first.
In the root of your Medusa server, run the following command to install the Paystack plugin:
yarn add medusa-payment-paystack
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`,
options: {
secret_key: "<PAYSTACK_SECRET_KEY>",
},
},
];
This section will guide you through adding Paystack as a payment provider in a region using your Medusa admin dashboard.
This step is required for you to be able to use Paystack as a payment provider in your storefront.
If you don’t have a Medusa admin installed, make sure to follow along with the guide on how to install it before continuing with this section.
You can refer to this documentation in the user guide to learn how to add a payment provider like Paystack to a region.
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.
medusa-payment-paystack
inserts a paystackTxRef
into the PaymentSession
's data.
const { paystackTxRef } = paymentSession.data
Provide this reference when initiating any of the Paystack Accept Payment flows.
For example, when using the Paystack Popup, provide this reference to the initialization method;
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();
}
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.
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.