{"id":26422,"date":"2021-06-21T10:17:00","date_gmt":"2021-06-21T07:17:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=26422"},"modified":"2021-10-17T18:14:29","modified_gmt":"2021-10-17T15:14:29","slug":"paypali-makseluusi-integreerimine-php-s-kasutades-paypal-rest-api-d","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/et\/paypali-makseluusi-integreerimine-php-s-kasutades-paypal-rest-api-d\/","title":{"rendered":"PayPali maksel\u00fc\u00fcsi integreerimine PHP-s, kasutades PayPal REST API-d"},"content":{"rendered":"<p>PayPal on \u00fcks usaldusv\u00e4\u00e4rsemaid maksel\u00fc\u00fcse Internetis. Seda kasutatakse veebisaitidel laialdaselt veebis maksmiseks. PayPali API dokumentatsiooni pole aga kerge m\u00f5ista. Arendajal, kes kavatseb PayPali maksel\u00fc\u00fcsi esimest korda integreerida, v\u00f5tab selle \u00f5nnestumine pikki tunde. Veetsin meeletult tunde PayPali API dokumentatsiooni lugedes. Ja m\u00f5istke hiljem, et selle integreerimiseks pole vaja Paypali dokumentatsiooni p\u00f5hjalikult lugeda.<\/p>\n<p>Selles artiklis uurime, kuidas integreerida PayPali maksel\u00fc\u00fcsi PayPal REST API abil. Kasutame Omnipay pakutavat GitHubi teeki. Omnipay on puhas ja lihtne viis erinevate maksel\u00fc\u00fcsi integreerimiseks oma veebirakendusse. Nende koodistruktuur on samuti puhas ja t\u00f5hus. Arendajatele meeldiks see.<\/p>\n<h3>Hankige PayPali kliendi ID ja kliendisaladus<\/h3>\n<p>Veebisaidil PayPali integreerimiseks peate k\u00f5igepealt looma PayPali arendajakontole REST API rakenduse. Kui olete rakenduse loonud, saate kliendi ID ja kliendisaladuse, mis on vajalik j\u00e4rgmistes toimingutes.<\/p>\n<p>REST API rakenduse loomiseks minge oma <a href=\"https:\/\/developer.paypal.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PayPali arendajakontole<\/a> ja logige sisse armatuurlauale.<\/p>\n<p>Kl\u00f5psake arendaja juhtpaneelil men\u00fc\u00fcl \u201eMinu rakendused ja mandaadid&quot;. Kl\u00f5psake jaotises REST API rakendused nuppu Loo rakendus.<\/p>\n<p>J\u00e4rgmisel sammul t\u00e4itke rakenduse nimi ja saate oma kliendi ID ja kliendi saladuse. Minu puhul n\u00e4en alloleval ekraanipildil liivakasti mandaate. Teie puhul v\u00f5ivad need olla reaalsed volitused. V\u00f5i v\u00f5ite proovida ka oma liivakasti mandaate.<\/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=\"PayPali maksel\u00fc\u00fcsi integreerimine PHP-s, kasutades PayPal REST API-d\" ><\/a><\/p>\n<h3>Teegi installimine ja p\u00f5hiline seadistamine<\/h3>\n<p>Nagu ma \u00fctlesin, kasutame PayPal REST API integreerimiseks <a href=\"https:\/\/github.com\/thephpleague\/omnipay-paypal\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Omnipay-<\/a> d. K\u00f5igepealt peame Composeri abil nende teegid installima. Teekide installimiseks k\u00e4ivitage allolev k\u00e4sk.<\/p>\n<pre><code>composer require league\/omnipay omnipay\/paypal<\/code><\/pre>\n<p>P\u00e4rast teegi installimist looge konfiguratsioonifail, kuhu salvestame oma API mandaadid, kirjutame DB-\u00fchenduse ja initsialiseerime l\u00fc\u00fcsi.<\/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>Siin edastasin parameetri &#8216;Paypal_Rest&#8217; Omnipay loomismeetodile. Omnipay taustal kutsub PayPal REST API-d l\u00e4bi selle makse sooritades.<\/p>\n<p>J\u00e4rgmisena looge lihtne vorm, kuhu kasutaja saab summa sisestada. Demo eesm\u00e4rgil hoian lihtsalt \u00fchte v\u00e4lja vormis. Vormi saate vastavalt oma n\u00f5udele pikendada.<\/p>\n<p><strong>vorm.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>Kui makse saab valmis, peaksime salvestama tehingu \u00fcksikasjad andmebaasi tabelisse. Looge andmebaasitabel, k\u00e4ivitades allpool oleva SQL-p\u00e4ringu.<\/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>Selles tabelis pole v\u00f5\u00f5rast v\u00f5tit, kuna see on m\u00f5eldud lihtsalt demo eesm\u00e4rgil. Kasutaja saab sellesse tabelisse lisada veeru user_id, et viidata maksele koos kasutajaga.<\/p>\n<h3>PayPali maksel\u00fc\u00fcsi integreerimine PHP-s, kasutades PayPal REST API-d<\/h3>\n<p>PayPal REST API kasutamisel suunab kasutaja makse l\u00f5puleviimiseks PayPali. P\u00e4rast makse sooritamist suunab kasutaja edukuse v\u00f5i eba\u00f5nnestumise oleku alusel tagasi meie rakendusse. Need URL-id m\u00e4\u00e4ratlesime <code>config.php<\/code>\u00fclalolevas failis.<\/p>\n<p>Kui kasutaja suunab edukuse korral tagasi meie rakendusse, peame makse sooritama meie PHP-failis, mis on <code>success.php<\/code>meie puhul. Samuti salvestame makseteabe p\u00e4rast makse sooritamist PayPal REST API abil. Nii et meie kood on j\u00e4rgmine.<\/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>edu.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>Saatke tooteinfo PayPalile<\/h3>\n<p>\u00dclaltoodud koodis saadame maksmisele kuuluva summa PayPalis. Samuti v\u00f5ite saata tooteinfot. Teie kliendid n\u00e4evad enne makse sooritamist neid toote \u00fcksikasju makselehel.<\/p>\n<p>Tooteteabe saatmiseks peate massiivi &quot;items&quot; edastama <code>purchase<\/code>\u00a0meetodile j\u00e4rgmiselt.<\/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>Siin olen toote \u00fcksikasjad staatiliselt edastanud. Peaksite selle muutma d\u00fcnaamiliseks olenevalt tootest.<\/p>\n<p>Loodan, et saite teada PayPali maksel\u00fc\u00fcsi integreerimisest PHP-s. Tahaksin kuulda teie m\u00f5tteid v\u00f5i ettepanekuid allpool olevas kommentaaride jaotises.<\/p>\n<h4>seotud artiklid<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/et\/aktsepteerige-krediitkaardimakseid-php-s-paypal-payments-pro-abil\/\" title=\"Aktsepteerige krediitkaardimakseid PHP-s PayPal Payments Pro abil\">Aktsepteerige krediitkaardimakseid PHP-s PayPal Payments Pro abil<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/et\/noustuge-krediitkaardimaksega-kasutades-php-s-authorize-net-payment-gateway-i\/\" title=\"Krediitkaardimakse aktsepteerimine PHP-s Authorize.net Payment Gateway abil\">Krediitkaardimakse aktsepteerimine PHP-s Authorize.net Payment Gateway abil<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/et\/juhend-triipude-integreerimiseks-veebisaidile-koos-php-ga\/\" title=\"Juhend triipude integreerimiseks veebisaidile koos PHP-ga\">Juhend triipude integreerimiseks veebisaidile koos PHP-ga<\/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>Selles postituses n\u00e4itame, kuidas PayPali maksel\u00fc\u00fcsi PHP-sse integreerida PayPal REST API abil. PayPali kasutades saate oma klientidelt tasuda veebis<\/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":[274],"tags":[842],"class_list":["post-26422","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-5","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/posts\/26422","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/comments?post=26422"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/posts\/26422\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/media\/20134"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/media?parent=26422"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/categories?post=26422"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/tags?post=26422"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}