...
✅ 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ää

14

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