{"id":24638,"date":"2021-05-22T17:23:00","date_gmt":"2021-05-22T14:23:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=24638"},"modified":"2021-10-17T20:44:42","modified_gmt":"2021-10-17T17:44:42","slug":"stripe-payment-gateway-integraatio-laravelissa","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/fi\/stripe-payment-gateway-integraatio-laravelissa\/","title":{"rendered":"Stripe Payment Gateway -integraatio Laravelissa"},"content":{"rendered":"<p>Jos sinulla on verkkokauppa tai jonkinlainen maksullinen palvelu, sinun on todenn\u00e4k\u00f6isesti hyv\u00e4ksytt\u00e4v\u00e4 luottokorttimaksut sovelluksessasi. <a href=\"https:\/\/stripe.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Stripe<\/a> on yksi suosituimmista maksuyhdysk\u00e4yt\u00e4vist\u00e4, joka hyv\u00e4ksyy luotto- tai maksukorttimaksut verkossa. Lis\u00e4ksi k\u00e4ytt\u00e4j\u00e4n ei tarvitse poistua verkkosivustoltasi maksamaan kortilla. T\u00e4ss\u00e4 artikkelissa tutkitaan Stripe-maksuyhdysk\u00e4yt\u00e4v\u00e4n integraatiota Laravelissa.<\/p>\n<p>Stripe-yhdysk\u00e4yt\u00e4v\u00e4n integroimiseksi Laraveliin aiomme k\u00e4ytt\u00e4\u00e4 kehitt\u00e4jien suosittua <a href=\"https:\/\/github.com\/thephpleague\/omnipay\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Omnipay-<\/a> kirjastoa. Joten aloitetaan integroinnistamme ilman viivytyksi\u00e4.<\/p>\n<h3>Hanki API-avaimet raitojen integrointia varten<\/h3>\n<p>Aluksi sinun on luotava <a href=\"https:\/\/dashboard.stripe.com\/login\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Stripe-tili,<\/a> jos sinulla ei viel\u00e4 ole sit\u00e4. Stripe-yhdysk\u00e4yt\u00e4v\u00e4n integroimiseksi sinun on ensin napattava salainen ja julkaistava avain. Saat n\u00e4m\u00e4 avaimet <strong>Kehitt\u00e4j\u00e4t-&gt; API-avaimet<\/strong> -sivulta.<\/p>\n<p>On aina suositeltavaa testata verkkotapahtumat ensin hiekkalaatikkoavaimilla, ja jos kaikki toimii hyvin, valitse live-avaimet.<\/p>\n<h3>Laravelin perusasetukset raitojen integrointia varten<\/h3>\n<p>Ennen kuin aloitat verkkomaksujen hyv\u00e4ksymisen Stripella, sinun on suoritettava perusasetukset. Tarvitsemme juoviavaimia API-integraation aikana, joten lis\u00e4\u00e4 n\u00e4m\u00e4 avaimet <code>.env<\/code>tiedostoon.<\/p>\n<pre><code>STRIPE_PUBLISHABLE_KEY=PASTE_PUBLISHABLE_KEY\nSTRIPE_SECRET_KEY=PASTE_SECRET_KEY\nSTRIPE_CURRENCY=USD<\/code><\/pre>\n<p>Aina kun lis\u00e4t\u00e4\u00e4n uusia vakioita ymp\u00e4rist\u00f6tiedostoon, meid\u00e4n on suoritettava alla oleva komento tyhjent\u00e4m\u00e4\u00e4n m\u00e4\u00e4ritysv\u00e4limuisti.<\/p>\n<pre><code>php artisan config:cache<\/code><\/pre>\n<p>Verkkomaksujen osalta transaktiotiedot tulisi tallentaa tietokantaan. Luo t\u00e4t\u00e4 varten siirto komennolla:<\/p>\n<pre><code>php artisan make:migration create_payments_table<\/code><\/pre>\n<p>Muokkaa siirtotiedostossa <code>up<\/code>menetelm\u00e4\u00e4 seuraavasti:<\/p>\n<pre><code>public function up()\n{\n\u00a0\u00a0\u00a0\u00a0Schema::create('payments', function (Blueprint $table) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;bigIncrements('id');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;string('payment_id');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;string('payer_email');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;float('amount', 10, 2);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;string('currency');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;string('payment_status');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;timestamps();\n\u00a0\u00a0\u00a0\u00a0});\n}<\/code><\/pre>\n<p>Suorita seuraavaksi seuraava komento suorittaaksesi siirron.<\/p>\n<pre><code>php artisan migrate<\/code><\/pre>\n<p>Tarvitsemme HTML-lomakkeen, johon k\u00e4ytt\u00e4j\u00e4 voi sy\u00f6tt\u00e4\u00e4 korttinsa ja muut tiedot. Luo <code>payment.blade.php<\/code>tiedosto ja lis\u00e4\u00e4 siihen alla oleva koodi.<\/p>\n<pre><code>&lt;link rel=\"stylesheet\" href=\"{{ asset('\/css\/style.css') }}\" \/&gt;\n&lt;script src=\"https:\/\/js.stripe.com\/v3\/\"&gt;&lt;\/script&gt;\n&lt;form action=\"{{ url('charge') }}\" 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;p&gt;&lt;input type=\"text\" name=\"amount\" placeholder=\"Enter Amount\" \/&gt;&lt;\/p&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;p&gt;&lt;input type=\"email\" name=\"email\" placeholder=\"Enter Email\" \/&gt;&lt;\/p&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\u00a0\u00a0\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\u00a0\u00a0\u00a0\u00a0{{ csrf_field() }}\n&lt;\/form&gt;\n&lt;script&gt;\nvar publishable_key = '{{ env('STRIPE_PUBLISHABLE_KEY') }}';\n&lt;\/script&gt;\n&lt;script src=\"{{ asset('\/js\/card.js') }}\"&gt;&lt;\/script&gt;<\/code><\/pre>\n<p>Ter\u00e4tiedostoon sis\u00e4llytimme CSS- ja JS-tiedostot suoraan. Voit sis\u00e4llytt\u00e4\u00e4 sen toisella tavalla projektivirtauksen mukaan. M\u00e4\u00e4rit\u00e4 lopuksi reitit seuraavasti.<\/p>\n<p><strong>reitit \/ web.php<\/strong><\/p>\n<pre><code>Route::get('\/payment', 'PaymentController@index');\nRoute::post('\/charge', 'PaymentController@charge');<\/code><\/pre>\n<p>Luomme ohjaimen <code>PaymentController<\/code>seuraavissa vaiheissa.<\/p>\n<h3>Luo raitakortin elementtej\u00e4<\/h3>\n<p>Stripe tarjoaa omat valmiiksi asennetut k\u00e4ytt\u00f6liittym\u00e4komponentit, jotka ker\u00e4\u00e4v\u00e4t asiakaskorttitietoja turvallisesti k\u00e4sittelem\u00e4tt\u00e4 arkaluontoisia tietoja. Kortin tiedot muunnetaan Tokeniksi, joka on sitten l\u00e4hetett\u00e4v\u00e4 palvelimillesi. T\u00e4m\u00e4n &#8217;tunnuksen&#8217; avulla voit ladata asiakkaita. T\u00e4m\u00e4 on turvallinen tapa, koska sovelluksesi ei tarvitse tallentaa tai olla vuorovaikutuksessa asiakaskorttitietojen kanssa.<\/p>\n<p>Olet ehk\u00e4 huomannut sis\u00e4llytetyn <code>card.js<\/code>tiedoston ter\u00e4tiedostossa. Luo t\u00e4m\u00e4 JS-tiedosto julkiseen hakemistoon ja lis\u00e4\u00e4 siihen alla oleva koodi.<\/p>\n<p><strong>js \/ card.js<\/strong><\/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>Ter\u00e4tiedostossa on my\u00f6s <code>style.css<\/code>tiedosto. Luo <code>style.css<\/code>julkisen kansion sis\u00e4ll\u00e4. T\u00e4ll\u00e4 CSS: ll\u00e4 on alla oleva koodi.<\/p>\n<p><strong>css \/ style.css<\/strong><\/p>\n<pre><code>.StripeElement {\n\u00a0\u00a0\u00a0\u00a0box-sizing: border-box;\n\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0height: 40px;\n\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0padding: 10px 12px;\n\u00a0\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\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>Stripe tarjoaa erilaisia \u200b\u200bk\u00e4ytt\u00f6liittym\u00e4elementtej\u00e4 luottokorttitietoja sis\u00e4lt\u00e4v\u00e4n kassalomakkeen rakentamiseen. Lue lis\u00e4\u00e4 heid\u00e4n <a href=\"https:\/\/stripe.com\/en-in\/payments\/elements\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">dokumentaatiosta<\/a>.<\/p>\n<h3>Stripe Payment Gateway -integraatio Laravelissa<\/h3>\n<p>Asetimme kaikki tarvittavalla kokoonpanolla. Nyt voimme menn\u00e4 eteenp\u00e4in ja integroida Stripe-maksuyhdysk\u00e4yt\u00e4v\u00e4n Laraveliin. Asenna Omnipay-kirjasto projektiisi suorittamalla alla oleva komento.<\/p>\n<pre><code>composer require league\/omnipay omnipay\/stripe<\/code><\/pre>\n<p>Jos haluat kutsua korttitiedoston ja veloittaa tapahtuman, luo <code>PaymentController<\/code>artisan-komento:<\/p>\n<pre><code>php artisan make:controller PaymentController<\/code><\/pre>\n<p>Koska meid\u00e4n pit\u00e4isi tallentaa tapahtumien yksityiskohdat tietokantaan, luo malli, <code>Payment<\/code>joka liittyy tietokannan maksutaulukkoon.<\/p>\n<pre><code>php artisan make:model Payment<\/code><\/pre>\n<p>Lopuksi, <code>PaymentController.php<\/code>sinulla on seuraava koodi, joka veloittaa tapahtuman ja lis\u00e4\u00e4 tapahtuman tiedot tietokantaan.<\/p>\n<p><strong>PaymentController.php<\/strong><\/p>\n<pre><code>&lt;?php\n\u00a0\u00a0\nnamespace AppHttpControllers;\n\u00a0\u00a0\nuse IlluminateHttpRequest;\nuse OmnipayOmnipay;\nuse AppModelsPayment;\n\u00a0\u00a0\nclass PaymentController extends Controller\n{\n\u00a0\u00a0\u00a0\u00a0public function index()\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return view('payment');\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0public function charge(Request $request)\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if ($request-&gt;input('stripeToken')) {\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$gateway = Omnipay::create('Stripe');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$gateway-&gt;setApiKey(env('STRIPE_SECRET_KEY'));\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$token = $request-&gt;input('stripeToken');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\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\u00a0\u00a0\u00a0\u00a0'amount' =&gt; $request-&gt;input('amount'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'currency' =&gt; env('STRIPE_CURRENCY'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'token' =&gt; $token,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0])-&gt;send();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if ($response-&gt;isSuccessful()) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ payment was successful: insert transaction data into the database\n\u00a0\u00a0\u00a0\u00a0\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\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$isPaymentExist = Payment::where('payment_id', $arr_payment_data['id'])-&gt;first();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if(!$isPaymentExist)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$payment = new Payment;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$payment-&gt;payment_id = $arr_payment_data['id'];\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$payment-&gt;payer_email = $request-&gt;input('email');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$payment-&gt;amount = $arr_payment_data['amount']\/100;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$payment-&gt;currency = env('STRIPE_CURRENCY');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$payment-&gt;payment_status = $arr_payment_data['status'];\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$payment-&gt;save();\n\u00a0\u00a0\u00a0\u00a0\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\u00a0\u00a0\u00a0\u00a0\u00a0return \"Payment is successful. Your payment id is: \". $arr_payment_data['id'];\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} else {\n\u00a0\u00a0\u00a0\u00a0\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\u00a0\u00a0\u00a0\u00a0\u00a0return $response-&gt;getMessage();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Hiekkalaatikkotilassa Stripe tarjoaa <a href=\"https:\/\/stripe.com\/docs\/testing\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">nuken luottokortit<\/a> tapahtuman testaamiseksi.<\/p>\n<p>Kun olet testannut hiekkalaatikkotilan, vaihda testattavat API-avaimet live-avaimiin ja sovelluksesi alkaa hyv\u00e4ksy\u00e4 todellisia maksuja automaattisesti.<\/p>\n<p>Se siit\u00e4! Starpe-maksuyhdysk\u00e4yt\u00e4v\u00e4n integrointi Laravelissa on valmis. Haluaisin kuulla ajatuksesi ja ehdotuksesi alla olevassa kommenttiosassa.<\/p>\n<h4>Aiheeseen liittyv\u00e4t artikkelit<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/paypal-maksuyhdyskaytavan-integrointi-laravelissa\/\" title=\"PayPal-maksuyhdysk\u00e4yt\u00e4v\u00e4n integrointi Laravelissa\">PayPal-maksuyhdysk\u00e4yt\u00e4v\u00e4n integrointi Laravelissa<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/authorize-net-payment-gateway-integraatio-laravelissa\/\" title=\"Authorize.Net Payment Gateway -integraatio Laravelissa\">Authorize.Net Payment Gateway -integraatio Laravelissa<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/paykun-maksuyhdyskaytavan-integrointi-laravelissa\/\" title=\"PayKun-maksuyhdysk\u00e4yt\u00e4v\u00e4n integrointi Laravelissa\">PayKun-maksuyhdysk\u00e4yt\u00e4v\u00e4n integrointi Laravelissa<\/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 artikkelissa tutkitaan Stripe Payment Gateway -integrointia Laravelissa. Stripe-yhdysk\u00e4yt\u00e4v\u00e4n avulla k\u00e4ytt\u00e4j\u00e4 voi hyv\u00e4ksy\u00e4 luottokorttimaksut<\/p>\n","protected":false},"author":1,"featured_media":20112,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[499],"tags":[843],"class_list":["post-24638","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts\/24638","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=24638"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts\/24638\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/media\/20112"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/media?parent=24638"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/categories?post=24638"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/tags?post=24638"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}