PayPal-maksuyhdyskäytävän integrointi PHP: ssä käyttäen PayPal REST -sovellusliittymää
PayPal on yksi luotettavimmista maksuyhdyskäytävistä Internetissä. Sitä käytetään laajalti verkkosivustoilla maksujen vastaanottamiseen verkossa. PayPal-sovellusliittymän dokumentaatiota ei kuitenkaan ole helppo ymmärtää. Kehittäjälle, joka aikoo integroida PayPal-maksuyhdyskäytävän ensimmäistä kertaa, siinä kestää pitkään. Vietin mielettömän määrän tunteja lukemalla PayPal API -dokumentaatiota. Myöhemmin ymmärrät, että Paypal-asiakirjoja ei tarvitse lukea perusteellisesti niiden integroimiseksi.
Tässä artikkelissa tutkitaan, miten PayPal-maksuyhdyskäytävä voidaan integroida PayPal REST -sovellusliittymän avulla. Aiomme käyttää Omnipayn toimittamaa GitHub-kirjastoa. Omnipay tarjoaa puhtaan ja helpon tavan integroida erilaiset maksuyhdyskäytävät verkkosovellukseesi. Niiden koodirakenne on myös puhdas ja tehokas. Kehittäjät rakastavat sitä.
Hanki PayPalin asiakastunnus ja asiakassalaisuus
PayPal-verkkosivuston integrointia varten sinun on ensin luotava REST API -sovellus PayPal-kehittäjätilille. Kun olet luonut sovelluksen, saat asiakastunnuksen ja asiakassalaisuuden, jotka vaaditaan seuraavissa vaiheissa.
Luo REST API -sovellus siirtymällä PayPal-kehittäjätiliisi ja kirjautumalla hallintapaneeliin.
Napsauta kehittäjän hallintapaneelissa valikkoa Omat sovellukset ja kirjautumistiedot. Napsauta REST API -sovelluksen alla olevaa Luo sovellus -painiketta.
Täytä seuraavassa vaiheessa sovelluksen nimi ja saat asiakastunnuksesi ja asiakassalaisuutesi. Minun tapauksessani alla olevassa kuvakaappauksessa näen hiekkalaatikkotiedot. Se voi olla live-valtakirja sinun tapauksessasi. Tai voit kokeilla myös hiekkalaatikkotietojasi.
Kirjaston asennus ja perusasetukset
Kuten sanoin, käytämme Omnipayä PayPal REST -sovellusliittymien integrointiin. Meidän on ensin asennettava heidän kirjastonsa Composerin avulla. Asenna kirjastot suorittamalla alla oleva komento.
composer require league/omnipay omnipay/paypal
Kun olet asentanut kirjaston, luo määritystiedosto, johon tallennamme API-tunnistetiedot, kirjoitamme DB-yhteyden ja alustamme yhdyskäytävän.
config.php
<?php
require_once "vendor/autoload.php";
use OmnipayOmnipay;
define('CLIENT_ID', 'PAYPAL_CLIENT_ID_HERE');
define('CLIENT_SECRET', 'PAYPAL_CLIENT_SECRET_HERE');
define('PAYPAL_RETURN_URL', 'YOUR_SITE_URL/success.php');
define('PAYPAL_CANCEL_URL', 'YOUR_SITE_URL/cancel.php');
define('PAYPAL_CURRENCY', 'USD'); // set your currency here
// 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 = Omnipay::create('PayPal_Rest');
$gateway->setClientId(CLIENT_ID);
$gateway->setSecret(CLIENT_SECRET);
$gateway->setTestMode(true); //set it to 'false' when go live
Tässä välitin Paypal_Rest-parametrin Omnipayn luontimenetelmälle. Omnipay taustalla kutsuu PayPal REST -sovellusliittymää suorittaessaan maksun sen kautta.
Luo seuraavaksi yksinkertainen lomake, johon käyttäjä voi syöttää summan. Demotarkoituksiin pidän vain yhden kentän muodossa. Voit laajentaa lomaketta vaatimuksesi mukaan.
lomake.html
<form action="charge.php" method="post">
<input type="text" name="amount" value="20.00" />
<input type="submit" name="submit" value="Pay Now">
</form>
Kun maksu on suoritettu, meidän on tallennettava tapahtuman tiedot tietokantataulukkoon. Luo tietokantataulukko suorittamalla alla oleva SQL-kysely.
CREATE TABLE `payments` ( `id` int(11) NOT NULL AUTO_INCREMENT,
`payment_id` varchar(255) NOT NULL,
`payer_id` varchar(255) NOT NULL,
`payer_email` varchar(255) NOT NULL,
`amount` float(10,2) NOT NULL,
`currency` varchar(255) NOT NULL,
`payment_status` varchar(255) NOT NULL,
PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Tämä taulukko ei sisällä ulkomaista avainta, koska se on tarkoitettu vain demotarkoituksiin. Käyttäjä voi lisätä tähän taulukkoon sarakkeen user_id viitatakseen maksuun käyttäjän kanssa.
PayPal-maksuyhdyskäytävän integrointi PHP: ssä käyttäen PayPal REST -sovellusliittymää
Käyttäessään PayPal REST -sovellusliittymää käyttäjä ohjaa PayPaliin maksun suorittamiseksi. Maksun suorittamisen jälkeen käyttäjä ohjaa takaisin sovelluksemme onnistumisen tai epäonnistumisen tilan perusteella. Määritimme nämä URL-osoitteet config.php
yllä olevaan tiedostoon.
Kun käyttäjä ohjaa takaisin sovelluksemme onnistuneesti, meidän on suoritettava maksu PHP-tiedostossamme, joka on success.php
meidän tapauksessamme. Tallennamme maksutiedot myös suoritettuamme maksun PayPal REST -sovellusliittymän avulla. Joten koodimme on seuraava.
charge.php
<?php
require_once 'config.php';
if (isset($_POST['submit'])) {
try {
$response = $gateway->purchase(array(
'amount' => $_POST['amount'],
'currency' => PAYPAL_CURRENCY,
'returnUrl' => PAYPAL_RETURN_URL,
'cancelUrl' => PAYPAL_CANCEL_URL,
))->send();
if ($response->isRedirect()) {
$response->redirect(); // this will automatically forward the customer
} else {
// not successful
echo $response->getMessage();
}
} catch(Exception $e) {
echo $e->getMessage();
}
}
menestys.php
<?php
require_once 'config.php';
// Once the transaction has been approved, we need to complete it.
if (array_key_exists('paymentId', $_GET) && array_key_exists('PayerID', $_GET)) {
$transaction = $gateway->completePurchase(array(
'payer_id' => $_GET['PayerID'],
'transactionReference' => $_GET['paymentId'],
));
$response = $transaction->send();
if ($response->isSuccessful()) {
// The customer has successfully paid.
$arr_body = $response->getData();
$payment_id = $arr_body['id'];
$payer_id = $arr_body['payer']['payer_info']['payer_id'];
$payer_email = $arr_body['payer']['payer_info']['email'];
$amount = $arr_body['transactions'][0]['amount']['total'];
$currency = PAYPAL_CURRENCY;
$payment_status = $arr_body['state'];
// Insert transaction data into the database
$isPaymentExist = $db->query("SELECT * FROM payments WHERE payment_id = '".$payment_id."'");
if($isPaymentExist->num_rows == 0) {
$insert = $db->query("INSERT INTO payments(payment_id, payer_id, payer_email, amount, currency, payment_status) VALUES('". $payment_id ."', '". $payer_id ."', '". $payer_email ."', '". $amount ."', '". $currency ."', '". $payment_status ."')");
}
echo "Payment is successful. Your transaction id is: ". $payment_id;
} else {
echo $response->getMessage();
}
} else {
echo 'Transaction is declined';
}
Cancel.php
<h3>User is canceled the payment.</h3>
Lähetä tuotetiedot PayPalille
Yllä olevassa koodissa lähetämme maksettavan summan PayPalilla. Voit myös lähettää tuotetietoja. Asiakkaasi voivat nähdä nämä tuotetiedot maksusivulla ennen maksun suorittamista.
Tuotetietojen lähettäminen edellyttää, että välität ” tavarat ” purchase
-menetelmän seuraavasti.
$response = $gateway->purchase(array(
'amount' => $_POST['amount'],
'items' => array(
array(
'name' => 'Course Subscription',
'price' => $_POST['amount'],
'description' => 'Get access to premium courses.',
'quantity' => 1
),
),
'currency' => PAYPAL_CURRENCY,
'returnUrl' => PAYPAL_RETURN_URL,
'cancelUrl' => PAYPAL_CANCEL_URL,
))->send();
Täällä olen välittänyt tuotetiedot staattisesti. Sinun tulisi tehdä siitä dynaaminen tuotteestasi riippuen.
Toivon, että sait tietää PayPal Payment Gateway Integrationista PHP: ssä. Haluaisin kuulla ajatuksesi tai ehdotuksesi alla olevassa kommenttiosassa.