{"id":26115,"date":"2021-06-21T11:01:00","date_gmt":"2021-06-21T08:01:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=26115"},"modified":"2021-10-17T20:14:24","modified_gmt":"2021-10-17T17:14:24","slug":"paypal-maksuyhdyskaytavan-integrointi-php-ssa-kayttaen-paypal-rest-sovellusliittymaa","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/fi\/paypal-maksuyhdyskaytavan-integrointi-php-ssa-kayttaen-paypal-rest-sovellusliittymaa\/","title":{"rendered":"PayPal-maksuyhdysk\u00e4yt\u00e4v\u00e4n integrointi PHP: ss\u00e4 k\u00e4ytt\u00e4en PayPal REST -sovellusliittym\u00e4\u00e4"},"content":{"rendered":"<p>PayPal on yksi luotettavimmista maksuyhdysk\u00e4yt\u00e4vist\u00e4 Internetiss\u00e4. Sit\u00e4 k\u00e4ytet\u00e4\u00e4n laajalti verkkosivustoilla maksujen vastaanottamiseen verkossa. PayPal-sovellusliittym\u00e4n dokumentaatiota ei kuitenkaan ole helppo ymm\u00e4rt\u00e4\u00e4. Kehitt\u00e4j\u00e4lle, joka aikoo integroida PayPal-maksuyhdysk\u00e4yt\u00e4v\u00e4n ensimm\u00e4ist\u00e4 kertaa, siin\u00e4 kest\u00e4\u00e4 pitk\u00e4\u00e4n. Vietin mielett\u00f6m\u00e4n m\u00e4\u00e4r\u00e4n tunteja lukemalla PayPal API -dokumentaatiota. My\u00f6hemmin ymm\u00e4rr\u00e4t, ett\u00e4 Paypal-asiakirjoja ei tarvitse lukea perusteellisesti niiden integroimiseksi.<\/p>\n<p>T\u00e4ss\u00e4 artikkelissa tutkitaan, miten PayPal-maksuyhdysk\u00e4yt\u00e4v\u00e4 voidaan integroida PayPal REST -sovellusliittym\u00e4n avulla. Aiomme k\u00e4ytt\u00e4\u00e4 Omnipayn toimittamaa GitHub-kirjastoa. Omnipay tarjoaa puhtaan ja helpon tavan integroida erilaiset maksuyhdysk\u00e4yt\u00e4v\u00e4t verkkosovellukseesi. Niiden koodirakenne on my\u00f6s puhdas ja tehokas. Kehitt\u00e4j\u00e4t rakastavat sit\u00e4.<\/p>\n<h3>Hanki PayPalin asiakastunnus ja asiakassalaisuus<\/h3>\n<p>PayPal-verkkosivuston integrointia varten sinun on ensin luotava REST API -sovellus PayPal-kehitt\u00e4j\u00e4tilille. Kun olet luonut sovelluksen, saat asiakastunnuksen ja asiakassalaisuuden, jotka vaaditaan seuraavissa vaiheissa.<\/p>\n<p>Luo REST API -sovellus siirtym\u00e4ll\u00e4 <a href=\"https:\/\/developer.paypal.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PayPal-kehitt\u00e4j\u00e4tiliisi<\/a> ja kirjautumalla hallintapaneeliin.<\/p>\n<p>Napsauta kehitt\u00e4j\u00e4n hallintapaneelissa valikkoa Omat sovellukset ja kirjautumistiedot. Napsauta REST API -sovelluksen alla olevaa Luo sovellus -painiketta.<\/p>\n<p>T\u00e4yt\u00e4 seuraavassa vaiheessa sovelluksen nimi ja saat asiakastunnuksesi ja asiakassalaisuutesi. Minun tapauksessani alla olevassa kuvakaappauksessa n\u00e4en hiekkalaatikkotiedot. Se voi olla live-valtakirja sinun tapauksessasi. Tai voit kokeilla my\u00f6s hiekkalaatikkotietojasi.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20133-6081c0b5d3a93.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20133-6081c0b5d3a93.png\" alt=\"PayPal-maksuyhdysk\u00e4yt\u00e4v\u00e4n integrointi PHP: ss\u00e4 k\u00e4ytt\u00e4en PayPal REST -sovellusliittym\u00e4\u00e4\" ><\/a><\/p>\n<h3>Kirjaston asennus ja perusasetukset<\/h3>\n<p>Kuten sanoin, k\u00e4yt\u00e4mme <a href=\"https:\/\/github.com\/thephpleague\/omnipay-paypal\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Omnipay\u00e4<\/a> PayPal REST -sovellusliittymien integrointiin. Meid\u00e4n on ensin asennettava heid\u00e4n kirjastonsa Composerin avulla. Asenna kirjastot suorittamalla alla oleva komento.<\/p>\n<pre><code>composer require league\/omnipay omnipay\/paypal<\/code><\/pre>\n<p>Kun olet asentanut kirjaston, luo m\u00e4\u00e4ritystiedosto, johon tallennamme API-tunnistetiedot, kirjoitamme DB-yhteyden ja alustamme yhdysk\u00e4yt\u00e4v\u00e4n.<\/p>\n<p><strong>config.php<\/strong><\/p>\n<pre><code>&lt;?php\nrequire_once \"vendor\/autoload.php\";\n\u00a0\nuse OmnipayOmnipay;\n\u00a0\ndefine('CLIENT_ID', 'PAYPAL_CLIENT_ID_HERE');\ndefine('CLIENT_SECRET', 'PAYPAL_CLIENT_SECRET_HERE');\n\u00a0\ndefine('PAYPAL_RETURN_URL', 'YOUR_SITE_URL\/success.php');\ndefine('PAYPAL_CANCEL_URL', 'YOUR_SITE_URL\/cancel.php');\ndefine('PAYPAL_CURRENCY', 'USD'); \/\/ set your currency here\n\u00a0\n\/\/ Connect with the database\n$db = new mysqli('localhost', 'MYSQL_DB_USERNAME', 'MYSQL_DB_PASSWORD', 'MYSQL_DB_NAME'); \n\u00a0\nif ($db-&gt;connect_errno) {\n\u00a0\u00a0\u00a0\u00a0die(\"Connect failed: \". $db-&gt;connect_error);\n}\n\u00a0\n$gateway = Omnipay::create('PayPal_Rest');\n$gateway-&gt;setClientId(CLIENT_ID);\n$gateway-&gt;setSecret(CLIENT_SECRET);\n$gateway-&gt;setTestMode(true); \/\/set it to 'false' when go live<\/code><\/pre>\n<p>T\u00e4ss\u00e4 v\u00e4litin Paypal_Rest-parametrin Omnipayn luontimenetelm\u00e4lle. Omnipay taustalla kutsuu PayPal REST -sovellusliittym\u00e4\u00e4 suorittaessaan maksun sen kautta.<\/p>\n<p>Luo seuraavaksi yksinkertainen lomake, johon k\u00e4ytt\u00e4j\u00e4 voi sy\u00f6tt\u00e4\u00e4 summan. Demotarkoituksiin pid\u00e4n vain yhden kent\u00e4n muodossa. Voit laajentaa lomaketta vaatimuksesi mukaan.<\/p>\n<p><strong>lomake.html<\/strong><\/p>\n<pre><code>&lt;form action=\"charge.php\" method=\"post\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"text\" name=\"amount\" value=\"20.00\" \/&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"submit\" name=\"submit\" value=\"Pay Now\"&gt;\n&lt;\/form&gt;<\/code><\/pre>\n<p>Kun maksu on suoritettu, meid\u00e4n on tallennettava tapahtuman tiedot tietokantataulukkoon. Luo tietokantataulukko suorittamalla alla oleva SQL-kysely.<\/p>\n<pre><code>CREATE TABLE `payments` (\u00a0`id` int(11) NOT NULL AUTO_INCREMENT,\n\u00a0`payment_id` varchar(255) NOT NULL,\n\u00a0`payer_id` varchar(255) NOT NULL,\n\u00a0`payer_email` varchar(255) NOT NULL,\n\u00a0`amount` float(10,2) NOT NULL,\n\u00a0`currency` varchar(255) NOT NULL,\n\u00a0`payment_status` varchar(255) NOT NULL,\n\u00a0PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;<\/code><\/pre>\n<p>T\u00e4m\u00e4 taulukko ei sis\u00e4ll\u00e4 ulkomaista avainta, koska se on tarkoitettu vain demotarkoituksiin. K\u00e4ytt\u00e4j\u00e4 voi lis\u00e4t\u00e4 t\u00e4h\u00e4n taulukkoon sarakkeen user_id viitatakseen maksuun k\u00e4ytt\u00e4j\u00e4n kanssa.<\/p>\n<h3>PayPal-maksuyhdysk\u00e4yt\u00e4v\u00e4n integrointi PHP: ss\u00e4 k\u00e4ytt\u00e4en PayPal REST -sovellusliittym\u00e4\u00e4<\/h3>\n<p>K\u00e4ytt\u00e4ess\u00e4\u00e4n PayPal REST -sovellusliittym\u00e4\u00e4 k\u00e4ytt\u00e4j\u00e4 ohjaa PayPaliin maksun suorittamiseksi. Maksun suorittamisen j\u00e4lkeen k\u00e4ytt\u00e4j\u00e4 ohjaa takaisin sovelluksemme onnistumisen tai ep\u00e4onnistumisen tilan perusteella. M\u00e4\u00e4ritimme n\u00e4m\u00e4 URL-osoitteet <code>config.php<\/code>yll\u00e4 olevaan tiedostoon.<\/p>\n<p>Kun k\u00e4ytt\u00e4j\u00e4 ohjaa takaisin sovelluksemme onnistuneesti, meid\u00e4n on suoritettava maksu PHP-tiedostossamme, joka on <code>success.php<\/code>meid\u00e4n tapauksessamme. Tallennamme maksutiedot my\u00f6s suoritettuamme maksun PayPal REST -sovellusliittym\u00e4n avulla. Joten koodimme on seuraava.<\/p>\n<p><strong>charge.php<\/strong><\/p>\n<pre><code>&lt;?php\nrequire_once 'config.php';\n\u00a0\nif (isset($_POST['submit'])) {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0try {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$response = $gateway-&gt;purchase(array(\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'amount' =&gt; $_POST['amount'],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'currency' =&gt; PAYPAL_CURRENCY,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'returnUrl' =&gt; PAYPAL_RETURN_URL,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'cancelUrl' =&gt; PAYPAL_CANCEL_URL,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0))-&gt;send();\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if ($response-&gt;isRedirect()) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$response-&gt;redirect(); \/\/ this will automatically forward the customer\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} else {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ not successful\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo $response-&gt;getMessage();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0} catch(Exception $e) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo $e-&gt;getMessage();\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p><strong>menestys.php<\/strong><\/p>\n<pre><code>&lt;?php\nrequire_once 'config.php';\n\u00a0\n\/\/ Once the transaction has been approved, we need to complete it.\nif (array_key_exists('paymentId', $_GET) &amp;&amp; array_key_exists('PayerID', $_GET)) {\n\u00a0\u00a0\u00a0\u00a0$transaction = $gateway-&gt;completePurchase(array(\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'payer_id'\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 =&gt; $_GET['PayerID'],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'transactionReference' =&gt; $_GET['paymentId'],\n\u00a0\u00a0\u00a0\u00a0));\n\u00a0\u00a0\u00a0\u00a0$response = $transaction-&gt;send();\n\u00a0\n\u00a0\u00a0\u00a0\u00a0if ($response-&gt;isSuccessful()) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ The customer has successfully paid.\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$arr_body = $response-&gt;getData();\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$payment_id = $arr_body['id'];\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$payer_id = $arr_body['payer']['payer_info']['payer_id'];\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$payer_email = $arr_body['payer']['payer_info']['email'];\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$amount = $arr_body['transactions'][0]['amount']['total'];\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$currency = PAYPAL_CURRENCY;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$payment_status = $arr_body['state'];\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Insert transaction data into the database\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$isPaymentExist = $db-&gt;query(\"SELECT * FROM payments WHERE payment_id = '\".$payment_id.\"'\");\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if($isPaymentExist-&gt;num_rows == 0) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$insert = $db-&gt;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 .\"')\");\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"Payment is successful. Your transaction id is: \". $payment_id;\n\u00a0\u00a0\u00a0\u00a0} else {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo $response-&gt;getMessage();\n\u00a0\u00a0\u00a0\u00a0}\n} else {\n\u00a0\u00a0\u00a0\u00a0echo 'Transaction is declined';\n}<\/code><\/pre>\n<p><strong>Cancel.php<\/strong><\/p>\n<pre><code>&lt;h3&gt;User is canceled the payment.&lt;\/h3&gt;<\/code><\/pre>\n<h3>L\u00e4het\u00e4 tuotetiedot PayPalille<\/h3>\n<p>Yll\u00e4 olevassa koodissa l\u00e4het\u00e4mme maksettavan summan PayPalilla. Voit my\u00f6s l\u00e4hett\u00e4\u00e4 tuotetietoja. Asiakkaasi voivat n\u00e4hd\u00e4 n\u00e4m\u00e4 tuotetiedot maksusivulla ennen maksun suorittamista.<\/p>\n<p>Tuotetietojen l\u00e4hett\u00e4minen edellytt\u00e4\u00e4, ett\u00e4 v\u00e4lit\u00e4t &#8221; tavarat &#8221; <code>purchase<\/code>\u00a0-menetelm\u00e4n seuraavasti.<\/p>\n<pre><code>$response = $gateway-&gt;purchase(array(\n\u00a0\u00a0\u00a0\u00a0'amount' =&gt; $_POST['amount'],\n\u00a0\u00a0\u00a0\u00a0'items' =&gt; array(\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0array(\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'name' =&gt; 'Course Subscription',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'price' =&gt; $_POST['amount'],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'description' =&gt; 'Get access to premium courses.',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'quantity' =&gt; 1\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0),\n\u00a0\u00a0\u00a0\u00a0),\n\u00a0\u00a0\u00a0\u00a0'currency' =&gt; PAYPAL_CURRENCY,\n\u00a0\u00a0\u00a0\u00a0'returnUrl' =&gt; PAYPAL_RETURN_URL,\n\u00a0\u00a0\u00a0\u00a0'cancelUrl' =&gt; PAYPAL_CANCEL_URL,\n))-&gt;send();<\/code><\/pre>\n<p>T\u00e4\u00e4ll\u00e4 olen v\u00e4litt\u00e4nyt tuotetiedot staattisesti. Sinun tulisi tehd\u00e4 siit\u00e4 dynaaminen tuotteestasi riippuen.<\/p>\n<p>Toivon, ett\u00e4 sait tiet\u00e4\u00e4 PayPal Payment Gateway Integrationista PHP: ss\u00e4. Haluaisin kuulla ajatuksesi tai ehdotuksesi alla olevassa kommenttiosassa.<\/p>\n<h4>Aiheeseen liittyv\u00e4t artikkelit<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/hyvaksy-luottokorttimaksut-php-n-paypal-payments-prolla\/\" title=\"Hyv\u00e4ksy luottokorttimaksut PHP: n PayPal Payments Prolla\">Hyv\u00e4ksy luottokorttimaksut PHP: n PayPal Payments Prolla<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/hyvaksy-luottokorttimaksu-kayttamalla-authorize-net-payment-gateway-ohjelmaa-php-ssa\/\" title=\"Hyv\u00e4ksy luottokorttimaksu Authorize.net-maksuyhdysk\u00e4yt\u00e4v\u00e4n avulla PHP: ss\u00e4\">Hyv\u00e4ksy luottokorttimaksu Authorize.net-maksuyhdysk\u00e4yt\u00e4v\u00e4n avulla PHP: ss\u00e4<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/opas-raidan-integrointiin-php-n-verkkosivustoon\/\" title=\"Opas raidan integrointiin PHP: n verkkosivustoon\">Opas raidan integrointiin PHP: n verkkosivustoon<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>T\u00e4ss\u00e4 viestiss\u00e4 n\u00e4yt\u00e4mme kuinka integroida PayPal-maksuyhdysk\u00e4yt\u00e4v\u00e4 PHP: hen k\u00e4ytt\u00e4m\u00e4ll\u00e4 PayPal REST -sovellusliittym\u00e4\u00e4. PayPalin avulla voit hyv\u00e4ksy\u00e4 maksun asiakkailtasi verkossa<\/p>\n","protected":false},"author":1,"featured_media":20134,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[275],"tags":[843],"class_list":["post-26115","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-6","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts\/26115","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/comments?post=26115"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts\/26115\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/media\/20134"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/media?parent=26115"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/categories?post=26115"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/tags?post=26115"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}