1. Go to this page and download the library: Download as2aas/php-client library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
as2aas / php-client example snippets
use AS2aaS\Client;
// Initialize the client (environment auto-detected from API key)
$as2 = new Client('pk_live_your_api_key'); // Production environment
// $as2 = new Client('pk_test_your_api_key'); // Test environment
// Get a trading partner
$partner = $as2->partners()->getByAs2Id('MCKESSON');
// Send a message
$message = $as2->messages()->send(
$partner,
file_get_contents('purchase-order.edi'),
'Purchase Order #PO-2024-001'
);
echo "Message sent! Status: " . $message->getStatus();
// Using Facade
use AS2aaS\Laravel\Facades\AS2;
$partner = AS2::partners()->getByAs2Id('MCKESSON');
$message = AS2::messages()->send($partner, $content, 'Purchase Order');
// Using Dependency Injection
use AS2aaS\Client;
class OrderController extends Controller
{
public function sendOrder(Client $as2)
{
$partner = $as2->partners()->getByAs2Id('MCKESSON');
$message = $as2->messages()->send($partner, $ediContent, 'Purchase Order');
return response()->json(['message_id' => $message->getId()]);
}
}
use AS2aaS\Client;
$as2 = new Client([
'apiKey' => 'pk_live_your_api_key',
'timeout' => 30000,
'retries' => 3,
'defaultMdnMode' => 'async',
'defaultSigning' => true,
'defaultEncryption' => true,
]);
// API endpoint: https://api.as2aas.com/v1
// Test vs Live environment auto-detected by API from your key type
use AS2aaS\Client;
// Create mock client (no API calls)
$mockAs2 = Client::createMock();
// Mock client has same interface as real client
$partner = $mockAs2->partners()->create([
'name' => 'Test Partner',
'as2_id' => 'TEST-PARTNER',
'url' => 'https://test.example.com/as2'
]);
$message = $mockAs2->messages()->send($partner, 'test content', 'Test Subject');
echo $message->getStatus(); // 'delivered' (simulated)
// Access mock data for assertions
$mockData = $mockAs2->getMockData();
$this->assertCount(1, $mockData->partners);
// Use test environment with test API key (API auto-detects from key)
$as2 = new Client('pk_test_your_key');
// Or use the createTest helper for clarity
$as2 = Client::createTest('pk_test_your_key');
// Sandbox operations for testing
$info = $as2->sandbox()->getInfo();
$samples = $as2->sandbox()->getSample('edi-850');
// Send test messages to verify partner setup
$testResult = $as2->messages()->sendTest($partner, [
'messageType' => 'sample_edi'
]);
// In your Laravel tests
use AS2aaS\Client;
use AS2aaS\Testing\MockClient;
class OrderTest extends TestCase
{
public function test_can_send_order()
{
// Bind mock client
$this->app->singleton(Client::class, function () {
return Client::createMock();
});
// Your test code
$response = $this->post('/orders/send', ['partner_id' => 'MCKESSON']);
$response->assertStatus(200);
}
}
// Validate EDI
$result = $as2->utils()->validateEDI($ediContent);
// Detect content type
$contentType = $as2->utils()->detectContentType($content, 'invoice.edi');
// Format file size
echo $as2->utils()->formatFileSize(1048576); // "1.0 MB"
// Generate AS2 ID
$as2Id = $as2->utils()->generateAs2Id('Acme Corporation'); // "ACME-CORP-AS2"
// Using dependency injection
use AS2aaS\Client;
class OrderController extends Controller
{
public function sendOrder(Client $as2)
{
$partner = $as2->partners()->getByAs2Id('MCKESSON');
$message = $as2->messages()->send($partner, $ediContent, 'Purchase Order');
return response()->json(['message_id' => $message->getId()]);
}
}
// Using facade
use AS2aaS\Laravel\Facades\AS2;
$partner = AS2::partners()->getByAs2Id('MCKESSON');
$message = AS2::messages()->send($partner, $content, $subject);
// Using service container
$as2 = app('as2aas');
$partners = $as2->partners()->list();
// routes/web.php
Route::post('/webhooks/as2', [WebhookController::class, 'handle']);
// WebhookController.php
use AS2aaS\Laravel\Facades\AS2;
class WebhookController extends Controller
{
public function handle(Request $request)
{
$signature = $request->header('X-Signature');
$payload = $request->getContent();
if (!AS2::webhooks()->verifySignature($payload, $signature, config('as2aas.webhooks.secret'))) {
abort(401, 'Invalid signature');
}
$event = json_decode($payload, true);
AS2::webhooks()->handleEvent($event, [
'message.delivered' => function($data) {
// Update order status
Order::where('as2_message_id', $data['id'])->update(['status' => 'delivered']);
},
'message.failed' => function($data) {
// Send notification
Mail::to('[email protected]')->send(new MessageFailedMail($data));
}
]);
return response('OK');
}
}