{"id":28835,"date":"2021-05-29T13:39:00","date_gmt":"2021-05-29T10:39:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=28835"},"modified":"2021-10-17T04:32:50","modified_gmt":"2021-10-17T01:32:50","slug":"paypal-payments-pro-integration-i-laravel","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/sv\/paypal-payments-pro-integration-i-laravel\/","title":{"rendered":"PayPal Payments Pro-integration i Laravel"},"content":{"rendered":"<p>Jag har skrivit en artikel som <a href=\"https:\/\/themewp.inform.click\/sv\/acceptera-kreditkortsbetalningar-med-paypal-payments-pro-i-php\/\" title=\"accepterar kreditkortsbetalningar med PayPal Payments Pro i PHP\" >accepterar kreditkortsbetalningar med PayPal Payments Pro i PHP<\/a>. En av l\u00e4sarna fr\u00e5gade mig hur man g\u00f6r samma integration i Laravel. \u00c4ven om Laravel \u00e4r skrivet i PHP n\u00e4r du skriver kod f\u00f6r Laravel m\u00e5ste du f\u00f6lja deras standarder. Nyb\u00f6rjare har ofta sv\u00e5rt att konvertera vanlig PHP-kod i Laravel.<\/p>\n<p>I den h\u00e4r artikeln studerar vi hur man integrerar PayPal Payments Pro och accepterar kreditkortsbetalningar i Laravel.<\/p>\n<p>Om du driver en webbutik, en medlemswebbplats eller n\u00e5got annat d\u00e4r du vill samla in onlinebetalningar \u00e4r PayPal det s\u00e4kra alternativet. Med PayPal Payments Pro kan du acceptera kreditkortsbetalningar online som g\u00e5r direkt till ditt PayPal-konto.<\/p>\n<p>Notera n\u00e4r du skriver den h\u00e4r artikeln, PayPal Payments Pro \u00e4r tillg\u00e4ngligt f\u00f6r handlarna i USA, Storbritannien och Kanada.<\/p>\n<h3>Komma ig\u00e5ng<\/h3>\n<p>F\u00f6r att komma ig\u00e5ng m\u00e5ste du f\u00e5 PayPal API-referenser. Det \u00e4r alltid en bra praxis att testa betalningarna i sandbox-l\u00e4ge. Om allt fungerar som f\u00f6rv\u00e4ntat, g\u00f6r betalningen live.<\/p>\n<p>F\u00e5 dina sandbox-referenser genom att logga in p\u00e5 <a href=\"https:\/\/developer.paypal.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PayPal-utvecklarkontot<\/a>. Efter inloggning g\u00e5r du till <strong>SANDBOX-&gt; Konton<\/strong> fr\u00e5n menyn till v\u00e4nster och skapar ett f\u00f6retagskonto.<\/p>\n<p>N\u00e4r du har ett f\u00f6retagskonto kan du uppgradera din kontotyp till &#8217;Business-Pro&#8217;. Integrering av PayPal Payments Pro kr\u00e4ver en kontotyp av typen &#8217;Business-Pro&#8217;. Klicka p\u00e5 l\u00e4nken &#8217;Uppgradera till Pro&#8217; och PayPal konverterar din kontotyp till &#8217;Business-Pro&#8217;.<\/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-integration i Laravel\" ><\/a><\/p>\n<p>Klicka sedan p\u00e5 fliken &quot;API-referenser&quot; och kopiera dina referenser.<\/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-integration i Laravel\" ><\/a><\/p>\n<p>\u00d6ppna <code>.env<\/code>ditt Laravel-projekt och l\u00e4gg till de kopierade referenserna i det.<\/p>\n<pre><code>PAYPAL_API_USERNAME=\nPAYPAL_API_PASSWORD=\nPAYPAL_API_SIGNATURE=<\/code><\/pre>\n<p>L\u00e4gg till rutten f\u00f6r styrenheten i <code>web.php<\/code>filen. I mitt fall \u00e4r min v\u00e4g som f\u00f6ljer.<\/p>\n<pre><code>Route::resource('payment', 'PaymentController');<\/code><\/pre>\n<p>Jag ska anv\u00e4nda <a href=\"https:\/\/omnipay.thephpleague.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Omnipay-<\/a> biblioteket som ger ett enkelt s\u00e4tt att integrera betalningsportaler. K\u00f6r kommandot nedan som installerar Omnipay-biblioteket.<\/p>\n<pre><code>composer require league\/omnipay:^3 omnipay\/paypal<\/code><\/pre>\n<h3>Skapa ett betalningsformul\u00e4r<\/h3>\n<p>N\u00e4r du accepterar en kreditkortsbetalning m\u00e5ste du ge anv\u00e4ndarna ett formul\u00e4r d\u00e4r de kan ange sina kortuppgifter. L\u00e5t oss utforma betalningsformul\u00e4ret med hj\u00e4lp av detta <a href=\"https:\/\/codepen.io\/hswd\/pen\/JYvgBW\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">kodexempel<\/a>.<\/p>\n<p>Skapa en &#8217;css&#8217; och &#8217;js&#8217; mapp i den &#8217;offentliga&#8217; katalogen f\u00f6r Laravel-projektet. Kopiera CSS-koden fr\u00e5n codepen och l\u00e4gg till den <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>P\u00e5 samma s\u00e4tt l\u00e4gger du till JavaScript-kod fr\u00e5n codepen i <code>js\/card.js<\/code>filen.<\/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>F\u00e5 en kopia av det <code>jquery.card.js<\/code>h\u00e4r <a href=\"https:\/\/github.com\/jessepollak\/card\/blob\/master\/dist\/jquery.card.js\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">GitHub-f\u00f6rvaret<\/a>. Spara den h\u00e4r filen i din js-katalog.<\/p>\n<p>Slutligen l\u00e4gg till koden nedan i bladfilen.<\/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>I ovanst\u00e5ende kod inkluderade jag CSS, JS fr\u00e5n respektive katalog. Du m\u00e5ste ange din rutt-URL till formul\u00e4r\u00e5tg\u00e4rden.<\/p>\n<h3>PayPal Payments Pro-integration i Laravel<\/h3>\n<p>Vi \u00e4r klara med den inst\u00e4llning som kr\u00e4vs f\u00f6r att acceptera kreditkortsbetalningar. Nu i styrenheten m\u00e5ste vi skriva kod enligt instruktioner fr\u00e5n Omnipay. Omnipay g\u00f6r utvecklarens liv l\u00e4tt. Vi m\u00e5ste bara f\u00f6lja deras instruktioner och de g\u00f6r allt det h\u00e5rda arbetet med att f\u00e5nga betalningen och returnera ett slutligt svar.<\/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>H\u00e4r i konstrukt\u00f6ren bygger vi ett objekt och skickar referenserna till det. N\u00e4r en anv\u00e4ndare skickar ett formul\u00e4r g\u00e5r kontrollen till &quot;butik&quot; -metoden. I den h\u00e4r metoden anropar Omnipay PayPal API i bakgrunden, behandlar betalningen och ger ett slutligt svar.<\/p>\n<p>Forts\u00e4tt och prova det. N\u00e4r vi testar betalning i sandl\u00e5dsl\u00e4ge beh\u00f6ver du testkort. <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\">Klicka h\u00e4r f\u00f6r<\/a> att f\u00e5 falska kreditkortsuppgifter. Efter att ha skickat ett formul\u00e4r ska du se framg\u00e5ngsmeddelandet tillsammans med ditt transaktions-id.<\/p>\n<h3>Acceptera direktbetalning med PayPal Payments Pro<\/h3>\n<p>N\u00e4r dina betalningar fungerar framg\u00e5ngsrikt i sandbox-l\u00e4ge kan du g\u00e5 till live-l\u00e4ge. F\u00f6r detta m\u00e5ste du ers\u00e4tta sandbox-referenser med live-detaljerna i <code>.env<\/code>filen. Skicka ocks\u00e5 ett &quot;falskt&quot; v\u00e4rde till setTestMode() -metoden i konstrukt\u00f6ren. Det inaktiverar sandl\u00e5dsl\u00e4get och aktiverar live-l\u00e4get.<\/p>\n<p>Det handlar om att acceptera kreditkortsbetalning med PayPal Payments Pro i Laravel. Jag skulle vilja h\u00f6ra dina tankar och f\u00f6rslag i kommentarsektionen nedan.<\/p>\n<h4>relaterade artiklar<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/authorize-net-payment-gateway-integration-i-laravel\/\" title=\"Authorize.Net Payment Gateway Integration i Laravel\">Authorize.Net Payment Gateway Integration i Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/stripe-payment-gateway-integration-i-laravel\/\" title=\"Stripe Payment Gateway-integration i Laravel\">Stripe Payment Gateway-integration i Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/paypal-payment-gateway-integration-i-laravel\/\" title=\"PayPal Payment Gateway-integration i Laravel\">PayPal Payment Gateway-integration i Laravel<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <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 till\u00e5ter oss att acceptera kreditkortsbetalningar online. I den h\u00e4r artikeln visar jag dig hur du integrerar PayPal Payments Pro i Lara<\/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":[503],"tags":[850],"class_list":["post-28835","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel2-10","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts\/28835","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/comments?post=28835"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts\/28835\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/media\/21668"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/media?parent=28835"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/categories?post=28835"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/tags?post=28835"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}