Accetta pagamenti con carta di credito utilizzando il gateway di pagamento Authorize.Net in PHP
Vuoi integrare un’opzione di pagamento con carta di credito sul tuo sito web? Se sì, Authorize.Net è una buona scelta per te. Fondato nel 1996, questo è uno dei gateway di pagamento più diffusi su Internet.
Per un negozio online, le carte di credito sono ampiamente utilizzate per accettare pagamenti. I clienti preferiscono pagare tramite carte di credito per acquistare prodotti online. Nel tuo negozio, devi dare l’opzione per il pagamento con carta di credito. In questo articolo ti mostro come integrare il gateway di pagamento Authorize.Net che ti permetterà di ricevere il pagamento con carta di credito.
Ogni volta che aggiungiamo gateway di pagamento, dobbiamo prima testare le transazioni in modalità sandbox. Una volta che i pagamenti di prova funzionano correttamente, puoi passare alla versione live.
Per iniziare con Authorize.Net, crea prima un account sandbox. Al momento della creazione dell’account, copia l’ID di accesso e la chiave della transazione. Puoi ottenere queste chiavi API da Account->Credenziali e chiavi API. Si prega di fare riferimento allo screenshot qui sotto.
Nella pagina successiva, otterrai il tuo "ID di accesso API". Crea una chiave di transazione dalla sezione "Crea nuova chiave/e" come mostrato nello screenshot qui sotto.
Iniziare
Per integrare Authorize.Net, utilizzeremo la libreria Omnipay che fornisce un modo semplice e pulito per l’integrazione dei pagamenti. Installa la libreria Omnipay nel tuo progetto utilizzando il comando:
composer require league/omnipay:^3
Installerà la libreria Omnipay. Inoltre, ci viene richiesto di installare il pacchetto Omnipay per Authorize.Net. Questo pacchetto ci consente di acquisire il pagamento tramite il gateway di pagamento Authorize.Net. Maggiori informazioni su questo pacchetto nella loro documentazione. Esegui il comando seguente per installare questo pacchetto:
composer require "academe/omnipay-authorizenetapi: ~3.0"
Siamo pronti con le librerie supportate. Ora creiamo un semplice modulo per inserire l’importo e i dettagli della carta. Sto creando un index.php
file e aggiungo il codice HTML sottostante.
<form action="charge.php" method="post">
<input type="text" name="amount" placeholder="Enter Amount" />
<input type="text" name="cc_number" placeholder="Card Number" />
<input type="text" name="expiry_month" placeholder="Month" />
<input type="text" name="expiry_year" placeholder="Year" />
<input type="text" name="cvv" placeholder="CVV" />
<input type="submit" name="submit" value="Submit" />
</form>
Quando accettiamo il pagamento online, dobbiamo memorizzare i dettagli della transazione nel database. Quindi, per memorizzare le informazioni sulla transazione, creare una tabella "pagamenti" nel database utilizzando la query seguente.
CREATE TABLE `payments` ( `id` int(11) NOT NULL AUTO_INCREMENT,
`transaction_id` varchar(255) NOT NULL,
`amount` float(10,2) NOT NULL,
`currency` varchar(255) NOT NULL,
`payment_status` varchar(255) NOT NULL,
`captured_at` datetime NOT NULL DEFAULT current_timestamp(),
PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Accetta il pagamento con carta di credito utilizzando Authorize.Net
Hai copiato le chiavi API del tuo account Authorize.Net nei passaggi precedenti. È ora di aggiungere queste chiavi al codice PHP. Memorizza queste credenziali nel config.php
file. Sto anche aggiungendo la connessione al database a questo file.
config.php
<?php
require_once "vendor/autoload.php";
// Connect with the database
$db = new mysqli('localhost', 'MYSQL_DB_USERNAME', 'MYSQL_DB_PASSWORD', 'MYSQL_DB_NAME');
if ($db->connect_errno) {
die("Connect failed: ". $db->connect_error);
}
$gateway = OmnipayOmnipay::create('AuthorizeNetApi_Api');
$gateway->setAuthName('PASTE_ANET_API_LOGIN_ID');
$gateway->setTransactionKey('PASTE_ANET_TRANSACTION_KEY');
$gateway->setTestMode(true); //comment this line when move to 'live'
Sostituisci i segnaposto con i valori effettivi. Mentre stiamo testando i pagamenti sulla sandbox, sono passato fedele al metodo setTestMode
. Quando sei pronto per passare alla produzione, rimuovi/commenta questa riga.
Nel modulo che abbiamo creato sopra, ho impostato charge.php
come URL dell’azione. Significa che il codice effettivo che cattura il pagamento con carta di credito andrà all’interno di questo file.
charge.php
<?php
require_once "config.php";
if (isset($_POST['submit'])) {
try {
$creditCard = new OmnipayCommonCreditCard([
'number' => $_POST['cc_number'],
'expiryMonth' => $_POST['expiry_month'],
'expiryYear' => $_POST['expiry_year'],
'cvv' => $_POST['cvv'],
]);
// Generate a unique merchant site transaction ID.
$transactionId = rand(100000000, 999999999);
$response = $gateway->authorize([
'amount' => $_POST['amount'],
'currency' => 'USD',
'transactionId' => $transactionId,
'card' => $creditCard,
])->send();
if($response->isSuccessful()) {
// Captured from the authorization response.
$transactionReference = $response->getTransactionReference();
$response = $gateway->capture([
'amount' => $_POST['amount'],
'currency' => 'USD',
'transactionReference' => $transactionReference,
])->send();
$transaction_id = $response->getTransactionReference();
$amount = $_POST['amount'];
// Insert transaction data into the database
$isPaymentExist = $db->query("SELECT * FROM payments WHERE transaction_id = '".$transaction_id."'");
if($isPaymentExist->num_rows == 0) {
$insert = $db->query("INSERT INTO payments(transaction_id, amount, currency, payment_status) VALUES('$transaction_id', '$amount', 'USD', 'Captured')");
}
echo "Your payment transaction id: ". $transaction_id;
} else {
// not successful
echo $response->getMessage();
}
} catch(Exception $e) {
echo $e->getMessage();
}
}
Ora puoi andare avanti e testare un pagamento. Ottieni questi numeri di carta di credito di prova per testare il pagamento. Se la risposta è andata a buon fine, dovresti ottenere il tuo ID transazione.
Il proprietario può vedere le transazioni sulla dashboard di Authorize.Net. Troverai le transazioni alla voce ‘Transazioni non regolate’. Authorize.Net successivamente regola la transazione da solo e ti avvisa via e-mail.
Spero che tu capisca come accettare pagamenti con carta di credito utilizzando il gateway di pagamento Authorize.Net. Si prega di condividere i tuoi pensieri o suggerimenti nella sezione commenti qui sotto.
articoli Correlati
- Integrazione del gateway di pagamento PayPal in PHP utilizzando l’API REST di PayPal
- Una guida per l’integrazione di Stripe nel sito Web con PHP
- Accetta pagamenti con carta di credito utilizzando Paypal Payments Pro in PHP