Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 13 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ This project adheres to [Semantic Versioning](https://semver.org/).

The entries below cover every release since the last tag, **v3.0.10**.

## [Unreleased]
## [3.1.0] - 2026-09-29

Every payment-verification path now confirms, from Paystack's verify response,
that the transaction actually settles the order before the order is advanced
Expand Down Expand Up @@ -60,8 +60,18 @@ what was requested.
`ObserverBeforeSalesOrderPlace` would have caused a duplicate email (the
unsuppressed placement email, plus a new post-payment one); both are
registered together.

### Security
- **`Controller/Payment/Setup.php` no longer leaks internal gateway detail to
the customer.** A Paystack API failure during the redirect/standard
checkout flow showed the raw exception message — built from `curl_error()`
and Paystack's raw response body, which can carry internal hostnames, TLS
detail, or gateway-side state — directly on the storefront failure page.
The same leak class was already closed on the redirect callback route; this
was the one place it was missed. The customer now gets a fixed, safe
message; the raw detail goes to the log and order history (admin-only).
Also closes a gap where only `ApiException` was caught — any other
exception this route can throw (a missing store URL, a malformed Paystack
response, an order-save failure) now gets the same safe handling instead of
escaping uncaught.
- **A single Paystack reference can no longer settle two different orders
(D7, narrowed to a race window — not fully closed; see the reconciliation
plan's Risks section).** All three verification paths now bind the
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

Paystack payment gateway extension for Magento 2

**Version:** 3.0.11 (Paystack v2 Inline.js API)
**Version:** 3.1.0 (Paystack v2 Inline.js API)

## Requirements

Expand Down
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "pstk/paystack-magento2-module",
"description": "Paystack Magento2 Module using \\Magento\\Payment\\Model\\Method\\AbstractMethod",
"version": "3.0.11",
"version": "3.1.0",
"require": {},
"type": "magento2-module",
"license": [
Expand Down
2 changes: 1 addition & 1 deletion etc/module.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="Pstk_Paystack" setup_version="3.0.11">
<module name="Pstk_Paystack" setup_version="3.1.0">
<sequence>
<module name="Magento_Sales"/>
<module name="Magento_Payment"/>
Expand Down
Loading