leopaulo88 / asaas-sdk-laravel
Laravel SDK for Asaas payment gateway integration
Fund package maintenance!
huboo-ai
Requires
- php: ^8.1
- illuminate/contracts: ^10.0||^11.0||^12.0
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- larastan/larastan: ^2.9||^3.0
- laravel/pint: ^1.14
- nunomaduro/collision: ^8.1.1||^7.10.0
- orchestra/testbench: ^10.0.0||^9.0.0||^8.22.0
- pestphp/pest: ^3.0
- pestphp/pest-plugin-arch: ^3.0
- pestphp/pest-plugin-laravel: ^3.0
- phpstan/extension-installer: ^1.3||^2.0
- phpstan/phpstan-deprecation-rules: ^1.1||^2.0
- phpstan/phpstan-phpunit: ^1.3||^2.0
- dev-main
- v0.5.2
- v0.5.1
- v0.5.0
- V0.4.4
- v0.4.3
- v0.4.2
- v0.4.1
- v0.4.0
- v0.3.1-beta
- v0.3.0-beta
- v0.2.0-alpha
- v0.1.0-alpha
- dev-feature/fix-create-collection
- dev-feature/pix-create-key
- dev-fix/enum-responses
- dev-fix/webhook-subaccount
- dev-feature/my-account
- dev-feature/finance
- dev-fix/transfer_response_type
- dev-minimum-stability
- dev-fix/error-when-splitting-installments
- dev-feature/get-pix-qr-code
- dev-feature/transfer
- dev-feature/installments
- dev-fix/phpstan-errors
This package is auto-updated.
Last update: 2025-09-07 12:33:43 UTC
README
A comprehensive Laravel SDK for integrating with the Asaas payment platform. This package provides a clean, fluent interface for managing customers, payments, subscriptions, transfers, webhooks, and more.
Features
- ๐ฏ Complete API Coverage - Support for all major Asaas API endpoints
- ๐ Webhook Management - Full webhook configuration and event handling
- ๐ณ Payment Processing - PIX, Boleto, Credit Card payments with installments
- ๐ Subscription Management - Recurring payment subscriptions
- ๐ธ Transfer Operations - PIX and TED transfers between accounts
- ๐ฅ Customer Management - Complete customer lifecycle management
- ๐ฆ Account Operations - Account information and sub-account creation
- ๐ Secure Tokenization - PCI-compliant credit card tokenization
- ๐ Financial Reports - Balance and transaction statistics
- โก Fluent Interface - Elegant, readable code with method chaining
- ๐ก๏ธ Type Safety - Comprehensive entity validation
- ๐งช Well Tested - Extensive test coverage with Pest PHP
Installation
You can install the package via Composer:
composer require leopaulo88/asaas-sdk-laravel
Publish the configuration file:
php artisan vendor:publish --tag="asaas-config"
Add your Asaas credentials to your .env
file:
ASAAS_API_KEY=your_api_key_here ASAAS_ENVIRONMENT=sandbox # or 'production'
Quick Start
Basic Payment Creation
use Leopaulo88\Asaas\Facades\Asaas; // Create a customer $customer = Asaas::customers()->create([ 'name' => 'John Doe', 'email' => 'john@example.com', 'cpfCnpj' => '12345678901' ]); // Create a PIX payment $payment = Asaas::payments()->create([ 'customer' => $customer->id, 'billingType' => 'PIX', 'value' => 100.00, 'dueDate' => '2025-02-15', 'description' => 'Product purchase' ]); // Get PIX QR Code $pixQrCode = Asaas::payments()->pixQrCode($payment->id); echo "QR Code: {$pixQrCode->encodedImage}";
Webhook Configuration
// Create a webhook to receive payment notifications $webhook = Asaas::webhooks()->create([ 'name' => 'Payment Notifications', 'url' => 'https://myapp.com/webhooks/asaas', 'email' => 'admin@myapp.com', 'enabled' => true, 'sendType' => 'SEQUENTIALLY', 'events' => [ 'PAYMENT_CREATED', 'PAYMENT_CONFIRMED', 'PAYMENT_RECEIVED' ] ]);
Subscription Management
// Create a monthly subscription $subscription = Asaas::subscriptions()->create([ 'customer' => $customer->id, 'billingType' => 'CREDIT_CARD', 'value' => 29.90, 'nextDueDate' => '2025-02-01', 'cycle' => 'MONTHLY', 'description' => 'Premium Plan' ]);
Available Resources
Customer Management
// Create customers $customer = Asaas::customers()->create($data); // List customers with filters $customers = Asaas::customers()->list(['name' => 'John']); // Update customer $customer = Asaas::customers()->update($customerId, $data); // Find specific customer $customer = Asaas::customers()->find($customerId);
Payment Processing
// Create payments (PIX, Boleto, Credit Card) $payment = Asaas::payments()->create($data); // Get payment information $payment = Asaas::payments()->find($paymentId); // Process refunds $refund = Asaas::payments()->refund($paymentId, $amount); // Capture authorized payments $payment = Asaas::payments()->capture($paymentId);
Transfer Operations
// PIX transfer $transfer = Asaas::transfers()->create([ 'value' => 500.00, 'pixAddressKey' => '11999999999', 'pixAddressKeyType' => 'PHONE', 'description' => 'PIX transfer' ]); // Bank transfer (TED) $transfer = Asaas::transfers()->create([ 'value' => 1000.00, 'bankAccount' => [ 'bank' => ['code' => '033'], 'accountName' => 'John Doe', 'ownerName' => 'John Doe', 'cpfCnpj' => '12345678901', 'agency' => '1234', 'account' => '56789-0' ], 'operationType' => 'TED' ]);
Webhook Management
// Create webhook $webhook = Asaas::webhooks()->create($data); // List webhooks $webhooks = Asaas::webhooks()->list(); // Update webhook $webhook = Asaas::webhooks()->update($webhookId, $data); // Remove webhook Asaas::webhooks()->remove($webhookId);
Account Operations
// Get account information $account = Asaas::accounts()->info(); // Create sub-account with webhooks $account = Asaas::accounts()->create([ 'name' => 'Sub Account', 'email' => 'sub@example.com', 'cpfCnpj' => '12345678901', 'webhooks' => [$webhookConfig] ]);
Credit Card Tokenization
// Tokenize credit card for secure storage $token = Asaas::creditCards()->tokenize([ 'customer' => $customerId, 'creditCard' => [ 'holderName' => 'John Doe', 'number' => '4111111111111111', 'expiryMonth' => '12', 'expiryYear' => '2028', 'ccv' => '123' ] ]); // Use token in payments $payment = Asaas::payments()->create([ 'customer' => $customerId, 'billingType' => 'CREDIT_CARD', 'value' => 150.00, 'creditCardToken' => $token->creditCardToken ]);
Financial Information
// Get account balance $balance = Asaas::finance()->balance(); // Get payment statistics $stats = Asaas::finance()->statistics(); // Get split statistics $splitStats = Asaas::finance()->splitStatistics();
Entity-Based Approach
The SDK supports both array-based and entity-based approaches for type safety and better IDE support:
use Leopaulo88\Asaas\Entities\Payment\PaymentCreate;use Leopaulo88\Asaas\Entities\Webhook\WebhookCreate; // Using entities with fluent interface $payment = PaymentCreate::make() ->customer('cus_123456') ->billingType('PIX') ->value(100.00) ->dueDate('2025-02-15') ->description('Product purchase'); $result = Asaas::payments()->create($payment); // WebhookCreate entity $webhook = (new WebhookCreate) ->name('Payment WebhookCreate') ->url('https://myapp.com/webhook') ->enabled(true) ->sendType('SEQUENTIALLY') ->events(['PAYMENT_CONFIRMED', 'PAYMENT_RECEIVED']);
Environment Configuration
The package supports both sandbox and production environments:
// Use specific environment $payment = Asaas::withApiKey($apiKey, 'production') ->payments() ->create($data); // Multiple tenants/accounts $payment = Asaas::withApiKey($tenant->api_key) ->payments() ->create($data);
Event Handling
Available Webhook Events
Payment Events
PAYMENT_CREATED
- Payment was createdPAYMENT_CONFIRMED
- Payment was confirmedPAYMENT_RECEIVED
- Payment was receivedPAYMENT_OVERDUE
- Payment is overduePAYMENT_REFUNDED
- Payment was refunded
Subscription Events
SUBSCRIPTION_CREATED
- Subscription was createdSUBSCRIPTION_UPDATED
- Subscription was updatedSUBSCRIPTION_DELETED
- Subscription was deleted
Transfer Events
TRANSFER_CREATED
- Transfer was createdTRANSFER_DONE
- Transfer was completedTRANSFER_FAILED
- Transfer failed
Webhook Implementation Example
// In your webhook controller public function handle(Request $request) { $payload = $request->json()->all(); $event = $payload['event']; switch ($event) { case 'PAYMENT_CONFIRMED': $this->handlePaymentConfirmed($payload['payment']); break; case 'SUBSCRIPTION_CREATED': $this->handleSubscriptionCreated($payload['subscription']); break; } return response('OK', 200); }
Error Handling
The SDK provides comprehensive error handling:
use Leopaulo88\Asaas\Exceptions\{ BadRequestException, UnauthorizedException, NotFoundException }; try { $payment = Asaas::payments()->create($data); } catch (BadRequestException $e) { // Validation errors $errors = $e->getErrors(); foreach ($errors as $field => $messages) { echo "Field {$field}: " . implode(', ', $messages); } } catch (UnauthorizedException $e) { // Invalid API key echo "Authentication failed: " . $e->getMessage(); } catch (NotFoundException $e) { // Resource not found echo "Resource not found: " . $e->getMessage(); }
Testing
Run the test suite:
./vendor/bin/pest
Documentation
Comprehensive documentation is available in the docs/
directory:
- Customer Management
- Payment Processing
- Subscription Management
- Transfer Operations
- Webhook Configuration
- Account Management
- Credit Card Tokenization
- Entity Reference
- Error Handling
Contributing
Please see CONTRIBUTING for details on how to contribute to this project.
Security
If you discover any security-related issues, please email the maintainer instead of using the issue tracker.
License
This package is open-sourced software licensed under the MIT license.
Support
- ๐ Official Asaas API Documentation
- ๐ Report Issues
- ๐ฌ Discussions
Changelog
Please see CHANGELOG for more information on what has changed recently.
Made with โค๏ธ for the Laravel community