1. Go to this page and download the library: Download hval/nexi-php 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/ */
hval / nexi-php example snippets
use GuzzleHttp\Client;
use GuzzleHttp\Psr7\HttpFactory as GuzzleFactory;
use Hval\Nexi\Http\HttpFactory;
use Hval\Nexi\NexiClient;
$guzzle = new GuzzleFactory();
$factory = new HttpFactory($guzzle, $guzzle);
$nexi = new NexiClient('your-api-key', NexiClient::ENV_SANDBOX, new Client(), $factory);
use Hval\Nexi\Http\HttpFactory;
use Hval\Nexi\NexiClient;
use Nyholm\Psr7\Factory\Psr17Factory;
use Symfony\Component\HttpClient\Psr18Client;
$psr17 = new Psr17Factory();
$factory = new HttpFactory($psr17, $psr17);
$nexi = new NexiClient('your-api-key', NexiClient::ENV_SANDBOX, new Psr18Client(), $factory);
use Hval\Nexi\Model\Request\Order;
use Hval\Nexi\Model\Request\PaymentSession;
$order = new Order('ORDER-001', '1000', 'EUR'); // 10.00 EUR
$session = new PaymentSession(
PaymentSession::ACTION_PAY,
'1000',
'ita',
'https://yoursite.com/payment/result',
'https://yoursite.com/payment/cancel'
);
$response = $nexi->orders()->createHpp($order, $session);
// Save the securityToken in your DB linked to the order
$_SESSION['nexi_token'] = $response->getSecurityToken();
// Redirect the user
header('Location: ' . $response->getHostedPage());
use Hval\Nexi\Model\Request\Address;
use Hval\Nexi\Model\Request\CustomerInfo;
use Hval\Nexi\Model\Request\Order;
$billing = new Address('Mario Rossi', 'Via Roma 1', 'Milano', '20100', 'ITA');
$customerInfo = new CustomerInfo(
'Mario Rossi',
'[email protected]',
$billing,
null, // shippingAddress
'39', // mobilePhoneCountryCode
'3331234567'
);
$order = new Order('ORDER-001', '1000', 'EUR', null, null, null, $customerInfo);
use Hval\Nexi\Exception\WebhookSignatureException;
$payload = file_get_contents('php://input');
$savedToken = '...'; // retrieved from your DB
try {
$notification = $nexi->webhooks()->handle($payload, $savedToken);
if ($notification->isAuthorized()) {
// Fetch the full order to confirm server-side
$order = $nexi->orders()->find($notification->getOrderId());
if ($order->isAuthorized()) {
// Order confirmed — use $notification->getOperationId() for
// subsequent refund / capture operations
}
}
} catch (WebhookSignatureException $e) {
http_response_code(400);
exit;
}
use Hval\Nexi\Model\Request\CancelRequest;
use Hval\Nexi\Model\Request\CaptureRequest;
use Hval\Nexi\Model\Request\RefundRequest;
$operationId = $notification->getOperationId();
// Partial refund / capture — amount in cents as string, currency >operations()->refund($operationId, new RefundRequest());
$result = $nexi->operations()->capture($operationId, new CaptureRequest());
$result = $nexi->operations()->cancel($operationId, new CancelRequest());
// Optionally pass your own idempotency key to make retries safe.
// If omitted, a UUID is generated automatically.
$result = $nexi->operations()->refund($operationId, new RefundRequest('1000', 'EUR'), 'your-uuid-v4');
// List orders — all parameters are optional
$orders = $nexi->orders()->findAll(
'2024-01-01T00:00:00.000Z', // fromTime (ISO 8601)
'2024-01-31T23:59:59.000Z', // toTime (ISO 8601, max 30-day range)
50, // maxRecords (default 20, max 500)
'promo2024' // customField
);
foreach ($orders as $order) { // array<int, OrderSummary>
$order->getOrderId(); // ?string
$order->getAmount(); // ?string
$order->getLastOperationType(); // ?string
}
// List operations — filter by channel or type
$operations = $nexi->operations()->findAll(
fromTime: null,
toTime: null,
maxRecords: null,
channel: 'ECOMMERCE', // ECOMMERCE, POS, BACKOFFICE
operationType: 'AUTHORIZATION'
);
// Retrieve a single operation
$operation = $nexi->operations()->find('operation-id');
$operation->getOperationResult(); // ?string
$operation->getWarnings(); // array
use Hval\Nexi\Model\Request\Order;
use Hval\Nexi\Model\Request\PaymentSession;
$order = new Order('ORDER-001', '1000', 'EUR');
$session = new PaymentSession(
PaymentSession::ACTION_PAY,
'1000',
'ita',
'https://yoursite.com/payment/result',
'https://yoursite.com/payment/cancel'
);
// expirationDate is
// Cancel an active link
$nexi->payByLink()->cancel($link->getLinkId());
// Retrieve all contracts for a customer
$response = $nexi->contracts()->findByCustomer('customer-id');
$response->getCustomerId(); // ?string
foreach ($response->getContracts() as $contract) { // array<int, ContractSummary>
$contract->getContractId(); // ?string
$contract->getContractType(); // MIT_UNSCHEDULED, MIT_SCHEDULED, CIT
$contract->getPaymentCircuit(); // ?string
$contract->getPaymentInstrumentInfo(); // ?string
}
// Deactivate a contract
$nexi->contracts()->deactivate('contract-id');
use Hval\Nexi\Model\Request\PaymentSession;
use Hval\Nexi\Model\Request\Recurrence;
$recurrence = new Recurrence(
Recurrence::ACTION_CONTRACT_CREATION,
null,
Recurrence::CONTRACT_TYPE_MIT_SCHEDULED
);
$session = new PaymentSession(
PaymentSession::ACTION_PAY,
'1000',
'ita',
'https://yoursite.com/payment/result',
'https://yoursite.com/payment/cancel',
null,
null,
null,
null,
$recurrence
);
bash
composer
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.