Acceptera kreditkortsbetalning med Authorize.Net Payment Gateway i PHP
Vill du integrera ett kreditkortsbetalningsalternativ på din webbplats? Om ja, då är Authorize.Net ett bra val för dig. Grundades 1996 och är en av de populäraste betalningsportarna på Internet.
För en webbutik används kreditkort ofta för att acceptera betalning. Kunderna föredrar att betala med kreditkort för att köpa onlineprodukter. I din butik måste du ge möjlighet att betala med kreditkort. I den här artikeln visar jag dig hur du integrerar Payment Gateway för Authorize.Net som gör att du kan få kreditkortsbetalning.
När vi lägger till betalningsgateways måste vi först testa transaktionerna i sandlådeläget. När testbetalningarna fungerar korrekt kan du gå till liveversionen.
För att komma igång med Authorize.Net, skapa först ett sandbox-konto. Kopiera inloggnings-id och transaktionsnyckel när kontot skapats. Du kan hämta dessa API-nycklar från Account-> API Credentials & Keys. Se skärmdumpen nedan.
På nästa sida får du ditt "API-inloggnings-ID". Skapa en transaktionsnyckel från avsnittet "Skapa nya nycklar" som visas i skärmbilden nedan.
Komma igång
För att integrera Authorize.Net kommer vi att använda biblioteket Omnipay som ger ett enkelt och enkelt sätt för betalningsintegrering. Installera Omnipay-biblioteket till ditt projekt med kommandot:
composer require league/omnipay:^3
Det installerar Omnipay-biblioteket. Dessutom måste vi installera Omnipay-paketet för Authorize.Net. Detta paket tillåter oss att fånga betalning via Authorize.Net betalningsgateway. Läs mer om detta paket i deras dokumentation. Kör kommandot nedan för att installera det här paketet:
composer require "academe/omnipay-authorizenetapi: ~3.0"
Vi är redo med stödda bibliotek. Nu ska vi skapa ett enkelt formulär för att ange belopp och kortinformation. Jag skapar en index.php
fil och lägger till nedanstående HTML i den.
<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>
När vi accepterar onlinebetalning måste vi lagra transaktionsuppgifterna i databasen. Så, för att lagra transaktionsinformation skapar du en ‘betalningstabell’ i databasen med hjälp av nedanstående fråga.
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;
Acceptera kreditkortsbetalning med Authorize.Net
Du har kopierat API-nycklarna till ditt Authorize.Net-konto i föregående steg. Det är dags att lägga till dessa nycklar i PHP-koden. Spara dessa referenser i config.php
filen. Jag lägger också till databasanslutningen till den här filen.
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'
Ersätt platshållarna med de faktiska värdena. När vi testar betalningarna på sandlådan passerade jag metoden setTestMode
. När du är redo att gå vidare till produktion, ta bort / kommentera den här raden.
I formuläret vi har skapat ovan ställer jag in charge.php
som åtgärds-URL. Det betyder att den faktiska koden som fångar kreditkortsbetalningen kommer att ligga i den här filen.
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();
}
}
Nu kan du testa en betalning. Få dessa testkreditkortsnummer för att testa betalningen. På det lyckade svaret bör du få ditt transaktions-ID.
Ägaren kan se transaktionerna på Dashboard Authorize.Net. Du hittar transaktioner under "Oavslutade transaktioner". Authorize.Net löser senare transaktionen på egen hand och meddelar dig via e-post.
Jag hoppas att du förstår hur du accepterar kreditkortsbetalningar med Authorize.Net betalningsgateway. Dela dina tankar eller förslag i kommentarsektionen nedan.
relaterade artiklar
- PayPal Payment Gateway-integration i PHP med PayPal REST API
- En guide för stripeintegrering på webbplatsen med PHP
- Acceptera kreditkortsbetalningar med Paypal Payments Pro i PHP