Acceptez le paiement par carte de crédit en utilisant la passerelle de paiement Authorize.Net en PHP
Vous souhaitez intégrer une option de paiement par carte bancaire sur votre site internet? Si oui, alors Authorize.Net est un bon choix pour vous. Fondée en 1996, c’est l’une des passerelles de paiement les plus populaires sur Internet.
Pour une boutique en ligne, les cartes de crédit sont largement utilisées pour accepter les paiements. Les clients préfèrent payer par carte de crédit pour acheter des produits en ligne. Dans votre magasin, vous devez donner l’option de paiement par carte de crédit. Dans cet article, je vous montre comment intégrer la passerelle de paiement Authorize.Net qui vous permettra de recevoir le paiement par carte bancaire.
Chaque fois que nous ajoutons des passerelles de paiement, nous devons d’abord tester les transactions en mode sandbox. Une fois que les paiements de test fonctionnent correctement, vous pouvez opter pour la version en direct.
Pour commencer avec Authorize.Net, créez d’abord un compte sandbox. Lors de la création du compte, copiez l’identifiant de connexion et la clé de transaction. Vous pouvez obtenir ces clés API à partir de Account->API Credentials & Keys. Veuillez vous référer à la capture d’écran ci-dessous.
Sur la page suivante, vous obtiendrez votre « ID de connexion API ». Créez une clé de transaction à partir de la section « Créer de nouvelles clés » comme indiqué dans la capture d’écran ci-dessous.
Commencer
Afin d’intégrer Authorize.Net, nous utiliserons la bibliothèque Omnipay qui fournit un moyen simple et propre d’intégration des paiements. Installez la bibliothèque Omnipay sur votre projet à l’aide de la commande :
composer require league/omnipay:^3
Il installera la bibliothèque Omnipay. De plus, nous devons installer le package Omnipay pour Authorize.Net. Ce package nous permet de capturer le paiement via la passerelle de paiement Authorize.Net. En savoir plus sur ce package sur leur documentation. Exécutez la commande ci-dessous pour installer ce package :
composer require "academe/omnipay-authorizenetapi: ~3.0"
Nous sommes prêts avec les bibliothèques prises en charge. Créons maintenant un formulaire simple pour saisir le montant et les détails de la carte. Je crée un index.php
fichier et j’y ajoute le code HTML ci-dessous.
<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>
Lors de l’acceptation du paiement en ligne, nous devons stocker les détails de la transaction dans la base de données. Ainsi, pour stocker les informations de transaction, créez une table « paiements » dans la base de données à l’aide de la requête ci-dessous.
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;
Acceptez le paiement par carte de crédit en utilisant Authorize.Net
Vous avez copié les clés API de votre compte Authorize.Net dans les étapes précédentes. Il est temps d’ajouter ces clés au code PHP. Stockez ces informations d’identification dans le config.php
fichier. J’ajoute également la connexion à la base de données à ce fichier.
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'
Remplacez les espaces réservés par les valeurs réelles. Alors que nous testons les paiements sur le bac à sable, je suis passé fidèle à la méthode setTestMode
. Lorsque vous êtes prêt à passer à la production, supprimez/commentez cette ligne.
Dans le formulaire que nous avons créé ci-dessus, j’ai défini charge.php
comme URL d’action. Cela signifie que le code réel qui capture le paiement par carte de crédit ira à l’intérieur de ce fichier.
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();
}
}
Vous pouvez maintenant tester un paiement. Obtenez ces numéros de carte de crédit de test pour tester le paiement. En cas de réponse positive, vous devriez obtenir votre identifiant de transaction.
Le propriétaire peut voir les transactions sur le tableau de bord Authorize.Net. Vous trouverez les transactions sous la rubrique « Transactions non réglées ». Authorize.Net règle ensuite la transaction de son propre chef et vous en informe par e-mail.
J’espère que vous comprenez comment accepter les paiements par carte de crédit en utilisant la passerelle de paiement Authorize.Net. S’il vous plaît partager vos pensées ou suggestions dans la section commentaires ci-dessous.
Articles Liés
- Intégration de la passerelle de paiement PayPal dans PHP à l’aide de l’API REST PayPal
- Un guide pour l’intégration de Stripe dans un site Web avec PHP
- Acceptez les paiements par carte de crédit en utilisant Paypal Payments Pro en PHP