shipu/bkash
shipu/bkash is a Laravel package for integrating bKash, Bangladesh's popular mobile financial service, into PHP applications. It streamlines tokenized checkout, payment creation and execution, status queries, and refunds through a clean, configurable API.
Architecture fit
The package operates as a standard Laravel integration layer — service provider, facade, publishable config — wrapping the upstream Apiz API tooling. v2.0.0 realigns it to two moving targets at once: a Laravel framework floor of 8.0+ and Apiz v4. Architecturally that is a good fit for a modernized estate already on Laravel 8+, Composer 2, and package auto-discovery. It is an explicit non-fit for applications still on Laravel 6/7 (both EOL), which are now pushed onto a frozen v1.x line. Net: fit is good, but the package's supported envelope has narrowed on the bottom end without any stated ceiling — it is unclear whether Laravel 9/10/11 are validated or merely "not excluded."
Integration feasibility
Moderate, and the effort is asymmetric. The Laravel 8.0+ bump is typically low-effort if the app is already on 8+ — mostly a Composer constraint change. The Apiz v3 → v4 upgrade is the real work and is where the release note tells us nothing. Expect at minimum: namespace/class renames, config key changes, altered method signatures, possible HTTP client (Guzzle) major change, and possibly changed response/exception contracts. Feasible, but currently unscoped — we would be discovering the blast radius through test failures rather than a migration guide.
Technical risk High for a major-version release carrying a one-line changelog. Primary risks:
^3, this is a hard Composer blocker.Key questions (to resolve before approval)
4.x) or ranged (^4.0)? Does the package tolerate Apiz v3 at all?Stack fit Drop-in via Composer for Laravel 8+. Standard provider/facade/config-publish shape means no bespoke wiring. Fits cleanly provided the application does not already depend on Apiz through a second package. If Apiz is consumed directly elsewhere in the codebase, treat the two upgrades as one coordinated change.
Migration path Pin-and-park, then stage:
composer why apiz/*, composer outdated, identify direct and transitive Apiz dependents; snapshot the current lockfile and tag a known-good build.^2.0 and Apiz to ^4.0, run composer update --with-dependencies in isolation to surface resolution conflicts before any code changes.Compatibility
Validate three axes together — PHP version, Laravel version, Apiz version. Inferring support from "8.0+" is not acceptable for a major bump; get the matrix confirmed in writing. Check that no other dependency forces a split between Apiz ^3 and ^4.
Sequencing (1) obtain matrix + upgrade guide from maintainer → (2) bring application to Laravel 8+ and target PHP → (3) upgrade Apiz to v4 at the application layer if used directly → (4) bump this package → (5) regression and contract testing → (6) canary/feature-flagged rollout → (7) retire v1.x pins. Steps 2 and 3 must land before 4; attempting them together makes failures unattributable.
Maintenance Two supported lines now exist. If v1.x stops receiving fixes, any application pinned there is on an unsupported path and needs a dated exit plan. The thin changelog raises ongoing cost: every future upgrade requires source-diffing. Watch whether 2.0.x patch releases follow promptly — that is the real signal of maintainer health.
Support Support for this package is partly support for Apiz v4, since it is now a hard dependency. Verify advisory process and maintainer responsiveness. Internally, assign a single owner for the Apiz integration surface; split ownership across teams is the usual cause of version-skew incidents.
Scaling Package overhead is negligible. Scaling concerns shift to Apiz v4 itself: rate limits, timeouts, retry/backoff policy, HTTP connection reuse, and whether calls are synchronous in request paths or offloaded to queues. Confirm timeout and retry settings are configurable and sane before high-volume traffic.
Failure modes
catch blocks.Ramp-up Low for engineers familiar with Laravel packages: roughly half a day to a day for the constraint bump and config reconciliation. Budget one to two sprints for a clean Apiz v3→v4 migration including regression coverage, scaling with how much of the Apiz surface is actually consumed. Add contingency where test coverage is thin, since the undocumented breaking changes will be found at runtime otherwise.
Recommendation: Approve for applications already on Laravel 8+ and Apiz v4; block for Laravel 6/7 estates pending a dated migration plan. Gate the upgrade on delivery of the version matrix and an upgrade guide — the release note as published is insufficient to schedule work against.
How can I help you explore Laravel packages today?