zahidaramai/laravel-myinvois-middleware
Composer 安装命令:
composer require zahidaramai/laravel-myinvois-middleware
包简介
Laravel client SDK for the MyInvois Middleware Gateway (MyInvois API 1.0). Provides clean PHP integration layer for submitting e-invoices, sessions, submissions, status polling, and TIN validation via Zahid Aramai's MyInvois Middleware.
README 文档
README
Laravel client SDK for the MyInvois Middleware Gateway (MyInvois API 1.0). Provides a clean PHP integration layer for submitting e-invoices, managing sessions, tracking submissions, polling status, and validating TINs via Zahid Aramai's MyInvois Middleware.
Features
- Simple and intuitive API for MyInvois operations
- Facade and dependency injection support
- Configurable via environment variables
- Zero business logic duplication - purely a middleware client
- Full support for Laravel 10 and 11
- Auto-discovery ready
Requirements
- PHP 8.1 or higher
- Laravel 10.x or 11.x
- Guzzle HTTP 7.x
Installation
Install the package via Composer:
composer require zahidaramai/laravel-myinvois-middleware
The package will auto-register its service provider and facade.
Publish Configuration
Publish the configuration file:
php artisan vendor:publish --tag=myinvois-config
This will create a config/myinvois.php file in your application.
Configuration
Add the following environment variables to your .env file:
MYINVOIS_MIDDLEWARE_BASE_URL=https://your-middleware-server.com MYINVOIS_MIDDLEWARE_API_KEY=your-api-key-here MYINVOIS_MIDDLEWARE_TIMEOUT=30 MYINVOIS_MIDDLEWARE_CONNECT_TIMEOUT=10 MYINVOIS_MIDDLEWARE_VERIFY_SSL=true
Configuration Options
| Variable | Description | Default |
|---|---|---|
MYINVOIS_MIDDLEWARE_BASE_URL |
Base URL of your MyInvois Middleware Gateway | http://localhost:8000 |
MYINVOIS_MIDDLEWARE_API_KEY |
API key for authentication | null |
MYINVOIS_MIDDLEWARE_TIMEOUT |
Request timeout in seconds | 30 |
MYINVOIS_MIDDLEWARE_CONNECT_TIMEOUT |
Connection timeout in seconds | 10 |
MYINVOIS_MIDDLEWARE_VERIFY_SSL |
Verify SSL certificates | true |
Usage
Using the Facade
use ZahidAramai\MyInvoisMiddleware\Facades\MyInvois; // Create a session $session = MyInvois::createSession(); // Submit documents (e-invoices) $documents = [ [ 'type' => 'invoice', 'data' => [ 'invoiceNumber' => 'INV-001', 'amount' => 1000.00, // ... other invoice fields ], ], ]; $submission = MyInvois::submitDocuments($documents); // Get submission status $status = MyInvois::getSubmission($submission['submission_id']); // Validate a TIN $validation = MyInvois::validateTin( tin: 'C12345678901', idType: 'BRN', idValue: '202001012345' ); // Get all submissions with filters $submissions = MyInvois::getSubmissions([ 'status' => 'completed', 'page' => 1, ]); // Cancel a document $result = MyInvois::cancelDocument('document-uuid', 'Customer requested cancellation');
Using Dependency Injection
use ZahidAramai\MyInvoisMiddleware\MyInvoisClient; class InvoiceController extends Controller { public function __construct( protected MyInvoisClient $myInvois ) {} public function submit(Request $request) { $documents = $this->prepareDocuments($request); $result = $this->myInvois->submitDocuments($documents); return response()->json([ 'submission_id' => $result['submission_id'], 'status' => $result['status'], ]); } public function status(string $submissionId) { $status = $this->myInvois->getSubmission($submissionId); return response()->json($status); } }
Available Methods
| Method | Description |
|---|---|
createSession(array $params = []) |
Create a new session with the middleware |
submitDocuments(array $documents, array $options = []) |
Submit e-invoices for processing |
getSubmission(string $submissionId, array $queryParams = []) |
Get status of a specific submission |
getSubmissions(array $filters = []) |
List submissions with optional filters |
validateTin(string $tin, string $idType, string $idValue) |
Validate a Tax Identification Number |
getDocument(string $submissionId, string $documentId) |
Get a specific document details |
cancelDocument(string $documentId, string $reason) |
Cancel a submitted document |
getHttpClient() |
Get the underlying Guzzle HTTP client |
Error Handling
The client throws Guzzle exceptions for HTTP errors. Handle them appropriately:
use GuzzleHttp\Exception\ClientException; use GuzzleHttp\Exception\ServerException; use ZahidAramai\MyInvoisMiddleware\Facades\MyInvois; try { $result = MyInvois::submitDocuments($documents); } catch (ClientException $e) { // 4xx errors - client-side issue $response = $e->getResponse(); $body = json_decode($response->getBody()->getContents(), true); Log::error('MyInvois client error', [ 'status' => $response->getStatusCode(), 'body' => $body, ]); } catch (ServerException $e) { // 5xx errors - server-side issue Log::error('MyInvois server error', [ 'message' => $e->getMessage(), ]); }
Testing
Run the test suite:
composer test
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Security
If you discover any security-related issues, please email zahid@aramai.com instead of using the issue tracker.
Credits
License
The MIT License (MIT). Please see License File for more information.
zahidaramai/laravel-myinvois-middleware 适用场景与选型建议
zahidaramai/laravel-myinvois-middleware 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 0 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 12 月 27 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「sdk」 「middleware」 「laravel」 「Malaysia」 「E-Invoice」 「lhdn」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 zahidaramai/laravel-myinvois-middleware 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 zahidaramai/laravel-myinvois-middleware 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 zahidaramai/laravel-myinvois-middleware 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Shoot aims to make providing data to your templates more manageable
Slim Framework 3 CSRF protection middleware utilities
Cloudflare Middleware For Guzzle
PSR-15 middleware to handle CSRF-token verification
A simple HTTP application builder using PSR-15 HTTP Server Request Handler and Middleware.
Alfabank REST API integration
统计信息
- 总下载量: 0
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 36
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-12-27