{"id":26350,"date":"2021-06-17T14:02:00","date_gmt":"2021-06-17T11:02:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=26350"},"modified":"2021-10-17T18:16:06","modified_gmt":"2021-10-17T15:16:06","slug":"juhend-triipude-integreerimiseks-veebisaidile-koos-php-ga","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/et\/juhend-triipude-integreerimiseks-veebisaidile-koos-php-ga\/","title":{"rendered":"Juhend triipude integreerimiseks veebisaidile koos PHP-ga"},"content":{"rendered":"<p>Kui teil on veebileht, kogute veebimakseid, siis ilmselt kuulsite <strong>Stripe Payment Gateway kohta<\/strong>. Stripe&#8217;i abil saab makse vastu v\u00f5tta krediit- v\u00f5i deebetkaardiga. See on mugavam viis klientide jaoks veebis maksmiseks. Selles artiklis uurime Stripe&#8217;i integreerimist veebisaidile PHP-ga.<\/p>\n<h3>Miks peaks kasutama ribade maksmise l\u00fc\u00fcsi?<\/h3>\n<p><a href=\"https:\/\/stripe.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Stripe<\/a> on \u00fcks populaarsemaid ja turvalisemaid maksel\u00fc\u00fcse Internetis. Stripe&#8217;i maksete puhul on kasutaja kaardi andmed alati ohutud. Tegelikult pakuvad Stripe kassas genereeritud elemendid, kuhu kasutaja peab sisestama kaardi \u00fcksikasjad. Kaardi \u00fcksikasjade sisestamiseks genereerib Stripe k\u00e4itamise ajal, mis muudab selle l\u00fc\u00fcsi turvalisemaks.<\/p>\n<p>P\u00e4rast kaardi andmete sisestamist genereerib Stripe m\u00e4rgi, mida kasutatakse kaardimakse tasumiseks. Seet\u00f5ttu pole kaardi andmeid \u00fcldse vaja salvestada.<\/p>\n<p>Sellest hoolimata heidame pilgu Stripe&#8217;i integreerimisele veebisaidile, kasutades PHP-d.<\/p>\n<h3>Hankige ribade integreerimise API-v\u00f5tmed<\/h3>\n<p>Alustamiseks peaks teil olema <a href=\"https:\/\/dashboard.stripe.com\/login\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Stripe&#8217;i konto<\/a>. Stripe&#8217;i l\u00fc\u00fcsi rakendusse integreerimiseks peate hankima oma Stripe&#8217;i salajase v\u00f5tme ja avaldatava v\u00f5tme.<\/p>\n<p>Logige sisse oma Stripe juhtpaneelile. Need v\u00f5tmed saate <strong>arendajatelt -&gt; API v\u00f5tmed<\/strong>. Soovitan k\u00f5igepealt testida maksetehinguid testre\u017eiimiga. Kui k\u00f5ik t\u00f6\u00f6tab h\u00e4sti, siis minge reaalajas re\u017eiimi. Haarake testimisre\u017eiimi jaoks API v\u00f5tmed.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20173-6081c7d230f6d.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-20173-6081c7d230f6d.png\" alt=\"Juhend triipude integreerimiseks veebisaidile koos PHP-ga\" ><\/a><\/p>\n<h3>Stripe Checkouti vorm<\/h3>\n<p>Alati, kui integreerime veebisaidile maksel\u00fc\u00fcsi, peame salvestama tehingu \u00fcksikasjad andmebaasi. Nii et loome <code>payments<\/code>tabeli, kasutades allpool olevat SQL-p\u00e4ringut.<\/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`amount` float(10,2) NOT NULL,\n\u00a0`currency` varchar(255) NOT NULL,\n\u00a0`payment_status` varchar(255) NOT NULL,\n\u00a0`captured_at` datetime NOT NULL DEFAULT current_timestamp(),\n\u00a0PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;<\/code><\/pre>\n<p>J\u00e4rgmisena looge kassavorm. Nagu ma varem mainisin, genereerib Stripe teile kaardi elemendid. Need elemendid genereeritakse kassasse vormingus <a href=\"https:\/\/stripe.com\/docs\/payments\/cards\/collecting\/web\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Stripe dokumentatsiooni<\/a> j\u00e4rgides .<\/p>\n<p>Looge <code>index.html<\/code>fail ja asetage sellesse allolev kood.<\/p>\n<pre><code>&lt;link rel=\"stylesheet\" href=\"style.css\" \/&gt;\n&lt;script src=\"https:\/\/js.stripe.com\/v3\/\"&gt;&lt;\/script&gt;\n&lt;form action=\"charge.php\" method=\"post\" id=\"payment-form\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;div class=\"form-row\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input type=\"text\" name=\"amount\" placeholder=\"Enter Amount\" \/&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;label for=\"card-element\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Credit or debit card\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/label&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div id=\"card-element\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;!-- A Stripe Element will be inserted here. --&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;!-- Used to display form errors. --&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div id=\"card-errors\" role=\"alert\"&gt;&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;button&gt;Submit Payment&lt;\/button&gt;\n&lt;\/form&gt;\n&lt;script src=\"card.js\"&gt;&lt;\/script&gt;<\/code><\/pre>\n<p>Lisage vormile m\u00f5ni stiil, kasutades <code>style.css<\/code>failis allolevat koodi .<\/p>\n<pre><code>.StripeElement {\n\u00a0\u00a0\u00a0\u00a0box-sizing: border-box;\n\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0height: 40px;\n\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0padding: 10px 12px;\n\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0border: 1px solid transparent;\n\u00a0\u00a0\u00a0\u00a0border-radius: 4px;\n\u00a0\u00a0\u00a0\u00a0background-color: white;\n\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0box-shadow: 0 1px 3px 0 #e6ebf1;\n\u00a0\u00a0\u00a0\u00a0-webkit-transition: box-shadow 150ms ease;\n\u00a0\u00a0\u00a0\u00a0transition: box-shadow 150ms ease;\n}\n\u00a0\u00a0\n.StripeElement--focus {\n\u00a0\u00a0\u00a0\u00a0box-shadow: 0 1px 3px 0 #cfd7df;\n}\n\u00a0\u00a0\n.StripeElement--invalid {\n\u00a0\u00a0\u00a0\u00a0border-color: #fa755a;\n}\n\u00a0\u00a0\n.StripeElement--webkit-autofill {\n\u00a0\u00a0\u00a0\u00a0background-color: #fefde5 !important;\n}<\/code><\/pre>\n<p>P\u00e4rast seda peate kaardi elemendi ja stripeToken loomiseks lisama <code>card.js<\/code>faili j\u00e4rgmise JavaScripti koodi. See JavaScripti kood kinnitab ka kaardi \u00fcksikasju.<\/p>\n<pre><code>\/\/ Create a Stripe client.\nvar stripe = Stripe('PUBLISHABLE_KEY');\n\u00a0\u00a0\n\/\/ Create an instance of Elements.\nvar elements = stripe.elements();\n\u00a0\u00a0\n\/\/ Custom styling can be passed to options when creating an Element.\n\/\/ (Note that this demo uses a wider set of styles than the guide below.)\nvar style = {\n\u00a0\u00a0\u00a0\u00a0base: {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0color: '#32325d',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0fontFamily: '\"Helvetica Neue\", Helvetica, sans-serif',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0fontSmoothing: 'antialiased',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0fontSize: '16px',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'::placeholder': {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0color: '#aab7c4'\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0},\n\u00a0\u00a0\u00a0\u00a0invalid: {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0color: '#fa755a',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0iconColor: '#fa755a'\n\u00a0\u00a0\u00a0\u00a0}\n};\n\u00a0\u00a0\n\/\/ Create an instance of the card Element.\nvar card = elements.create('card', {style: style});\n\u00a0\u00a0\n\/\/ Add an instance of the card Element into the `card-element` &lt;div&gt;.\ncard.mount('#card-element');\n\u00a0\u00a0\n\/\/ Handle real-time validation errors from the card Element.\ncard.addEventListener('change', function(event) {\n\u00a0\u00a0\u00a0\u00a0var displayError = document.getElementById('card-errors');\n\u00a0\u00a0\u00a0\u00a0if (event.error) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0displayError.textContent = event.error.message;\n\u00a0\u00a0\u00a0\u00a0} else {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0displayError.textContent = '';\n\u00a0\u00a0\u00a0\u00a0}\n});\n\u00a0\u00a0\n\/\/ Handle form submission.\nvar form = document.getElementById('payment-form');\nform.addEventListener('submit', function(event) {\n\u00a0\u00a0\u00a0\u00a0event.preventDefault();\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0stripe.createToken(card).then(function(result) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (result.error) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Inform the user if there was an error.\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0var errorElement = document.getElementById('card-errors');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0errorElement.textContent = result.error.message;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} else {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Send the token to your server.\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0stripeTokenHandler(result.token);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0});\n});\n\u00a0\u00a0\n\/\/ Submit the form with the token ID.\nfunction stripeTokenHandler(token) {\n\u00a0\u00a0\u00a0\u00a0\/\/ Insert the token ID into the form so it gets submitted to the server\n\u00a0\u00a0\u00a0\u00a0var form = document.getElementById('payment-form');\n\u00a0\u00a0\u00a0\u00a0var hiddenInput = document.createElement('input');\n\u00a0\u00a0\u00a0\u00a0hiddenInput.setAttribute('type', 'hidden');\n\u00a0\u00a0\u00a0\u00a0hiddenInput.setAttribute('name', 'stripeToken');\n\u00a0\u00a0\u00a0\u00a0hiddenInput.setAttribute('value', token.id);\n\u00a0\u00a0\u00a0\u00a0form.appendChild(hiddenInput);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\/\/ Submit the form\n\u00a0\u00a0\u00a0\u00a0form.submit();\n}<\/code><\/pre>\n<p>Peate asendama kohahoidja PUBLISHABLE_KEY \u00fclaltoodud koodis oleva tegeliku v\u00f5tmega.<\/p>\n<p>Olen vormile lisanud juhusliku stiili. Vormikujundust saate kohandada oma veebisaidile sobivaks. Lisaks pakub Stripe kaardi elementide erinevat kujundust. Lisateavet selle kohta leiate <a href=\"https:\/\/stripe.com\/payments\/elements\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">dokumentatsioonist<\/a>.<\/p>\n<p>Kui kasutaja esitab kaardi \u00fcksikasjadega vormi, genereerib Stripe taustal m\u00e4rgi, mis m\u00e4\u00e4ratakse varjatud v\u00e4ljaks \u201etoken&quot;. Seda m\u00e4rki kasutatakse kaardimakse tasumiseks Stripe SDK abil.<\/p>\n<p>Postitame vormiandmed <code>charge.php<\/code>. Selles PHP-failis v\u00f5tame kaardilt tasu ja teostame makse.<\/p>\n<h3>Triipude integreerimine Omnipayga PHP-s<\/h3>\n<p>Me k\u00f5ik seadistasime p\u00f5hikonfiguratsiooniga. Kaardimakse tasumiseks installige n\u00fc\u00fcd <a href=\"https:\/\/github.com\/thephpleague\/omnipay-stripe\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Omnipay Stripe&#8217;i teek<\/a>. Avage terminal oma projekti juurkataloogis ja k\u00e4ivitage j\u00e4rgmine k\u00e4sk:<\/p>\n<pre><code>composer require league\/omnipay omnipay\/stripe<\/code><\/pre>\n<p>Teegi installimisel looge fail config.php ning l\u00e4htestage makseobjekti ja andmebaasi \u00fchendus.<\/p>\n<pre><code>&lt;?php\nrequire_once \"vendor\/autoload.php\";\n\u00a0\u00a0\nuse OmnipayOmnipay;\n\u00a0\u00a0\u00a0\n\/\/ Connect with the database \n$db = new mysqli('MYSQL_HOST', 'MYSQL_DB_USERNAME', 'MYSQL_DB_PASSWORD', 'MYSQL_DB_NAME');\n\u00a0\u00a0\u00a0\u00a0\nif ($db-&gt;connect_errno) {\n\u00a0\u00a0\u00a0\u00a0die(\"Connect failed: \". $db-&gt;connect_error);\n}\n\u00a0\u00a0\u00a0\n$gateway = Omnipay::create('Stripe');\n$gateway-&gt;setApiKey('SECRET_KEY_HERE');<\/code><\/pre>\n<p>Asendage k\u00f5ik kohahoidjad tegelike v\u00e4\u00e4rtustega. J\u00e4rgmisena <code>charge.php<\/code>kirjutage kood j\u00e4rgmiselt.<\/p>\n<pre><code>&lt;?php\nrequire_once \"config.php\";\n\u00a0\u00a0\u00a0\nif (isset($_POST['stripeToken']) &amp;&amp; !empty($_POST['stripeToken'])) {\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0try {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$token = $_POST['stripeToken'];\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$response = $gateway-&gt;purchase([\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; 'USD',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'token' =&gt; $token,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0])-&gt;send();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if ($response-&gt;isSuccessful()) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ payment was successful: update database\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$arr_payment_data = $response-&gt;getData();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$payment_id = $arr_payment_data['id'];\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$amount = $_POST['amount'];\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Insert transaction data into the database\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$isPaymentExist = $db-&gt;query(\"SELECT * FROM payments WHERE payment_id = '\".$payment_id.\"'\");\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\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\u00a0\u00a0\u00a0\u00a0$insert = $db-&gt;query(\"INSERT INTO payments(payment_id, amount, currency, payment_status) VALUES('$payment_id', '$amount', 'USD', 'Captured')\");\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"Payment is successful. Your payment id is: \". $payment_id;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} else {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ payment failed: display message to customer\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>Kodeerimisosaga oleme valmis. J\u00e4tkake ja proovige liivakasti makseid. Stripe annab makse testimiseks n\u00e4ivkaardi <a href=\"https:\/\/stripe.com\/docs\/testing\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">andmed<\/a>.<\/p>\n<p>Alati, kui otsustasite otse\u00fclekande alustada, peate lihtsalt muutma oma salajast ja avaldatavat v\u00f5tit koos reaalajas volitustega.<\/p>\n<p>Loodan, et v\u00f5ite Stripe&#8217;i integreerimise kohta \u00f5ppida PHP-ga veebisaidil. Tahaksin kuulda teie m\u00f5tteid ja ettepanekuid allpool olevas kommentaaride jaotises.<\/p>\n<h4>seotud artiklid<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/et\/paypali-makseluusi-integreerimine-php-s-kasutades-paypal-rest-api-d\/\" title=\"PayPali maksel\u00fc\u00fcsi integreerimine PHP-s, kasutades PayPal REST API-d\">PayPali maksel\u00fc\u00fcsi integreerimine PHP-s, kasutades PayPal REST API-d<\/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\/korduvate-maksete-seadistamine-saidil-authorize-net\/\" title=\"Korduvate maksete seadistamine saidil Authorize.net\">Korduvate maksete seadistamine saidil Authorize.net<\/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>Kas otsite Stripe&#8217;i integreerimist oma veebisaidil? Stripe&#8217;i abil saab maksta veebis krediit- v\u00f5i deebetkaartidega. Selles artiklis n\u00e4itame teile, kuidas aktsepteerida kaardimakseid Stripe with PHP abil oma veebisaidil.<\/p>\n","protected":false},"author":1,"featured_media":21618,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[274],"tags":[842],"class_list":["post-26350","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\/26350","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=26350"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/posts\/26350\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/media\/21618"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/media?parent=26350"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/categories?post=26350"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/tags?post=26350"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}