flexonexus / laravel-tap-payments
Laravel integration for Tap Payments (charges, refunds, webhooks).
Package info
github.com/flexonexus/laravel-tap-payments
pkg:composer/flexonexus/laravel-tap-payments
Requires
- php: ^8.1
- guzzlehttp/guzzle: ^7.8|^8.0
Requires (Dev)
- orchestra/testbench: ^9.0|^8.0
- phpunit/phpunit: ^10.5|^11.0
README
๐ Elegant Laravel integration with Tap Payments: charges, refunds, webhooks โ the clean Laravel way.
โจ Features
- ๐ Simple Facade API:
Tap::createCharge(),Tap::refundCharge(), etc. - โ๏ธ Configurable via
.env(TAP_SECRET_KEY,TAP_MODE, etc.) - ๐ Built-in Webhook signature verification
- ๐ฆ PSR-4 autoload & Laravel auto-discovery
- ๐งช Testbench support for easy unit testing
๐ฆ Installation & Setup
Follow these steps to fully install and configure the package:
1. Install via Composer
composer require flexonexus/laravel-tap-payments
2. Publish the Config File
php artisan vendor:publish --tag=tap-config
This will create:
config/tap.php
3. Add Environment Variables
In your .env file:
TAP_MERCHANT_ID=your_merchant_id_here # Your Merchant ID TAP_SECRET_KEY=sk_test_xxx # Your Tap secret key TAP_PUBLIC_KEY=pk_test_xxx # Your Tap public key TAP_WEBHOOK_SECRET=whsec_xxx # Webhook secret for signature verification TAP_MODE=sandbox # sandbox | live
4. Configure Webhook URL
Set the webhook endpoint in your Tap dashboard:
https://your-domain.com/tap/webhook
The package already registers this route automatically.
5. Clear Cached Configs
If your app uses config caching, run:
php artisan config:clear
6. Test the Integration
Use the Facade to create a test charge:
use Tap; $charge = Tap::createCharge([ 'amount' => 50, 'currency' => 'USD', 'customer' => [ 'first_name' => 'Test', 'email' => 'test@example.com', 'phone' => ['country_code' => '966', 'number' => '500000000'], ], 'merchant' => ['id' => config('tap.merchant_id')], 'source' => ['id' => 'src_all'], 'redirect' => ['url' => route('checkout.callback')], 'description' => 'Order #1001', // ...any other Tap fields you need ]); dd($charge);
If you see a JSON response with a charge_id, ๐ the package is working.
๐ Usage Examples
Create a Charge
$charge = Tap::createCharge([ 'amount' => 50, 'currency' => 'USD', 'customer' => [ 'first_name' => 'Mohamed', 'email' => 'mohamed@example.com', 'phone' => ['country_code' => '966', 'number' => '500000000'], ], 'merchant' => ['id' => config('tap.merchant_id')], 'source' => ['id' => 'src_all'], 'redirect' => ['url' => route('checkout.callback')], 'description' => 'Order #1234', // ...any other Tap fields you need ]);
Retrieve a Charge
$charge = Tap::retrieveCharge($charge['id']);
Refund a Charge
$refund = Tap::refundCharge($charge['id'], [ 'amount' => 50, 'reason' => 'customer_request' ]);
๐ Webhooks
- The package registers
/tap/webhookautomatically. - All requests are verified with
TAP_WEBHOOK_SECRET.
Example: Listen for events
Event::listen('tap::charge.succeeded', function ($payload) { // Update your order, mark it as paid });
๐งช Testing
composer test
This uses PHPUnit with Orchestra Testbench.
๐ค Contributing
PRs are welcome!
Please run composer test before submitting.
๐ก Credits
- Built with โค๏ธ by Flexo Nexus
- Tap Payments API โ https://www.tap.company