Actualités WEB et WordPress, thèmes, plugins. Ici, nous partageons des conseils et les meilleures solutions de sites Web.

Acceptez le paiement par carte de crédit en utilisant la passerelle de paiement Authorize.Net en PHP

45

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.

Acceptez le paiement par carte de crédit en utilisant la passerelle de paiement Authorize.Net en PHP

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.

Acceptez le paiement par carte de crédit en utilisant la passerelle de paiement Authorize.Net en PHP

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.phpfichier 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.phpfichier. 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.phpcomme 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.

Acceptez le paiement par carte de crédit en utilisant la passerelle de paiement Authorize.Net en PHP

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

Source d’enregistrement: artisansweb.net

Ce site utilise des cookies pour améliorer votre expérience. Nous supposerons que cela vous convient, mais vous pouvez vous désinscrire si vous le souhaitez. J'accepte Plus de détails