use Monime\contracts\PaymentAdapterInterface;
use Monime\core\CreateDonationRequest;
use Monime\core\WebhookAdapterInterface;
class CustomMonimeAdapter implements PaymentAdapterInterface, WebhookAdapterInterface
{
public function getAdapterId(): string
{
return 'custom_adapter';
}
public function buildPaymentPayload(array $data): CreateDonationRequest
{
return new CreateDonationRequest(
items: $data['lineItems'],
idempotency_key: $data['idempotency_key'],
reference: $data['reference'],
name: $data['name'],
description: $data['description'],
cancelurl: $data['cancel_url'],
success_url: $data['success_url'],
financialAccountId: $data['financialAccountId'] ?? '',
currency: $data['currency'] ?? 'SLE',
paymentOptions: $data['paymentOptions'] ?? [],
metadata: $data['metadata'] ?? [],
callbackState: $data['callbackState'] ?? ''
);
}
public function handleWebhook(array $payload): void
{
// Read the verified Monime payload here.
// Match the payment reference back to your local record.
// Update the order, donation, invoice, or membership status.
}
}