Nõustuge krediitkaardimaksega, kasutades PHP-s Authorize.Net Payment Gateway’i
Kas soovite oma veebisaidile integreerida krediitkaardimakse võimaluse? Kui jah, siis on Authorize.Net teie jaoks hea valik. See asutati 1996. aastal ja see on üks populaarsemaid makseväravaid Internetis.
Veebipoe jaoks kasutatakse krediitkaarte laialdaselt makse aktsepteerimiseks. Veebitoodete ostmiseks eelistavad kliendid maksta krediitkaartidega. Oma kaupluses peate andma krediitkaardimakse võimaluse. Selles artiklis näitan teile, kuidas integreerida Authorize.Net makselüüsi, mis võimaldab teil krediitkaardimakseid saada.
Alati, kui lisame makselüüse, peame kõigepealt testima tehinguid liivakasti režiimis. Kui testmaksed töötavad õigesti, võite minna reaalajas versiooni juurde.
Authorize.Netiga alustamiseks looge kõigepealt liivakasti konto. Konto loomisel kopeerige sisselogimise ID ja tehinguvõti. Need API-võtmed saate menüüst Konto-> API mandaadid ja võtmed. Palun vaadake allolevat ekraanipilti.
Järgmisel lehel saate oma API sisselogimise ID. Looge jaotisest „Uue võtme (te) loomine" tehinguvõti, nagu on näidatud alloleval ekraanipildil.
Alustamine
Authorize.Neti integreerimiseks kasutame Omnipay teeki, mis pakub puhast ja lihtsat viisi maksete integreerimiseks. Installige Omnipay teek oma projekti käsuga:
composer require league/omnipay:^3
See installib Omnipay teegi. Lisaks peame Authorize.Neti jaoks installima Omnipay paketi. See pakett võimaldab meil saada makseid Authorize.Neti makselüüsi kaudu. Lisateavet selle paketi kohta leiate nende dokumentatsioonist. Selle paketi installimiseks käivitage allolev käsk:
composer require "academe/omnipay-authorizenetapi: ~3.0"
Oleme toetatud raamatukogudega valmis. Nüüd loome summa ja kaardi üksikasjade sisestamiseks lihtsa vormi. Ma loon index.php
faili ja lisan sinna alloleva HTML-i.
<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>
Veebimakse aktsepteerimisel peame salvestama tehingu üksikasjad andmebaasi. Tehinguinformatsiooni salvestamiseks looge andmebaasis allpool oleva päringu abil tabel ‘maksed’.
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;
Võta krediitkaardimakse vastu Authorize.Neti abil
Olete eelmistes toimingutes oma Authorize.Net-konto API-võtmed kopeerinud. On aeg lisada need võtmed PHP-koodile. Salvestage need mandaadid config.php
faili. Lisan sellele failile ka andmebaasiühenduse.
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'
Asendage kohatäited tegelike väärtustega. Kuna testime makseid liivakastis, järgisin meetodit setTestMode
. Kui olete valmis tootmise juurde minema, eemaldage / kommenteerige see rida.
Eespool loodud vormis määrasin charge.php
toimingu URL-i. See tähendab, et krediitkaardimakse fikseeriv tegelik kood läheb selle faili sisse.
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();
}
}
Nüüd saate makse katsetada. Saage test krediitkaardi numbrid testimiseks makse. Eduka vastuse korral peaksite saama oma tehingu ID.
Omanik näeb tehinguid Authorize.Neti juhtpaneelil. Tehingud leiate jaotisest „Lahendamata tehingud”. Authorize.Net lahendab hiljem tehingu ise ja teavitab teid sellest e-posti teel.
Loodan, et saate aru, kuidas krediitkaardimakseid Authorize.Net makselüüsi abil aktsepteerida. Palun jagage oma mõtteid või ettepanekuid allpool kommentaaride jaotises.