✅ WEB- ja WordPress -uutiset, -teemat, -laajennukset. Täällä jaamme vinkkejä ja parhaita verkkosivustoratkaisuja.

PayPal-maksuyhdyskäytävän integrointi PHP: ssä käyttäen PayPal REST -sovellusliittymää

18

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.

PayPal-maksuyhdyskäytävän integrointi PHP: ssä käyttäen PayPal REST -sovellusliittymää

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.phpyllä olevaan tiedostoon.

Kun käyttäjä ohjaa takaisin sovelluksemme onnistuneesti, meidän on suoritettava maksu PHP-tiedostossamme, joka on success.phpmeidä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.

Aiheeseen liittyvät artikkelit

Tämä verkkosivusto käyttää evästeitä parantaakseen käyttökokemustasi. Oletamme, että olet kunnossa, mutta voit halutessasi kieltäytyä. Hyväksyä Lisätietoja