Hyväksy luottokorttimaksu käyttämällä Authorize.Net Payment Gateway -ohjelmaa PHP: ssä
Haluatko integroida luottokorttimaksuvaihtoehdon verkkosivustollesi? Jos kyllä, niin Authorize.Net on hyvä valinta sinulle. Vuonna 1996 perustettu tämä on yksi suosituimmista maksuportteista Internetissä.
Verkkokaupassa luottokortteja käytetään laajalti maksujen hyväksymiseen. Asiakkaat haluavat mieluummin maksaa luottokorteilla verkkotuotteiden ostamiseksi. Kaupassasi sinun on annettava mahdollisuus maksaa luottokortilla. Tässä artikkelissa näytän sinulle, miten Authorize.Net-maksuyhdyskäytävä integroidaan, jonka avulla voit vastaanottaa luottokorttimaksuja.
Aina kun lisäämme maksuyhdyskäytäviä, meidän on ensin testattava tapahtumat hiekkalaatikkotilassa. Kun testimaksut toimivat oikein, voit siirtyä live-versioon.
Voit aloittaa Authorize.Net-palvelun luomalla ensin hiekkalaatikkotilin. Kopioi tilin luomisen yhteydessä kirjautumistunnus ja tapahtuma-avain. Voit saada nämä API-avaimet kohdasta Tili-> API- tunnukset ja avaimet. Katso alla oleva kuvakaappaus.
Seuraavalta sivulta saat API-kirjautumistunnuksesi. Luo tapahtuma-avain Luo uusi avain (t) -osasta alla olevan kuvakaappauksen mukaisesti.
Päästä alkuun
Authorize.Net-palvelun integroimiseksi käytämme Omnipay- kirjastoa, joka tarjoaa puhtaan ja helpon tavan maksujen integrointiin. Asenna Omnipay-kirjasto projektiisi komennolla:
composer require league/omnipay:^3
Se asentaa Omnipay-kirjaston. Lisäksi meidän on asennettava Omnipay-paketti Authorize.Netille. Tämän paketin avulla voimme kaapata maksun Authorize.Net-maksuyhdyskäytävän kautta. Lue lisää tästä paketista heidän dokumentaatiostaan. Asenna tämä paketti suorittamalla alla oleva komento:
composer require "academe/omnipay-authorizenetapi: ~3.0"
Olemme valmiita tuettujen kirjastojen kanssa. Luodaan nyt yksinkertainen lomake määrän ja kortin tietojen syöttämiseksi. Luon index.php
tiedoston ja lisätään siihen alla oleva HTML.
<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>
Hyväksyessäsi verkkomaksun meidän on tallennettava tapahtuman tiedot tietokantaan. Joten tallentaaksesi transaktiotiedot, luo ‘maksut’ taulukko tietokantaan käyttämällä alla olevaa kyselyä.
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;
Hyväksy luottokorttimaksu Authorize.Net-palvelun avulla
Olet kopioinut Authorize.Net-tilisi API-avaimet edellisissä vaiheissa. On aika lisätä nämä avaimet PHP-koodiin. Tallenna nämä tunnistetiedot config.php
tiedostoon. Lisään myös tietokantayhteyden tähän tiedostoon.
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'
Korvaa paikkamerkit todellisilla arvoilla. Kun testaamme maksuja hiekkalaatikossa, hyväksyin menetelmän setTestMode
. Kun olet valmis siirtymään tuotantoon, poista / kommentoi tämä rivi.
Asetin yllä olevassa luomassamme muodossa charge.php
toiminnan URL-osoitteeksi. Se tarkoittaa, että luottokorttimaksun sieppaava todellinen koodi menee tämän tiedoston sisälle.
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();
}
}
Voit nyt testata maksua. Hanki nämä testiluottokortin numerot maksun testaamista varten. Onnistuneen vastauksen yhteydessä sinun tulee hankkia tapahtumasi tunnus.
Omistaja voi nähdä tapahtumat Authorize.Net-hallintapaneelissa. Löydät maksutapahtumat kohdasta "Järjestämättömät tapahtumat". Authorize.Net ratkaisee tapahtuman myöhemmin itse ja ilmoittaa sinulle sähköpostitse.
Toivon, että ymmärrät kuinka hyväksyä luottokorttimaksut Authorize.Net-maksuyhdyskäytävän avulla. Jaa ajatuksesi tai ehdotuksesi alla olevassa kommenttiosassa.