{"id":25000,"date":"2021-05-29T14:06:00","date_gmt":"2021-05-29T11:06:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=25000"},"modified":"2021-10-17T20:33:41","modified_gmt":"2021-10-17T17:33:41","slug":"paypal-payments-pro-integraatio-laravelissa","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/fi\/paypal-payments-pro-integraatio-laravelissa\/","title":{"rendered":"PayPal Payments Pro -integraatio Laravelissa"},"content":{"rendered":"<p>Olen kirjoittanut artikkelin, joka <a href=\"https:\/\/themewp.inform.click\/fi\/hyvaksy-luottokorttimaksut-php-n-paypal-payments-prolla\/\" title=\"hyv\u00e4ksyy luottokorttimaksut PayPal Payments Prolla PHP: ss\u00e4\" >hyv\u00e4ksyy luottokorttimaksut PayPal Payments Prolla PHP: ss\u00e4<\/a>. Yksi lukijoista kysyi minulta, kuinka tehd\u00e4 sama integraatio Laravelissa. Vaikka Laravel on kirjoitettu PHP-muodossa kirjoittaessasi koodia Laravelille, sinun on noudatettava heid\u00e4n standardejaan. Aloittelijoille on usein vaikeaa muuntaa tavallista PHP-koodia Laravelissa.<\/p>\n<p>T\u00e4ss\u00e4 artikkelissa tutkitaan kuinka integroida PayPal Payments Pro ja hyv\u00e4ksy\u00e4 luottokorttimaksut Laravelissa.<\/p>\n<p>Jos sinulla on verkkokauppa, j\u00e4senyyssivusto tai jotain muuta, josta haluat ker\u00e4t\u00e4 verkkomaksuja, PayPal on turvallinen vaihtoehto. PayPal Payments Prolla voit hyv\u00e4ksy\u00e4 online-luottokorttimaksut, jotka menev\u00e4t suoraan PayPal-tilillesi.<\/p>\n<p>Pid\u00e4 muistiinpanoa kirjoittaessasi t\u00e4t\u00e4 artikkelia. PayPal Payments Pro on saatavana kauppiaille Yhdysvalloissa, Isossa-Britanniassa ja Kanadassa.<\/p>\n<h3>P\u00e4\u00e4st\u00e4 alkuun<\/h3>\n<p>Aloittamiseksi sinun on hankittava PayPal-sovellusliittym\u00e4n kirjautumistiedot. Maksujen testaaminen hiekkalaatikkotilassa on aina hyv\u00e4 tapa. Jos kaikki toimii odotetulla tavalla, suorita maksu.<\/p>\n<p>Hanki hiekkalaatikkotietosi kirjautumalla <a href=\"https:\/\/developer.paypal.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PayPal Developer<\/a> -tilille. Siirry <strong>sis\u00e4\u00e4nkirjautumisen<\/strong> j\u00e4lkeen vasemmanpuoleisesta valikosta kohtaan <strong>SANDBOX-&gt; Tilit<\/strong> ja luo yritystili.<\/p>\n<p>Kun sinulla on yritystili, p\u00e4ivit\u00e4 tilisi tyyppi Business-Pro: ksi. PayPal Payments Pro -integraatio vaatii Business-Pro-tilityypin. Napsauta P\u00e4ivit\u00e4 Pro -linkki\u00e4 ja PayPal muuntaa tilisi tyypin Business-Pro-muotoon.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20427-6081efe66b74b.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-20427-6081efe66b74b.png\" alt=\"PayPal Payments Pro -integraatio Laravelissa\" ><\/a><\/p>\n<p>Napsauta sitten &#8217;API Credentials&#8217; -v\u00e4lilehte\u00e4 ja kopioi tunnuksesi.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20427-6081efe6b9358.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-20427-6081efe6b9358.png\" alt=\"PayPal Payments Pro -integraatio Laravelissa\" ><\/a><\/p>\n<p>Avaa <code>.env<\/code>Laravel-projektisi ja lis\u00e4\u00e4 kopioidut tunnistetiedot siihen.<\/p>\n<pre><code>PAYPAL_API_USERNAME=\nPAYPAL_API_PASSWORD=\nPAYPAL_API_SIGNATURE=<\/code><\/pre>\n<p>Lis\u00e4\u00e4 ohjaimen reitti <code>web.php<\/code>tiedostoon. Minun tapauksessani reitti on seuraava.<\/p>\n<pre><code>Route::resource('payment', 'PaymentController');<\/code><\/pre>\n<p>Aion k\u00e4ytt\u00e4\u00e4 <a href=\"https:\/\/omnipay.thephpleague.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Omnipay-<\/a> kirjastoa, joka tarjoaa helpon tavan integroida maksuyhdysk\u00e4yt\u00e4v\u00e4t. Suorita alla oleva komento, joka asentaa Omnipay-kirjaston.<\/p>\n<pre><code>composer require league\/omnipay:^3 omnipay\/paypal<\/code><\/pre>\n<h3>Luo maksulomake<\/h3>\n<p>Hyv\u00e4ksyess\u00e4si luottokorttimaksun sinun on annettava k\u00e4ytt\u00e4jille lomake, johon he voivat kirjoittaa korttitietonsa. Suunnittelemme maksulomakkeen t\u00e4m\u00e4n <a href=\"https:\/\/codepen.io\/hswd\/pen\/JYvgBW\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">koodisyljenn\u00e4esimerkin avulla<\/a>.<\/p>\n<p>Luo &#8217;css&#8217; ja &#8217;js&#8217; kansio Laravel-projektin &#8217;public&#8217; -hakemistoon. Kopioi CSS-koodi koodikyn\u00e4st\u00e4 ja lis\u00e4\u00e4 se <code>css\/card.css<\/code>.<\/p>\n<pre><code>@import url(https:\/\/fonts.googleapis.com\/css?family=Roboto:400,900,700,500);\n\u00a0\nbody {\n\u00a0\u00a0padding: 60px 0;\n\u00a0\u00a0background-color: rgba(178,209,229,0.7);\n\u00a0\u00a0margin: 0 auto;\n\u00a0\u00a0width: 600px;\n}\n.body-text {\n\u00a0\u00a0padding: 0 20px 30px 20px;\n\u00a0\u00a0font-family: \"Roboto\";\n\u00a0\u00a0font-size: 1em;\n\u00a0\u00a0color: #333;\n\u00a0\u00a0text-align: center;\n\u00a0\u00a0line-height: 1.2em;\n}\n.form-container {\n\u00a0\u00a0flex-direction: column;\n\u00a0\u00a0justify-content: center;\n\u00a0\u00a0align-items: center;\n}\n.card-wrapper {\n\u00a0\u00a0background-color: #6FB7E9;\n\u00a0\u00a0width: 100%;\n\u00a0\u00a0display: flex;\n\u00a0\n}\n.personal-information {\n\u00a0\u00a0background-color: #3C8DC5;\n\u00a0\u00a0color: #fff;\n\u00a0\u00a0padding: 1px 0;\n\u00a0\u00a0text-align: center;\n}\nh1 {\n\u00a0\u00a0font-size: 1.3em;\n\u00a0\u00a0font-family: \"Roboto\"\n}\ninput {\n\u00a0\u00a0margin: 1px 0;\n\u00a0\u00a0padding-left: 3%;\n\u00a0\u00a0font-size: 14px;\n}\ninput[type=\"text\"]{\n\u00a0\u00a0display: block;\n\u00a0\u00a0height: 50px;\n\u00a0\u00a0width: 97%;\n\u00a0\u00a0border: none;\n}\ninput[type=\"email\"]{\n\u00a0\u00a0display: block;\n\u00a0\u00a0height: 50px;\n\u00a0\u00a0width: 97%;\n\u00a0\u00a0border: none;\n}\ninput[type=\"submit\"]{\n\u00a0\u00a0display: block;\n\u00a0\u00a0height: 60px;\n\u00a0\u00a0width: 100%;\n\u00a0\u00a0border: none;\n\u00a0\u00a0background-color: #3C8DC5;\n\u00a0\u00a0color: #fff;\n\u00a0\u00a0margin-top: 2px;\n\u00a0\u00a0curson: pointer;\n\u00a0\u00a0font-size: 0.9em;\n\u00a0\u00a0text-transform: uppercase;\n\u00a0\u00a0font-weight: bold;\n\u00a0\u00a0cursor: pointer;\n}\ninput[type=\"submit\"]:hover{\n\u00a0\u00a0background-color: #6FB7E9;\n\u00a0\u00a0transition: 0.3s ease;\n}\n#column-left {\n\u00a0\u00a0width: 46.8%;\n\u00a0\u00a0float: left;\n\u00a0\u00a0margin-bottom: 2px;\n}\n#column-right {\n\u00a0\u00a0width: 46.8%;\n\u00a0\u00a0float: right;\n}\n\u00a0\n@media only screen and (max-width: 480px){\n\u00a0\u00a0body {\n\u00a0\u00a0\u00a0\u00a0width: 100%;\n\u00a0\u00a0\u00a0\u00a0margin: 0 auto;\n\u00a0\u00a0}\n\u00a0\u00a0.form-container {\n\u00a0\u00a0\u00a0\u00a0margin: 0 2%;\n\u00a0\u00a0}\n\u00a0\u00a0input {\n\u00a0\u00a0\u00a0\u00a0font-size: 1em;\n\u00a0\u00a0}\n\u00a0\u00a0#input-button {\n\u00a0\u00a0\u00a0\u00a0width: 100%;\n\u00a0\u00a0}\n\u00a0\u00a0#input-field {\n\u00a0\u00a0\u00a0\u00a0width: 96.5%;\n\u00a0\u00a0}\n\u00a0\u00a0h1 {\n\u00a0\u00a0\u00a0\u00a0font-size: 1.2em;\n\u00a0\u00a0}\n\u00a0\u00a0input {\n\u00a0\u00a0\u00a0\u00a0margin: 2px 0;\n\u00a0\u00a0}\n\u00a0\u00a0input[type=\"submit\"]{\n\u00a0\u00a0\u00a0\u00a0height: 50px;\n\u00a0\u00a0}\n\u00a0\u00a0#column-left {\n\u00a0\u00a0\u00a0\u00a0width: 96.5%;\n\u00a0\u00a0\u00a0\u00a0display: block;\n\u00a0\u00a0\u00a0\u00a0float: none;\n\u00a0\u00a0}\n\u00a0\u00a0#column-right {\n\u00a0\u00a0\u00a0\u00a0width: 96.5%;\n\u00a0\u00a0\u00a0\u00a0display: block;\n\u00a0\u00a0\u00a0\u00a0float: none;\n\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Lis\u00e4\u00e4 vastaavasti <code>js\/card.js<\/code>tiedostoon koodikoodin JavaScript-koodi .<\/p>\n<pre><code>$('form').card({\n\u00a0\u00a0\u00a0\u00a0container: '.card-wrapper',\n\u00a0\u00a0\u00a0\u00a0width: 280,\n\u00a0\n\u00a0\u00a0\u00a0\u00a0formSelectors: {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0nameInput: 'input[name=\"first-name\"], input[name=\"last-name\"]'\n\u00a0\u00a0\u00a0\u00a0}\n});<\/code><\/pre>\n<p>Hanki kopio <code>jquery.card.js<\/code>t\u00e4st\u00e4 <a href=\"https:\/\/github.com\/jessepollak\/card\/blob\/master\/dist\/jquery.card.js\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">GitHub-arkistosta<\/a>. Tallenna t\u00e4m\u00e4 tiedosto hakemistoon &#8217;js&#8217;.<\/p>\n<p>Lis\u00e4\u00e4 lopuksi ter\u00e4tiedostoon alla oleva koodi.<\/p>\n<pre><code>&lt;link rel=\"stylesheet\" href=\"{{ asset('css\/card.css') }}\"&gt;\n\u00a0\n&lt;form method=\"POST\" action=\"{{ url('ROUTE_HERE') }}\"&gt;\n\u00a0\u00a0\u00a0\u00a0{{ csrf_field() }}\n\u00a0\u00a0\u00a0\u00a0&lt;div class=\"form-container\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"personal-information\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;h1&gt;Payment Information&lt;\/h1&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt; &lt;!-- end of personal-information --&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input id=\"column-left\" type=\"text\" name=\"first-name\" placeholder=\"First Name\" required=\"required\" \/&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input id=\"column-right\" type=\"text\" name=\"last-name\" placeholder=\"Surname\" required=\"required\" \/&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input id=\"input-field\" type=\"text\" name=\"number\" placeholder=\"Card Number\" required=\"required\" \/&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input id=\"column-left\" type=\"text\" name=\"expiry\" placeholder=\"MM \/ YY\" required=\"required\" \/&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input id=\"column-right\" type=\"text\" name=\"cvc\" placeholder=\"CCV\" required=\"required\" \/&gt;\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"card-wrapper\"&gt;&lt;\/div&gt;\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input id=\"input-field\" type=\"text\" name=\"streetaddress\" required=\"required\" autocomplete=\"on\" maxlength=\"45\" placeholder=\"Streed Address\"\/&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input id=\"column-left\" type=\"text\" name=\"city\" required=\"required\" autocomplete=\"on\" maxlength=\"20\" placeholder=\"City\"\/&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input id=\"column-right\" type=\"text\" name=\"zipcode\" required=\"required\" autocomplete=\"on\" pattern=\"[0-9]*\" maxlength=\"5\" placeholder=\"ZIP code\"\/&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input id=\"input-field\" type=\"email\" name=\"email\" required=\"required\" autocomplete=\"on\" maxlength=\"40\" placeholder=\"Email\"\/&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input id=\"input-field\" type=\"text\" name=\"amount\" required=\"required\" autocomplete=\"on\" maxlength=\"40\" placeholder=\"Amount\"\/&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input id=\"input-button\" name=\"submit\" type=\"submit\" value=\"Submit\"\/&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n&lt;\/form&gt;\n&lt;script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jquery\/3.4.1\/jquery.min.js\"&gt;&lt;\/script&gt;\n&lt;script src=\"{{ asset('js\/jquery.card.js') }}\"&gt;&lt;\/script&gt;\n&lt;script src=\"{{ asset('js\/card.js') }}\"&gt;&lt;\/script&gt;<\/code><\/pre>\n<p>Lis\u00e4sin yll\u00e4 olevaan koodiin CSS: n, JS: n vastaavasta hakemistosta. Sinun on annettava reitin URL-osoite lomaketoiminnolle.<\/p>\n<h3>PayPal Payments Pro -integraatio Laravelissa<\/h3>\n<p>Olemme suorittaneet tarvittavat asetukset luottokorttimaksujen hyv\u00e4ksymiseksi. Nyt ohjaimessa meid\u00e4n on kirjoitettava koodi Omnipayn ohjeiden mukaan. Omnipay tekee kehitt\u00e4j\u00e4n el\u00e4m\u00e4st\u00e4 helppoa. Meid\u00e4n on vain noudatettava heid\u00e4n ohjeitaan, ja he tekev\u00e4t kaiken kovan ty\u00f6n saadakseen maksun kiinni ja palauttamalla lopullisen vastauksen.<\/p>\n<p><strong>PaymentController.php<\/strong><\/p>\n<pre><code>&lt;?php\n\u00a0\nnamespace AppHttpControllers;\n\u00a0\nuse IlluminateHttpRequest;\nuse OmnipayOmnipay;\n\u00a0\nclass PaymentController extends Controller\n{\n\u00a0\n\u00a0\u00a0\u00a0\u00a0public $gateway;\n\u00a0\n\u00a0\u00a0\u00a0\u00a0public function __construct()\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;gateway = Omnipay::create('PayPal_Pro');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;gateway-&gt;setUsername(env('PAYPAL_API_USERNAME'));\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;gateway-&gt;setPassword(env('PAYPAL_API_PASSWORD'));\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;gateway-&gt;setSignature(env('PAYPAL_API_SIGNATURE'));\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;gateway-&gt;setTestMode(true); \/\/ here 'true' is for sandbox. Pass 'false' when go live\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\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\n\u00a0\u00a0\u00a0\u00a0public function store(Request $request)\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$arr_expiry = explode(\"\/\", $request-&gt;input('expiry'));\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$formData = array(\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'firstName' =&gt; $request-&gt;input('first-name'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'lastName' =&gt; $request-&gt;input('last-name'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'number' =&gt; $request-&gt;input('number'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'expiryMonth' =&gt; trim($arr_expiry[0]),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'expiryYear' =&gt; trim($arr_expiry[1]),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'cvv' =&gt; $request-&gt;input('cvc')\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0try {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Send purchase request\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$response = $this-&gt;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; 'USD',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'card' =&gt; $formData\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0])-&gt;send();\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Process response\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if ($response-&gt;isSuccessful()) {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Payment was successful\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$arr_body = $response-&gt;getData();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$amount = $arr_body['AMT'];\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$currency = $arr_body['CURRENCYCODE'];\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$transaction_id = $arr_body['TRANSACTIONID'];\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"Payment of $amount $currency is successful. Your Transaction ID is: $transaction_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\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"Payment failed. \". $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} catch(Exception $e) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo $e-&gt;getMessage();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>T\u00e4\u00e4ll\u00e4 konstruktorissa rakennamme objektin ja v\u00e4lit\u00e4mme sille tunnistetiedot. Kun k\u00e4ytt\u00e4j\u00e4 l\u00e4hett\u00e4\u00e4 lomakkeen, ohjaus siirtyy myym\u00e4l\u00e4menetelm\u00e4\u00e4n. T\u00e4ss\u00e4 menetelm\u00e4ss\u00e4 Omnipay kutsuu PayPal-sovellusliittym\u00e4n taustalla, k\u00e4sittelee maksun ja antaa lopullisen vastauksen.<\/p>\n<p>Mene eteenp\u00e4in ja kokeile sit\u00e4. Koska testaamme maksua hiekkalaatikkotilassa, tarvitset testikortteja. <a href=\"https:\/\/developer.paypal.com\/docs\/classic\/payflow\/payflow-pro\/payflow-pro-testing\/#credit-card-numbers-for-testing\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Napsauta t\u00e4t\u00e4<\/a> saadaksesi nuken luottokorttitiedot. Kun olet l\u00e4hett\u00e4nyt lomakkeen, sinun pit\u00e4isi n\u00e4hd\u00e4 menestysviesti ja tapahtumasi tunnus.<\/p>\n<h3>Hyv\u00e4ksy Live-maksu PayPal Payments Prolla<\/h3>\n<p>Kun maksusi toimivat onnistuneesti hiekkalaatikkotilassa, voit siirty\u00e4 live-tilaan. T\u00e4t\u00e4 varten sinun on korvattava hiekkalaatikkotiedot <code>.env<\/code>tiedoston reaaliaikaisilla tiedoilla. V\u00e4lit\u00e4 my\u00f6s &#8217;false&#8217; -arvo konstruktorin setTestMode() -menetelm\u00e4lle. Se poistaa hiekkalaatikkotilan k\u00e4yt\u00f6st\u00e4 ja aktivoi live-tilan.<\/p>\n<p>Kyse on luottokorttimaksun hyv\u00e4ksymisest\u00e4 PayPal Payments Prolla Laravelissa. 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\/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\/stripe-payment-gateway-integraatio-laravelissa\/\" title=\"Stripe Payment Gateway -integraatio Laravelissa\">Stripe Payment Gateway -integraatio Laravelissa<\/a><\/li>\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<\/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>PayPal Payments Pro antaa meille mahdollisuuden hyv\u00e4ksy\u00e4 luottokorttimaksuja verkossa. T\u00e4ss\u00e4 artikkelissa n\u00e4yt\u00e4n sinulle, miten PayPal Payments Pro voidaan integroida Laraan<\/p>\n","protected":false},"author":1,"featured_media":21668,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[499],"tags":[843],"class_list":["post-25000","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\/25000","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=25000"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts\/25000\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/media\/21668"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/media?parent=25000"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/categories?post=25000"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/tags?post=25000"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}