{"id":29788,"date":"2021-06-21T16:30:00","date_gmt":"2021-06-21T13:30:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=29788"},"modified":"2021-10-17T04:12:53","modified_gmt":"2021-10-17T01:12:53","slug":"paypal-payment-gateway-integration-i-laravel","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/sv\/paypal-payment-gateway-integration-i-laravel\/","title":{"rendered":"PayPal Payment Gateway-integration i Laravel"},"content":{"rendered":"<p>Nyligen publicerade jag en artikel om <a href=\"https:\/\/themewp.inform.click\/sv\/paypal-payment-gateway-integration-i-php-med-paypal-rest-api\/\" title=\"PayPal Payment Gateway Integration i PHP\" >PayPal Payment Gateway Integration i PHP<\/a>. I den artikeln fr\u00e5gade en av v\u00e5ra l\u00e4sare om att integrera PayPal-betalningsporten i Laravel. \u00c4ven om Laravel \u00e4r byggt med PHP har de sina egna standarder att f\u00f6lja. Du m\u00e5ste justera din vanliga PHP-kod enligt Laravel-fl\u00f6de. I den h\u00e4r artikeln visar jag dig hur du accepterar betalning p\u00e5 din Laravel-webbplats med PayPal Rest API.<\/p>\n<p>PayPal \u00e4r ett av de mest betrodda varum\u00e4rkena som accepterar onlinebetalning. PayPal erbjuder olika s\u00e4tt att integrera sitt betalningssystem i webbapplikationer. En av tj\u00e4nsterna \u00e4r PayPal Rest API som vi kommer att anv\u00e4nda f\u00f6r denna handledning. F\u00f6r att komma ig\u00e5ng m\u00e5ste du f\u00f6rst ta tag i ditt klient-id och klienthemlighet.<\/p>\n<p>G\u00e5 \u00f6ver till ditt <a href=\"https:\/\/developer.paypal.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PayPal-utvecklarkonto<\/a> och logga in p\u00e5 det. Klicka p\u00e5 menyn &#8217;Mina appar och referenser&#8217; i instrumentpanelen f\u00f6r utvecklare. Klicka sedan p\u00e5 knappen &quot;Skapa app&quot; under avsnittet REST API-appar.<\/p>\n<p>F\u00f6lj stegen enligt uppmaningen s\u00e5 f\u00e5r du din sandl\u00e5da och live-referenser. F\u00f6r nu, kopiera klient-id och klienthemlighet i sandbox-l\u00e4ge.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20136-6081c137ee496.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-20136-6081c137ee496.png\" alt=\"PayPal Payment Gateway-integration i Laravel\" ><\/a><\/p>\n<h3>Grundl\u00e4ggande installation i Laravel f\u00f6r att acceptera betalning med PayPal<\/h3>\n<p>N\u00e4r kunderna g\u00f6r betalningen p\u00e5 din webbplats m\u00e5ste du spara betalningsinformationen f\u00f6r senare anv\u00e4ndning. Skapa en &#8217;betalningstabell&#8217; i databasen f\u00f6r att lagra betalningsinformationen. Skapa en migrering f\u00f6r tabellen &#8217;betalningar&#8217; med kommandot:<\/p>\n<pre><code>php artisan make:migration create_payments_table<\/code><\/pre>\n<p>\u00d6ppna migreringsfilen och \u00e4ndra kolumnerna enligt f\u00f6ljande.<\/p>\n<pre><code>&lt;?php\n...\n...\npublic 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_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>K\u00f6r ovanst\u00e5ende migrering med kommandot nedan.<\/p>\n<pre><code>php artisan migrate<\/code><\/pre>\n<p>Detta kommando skapar en &quot;betalningstabell&quot; i din databas. Skapa sedan en modell som motsvarar tabellen &#8217;betalningar&#8217;.<\/p>\n<pre><code>php artisan make:model Payment<\/code><\/pre>\n<p>Efter detta, l\u00e4gg till PayPal-referenser i din <code>.env<\/code>fil.<\/p>\n<pre><code>PAYPAL_CLIENT_ID=PASTE_HERE_CLIENT_ID\nPAYPAL_CLIENT_SECRET=PASTE_HERE_CLIENT_SECRET\nPAYPAL_CURRENCY=USD<\/code><\/pre>\n<p>Rensa konfigurationscachen med kommandot:<\/p>\n<pre><code>php artisan config:cache<\/code><\/pre>\n<p>Jag har klarat &quot;USD&quot; -valutan. Anv\u00e4ndaren kan \u00e4ndra det enligt kraven.<\/p>\n<p>L\u00e5t oss definiera de rutter som vi kommer att beh\u00f6va i n\u00e4sta steg.<\/p>\n<p><strong>rutter \/ web.php<\/strong><\/p>\n<pre><code>&lt;?php\n...\n...\nRoute::get('payment', 'PaymentController@index');\nRoute::post('charge', 'PaymentController@charge');\nRoute::get('paymentsuccess', 'PaymentController@payment_success');\nRoute::get('paymenterror', 'PaymentController@payment_error');<\/code><\/pre>\n<h3>PayPal Payment Gateway-integration i Laravel<\/h3>\n<p>Att integrera API f\u00f6r betalningsgateways i applikationen \u00e4r ganska komplicerat. Lyckligtvis gjorde Omnipay-biblioteket utvecklarnas liv l\u00e4tt. <a href=\"https:\/\/github.com\/thephpleague\/omnipay\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Omnipay<\/a> \u00e4r det mest popul\u00e4ra betalningshanteringsbiblioteket f\u00f6r PHP. Det ger en enkel och ren kod f\u00f6r att integrera olika betalningsportaler. Installera Omnipay-biblioteket med kommandot:<\/p>\n<pre><code>composer require league\/omnipay omnipay\/paypal<\/code><\/pre>\n<p>Skapa nu en styrenhet <code>PaymentController<\/code>och definiera de metoder som n\u00e4mns i ruttfilen.<\/p>\n<pre><code>php artisan make:controller PaymentController<\/code><\/pre>\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 AppPayment;\n\u00a0\u00a0\nclass PaymentController extends Controller\n{\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0public $gateway;\n\u00a0\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_Rest');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;gateway-&gt;setClientId(env('PAYPAL_CLIENT_ID'));\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;gateway-&gt;setSecret(env('PAYPAL_CLIENT_SECRET'));\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;gateway-&gt;setTestMode(true); \/\/set it to 'false' when go live\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\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\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('submit'))\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0try {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$response = $this-&gt;gateway-&gt;purchase(array(\n\u00a0\u00a0\u00a0\u00a0\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\u00a0\u00a0\u00a0\u00a0'currency' =&gt; env('PAYPAL_CURRENCY'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'returnUrl' =&gt; url('paymentsuccess'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'cancelUrl' =&gt; url('paymenterror'),\n\u00a0\u00a0\u00a0\u00a0\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\u00a0\u00a0\u00a0\u00a0\u00a0if ($response-&gt;isRedirect()) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\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\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\u00a0\u00a0\u00a0\u00a0\/\/ not successful\n\u00a0\u00a0\u00a0\u00a0\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\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} catch(Exception $e) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return $e-&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\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0public function payment_success(Request $request)\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Once the transaction has been approved, we need to complete it.\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if ($request-&gt;input('paymentId') &amp;&amp; $request-&gt;input('PayerID'))\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$transaction = $this-&gt;gateway-&gt;completePurchase(array(\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'payer_id'\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 =&gt; $request-&gt;input('PayerID'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'transactionReference' =&gt; $request-&gt;input('paymentId'),\n\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$response = $transaction-&gt;send();\n\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{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ The customer has successfully paid.\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\n\u00a0\u00a0\u00a0\u00a0\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\u00a0\u00a0\u00a0\u00a0$isPaymentExist = Payment::where('payment_id', $arr_body['id'])-&gt;first();\n\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_body['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_id = $arr_body['payer']['payer_info']['payer_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 = $arr_body['payer']['payer_info']['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_body['transactions'][0]['amount']['total'];\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('PAYPAL_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_body['state'];\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\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return \"Payment is successful. Your transaction id is: \". $arr_body['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\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} else {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return 'Transaction is declined';\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0public function payment_error()\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return 'User is canceled the payment.';\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\n}<\/code><\/pre>\n<p>I ovanst\u00e5ende kontroller h\u00e4mtar vi beloppet fr\u00e5n HTML-formul\u00e4ret och skickar en anv\u00e4ndare till PayPal f\u00f6r betalning. Vid den lyckade betalningen lagrar vi alla transaktionsuppgifter i tabellen &#8217;betalningar&#8217;.<\/p>\n<p>Slutligen skapa en bladfil som heter <code>payment.blade.php<\/code>och l\u00e4gg till kod nedan i den.<\/p>\n<pre><code>&lt;form action=\"{{ url('charge') }}\" method=\"post\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"text\" name=\"amount\" \/&gt;\n\u00a0\u00a0\u00a0\u00a0{{ csrf_field() }}\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"submit\" name=\"submit\" value=\"Pay Now\"&gt;\n&lt;\/form&gt;<\/code><\/pre>\n<p>N\u00e4r vi skickar det h\u00e4r formul\u00e4ret g\u00e5r kontrollen till <code>charge<\/code>funktionen i <code>PaymentController<\/code>styrenheten och behandlar resten betalningsfl\u00f6det.<\/p>\n<h3>Skicka produktinformation till PayPal<\/h3>\n<p>I de f\u00f6reg\u00e5ende stegen skickar vi beloppet att betala p\u00e5 PayPal. Du kanske ocks\u00e5 vill skicka produktinformation. Anv\u00e4ndaren kan se denna produktinformation p\u00e5 betalningssidan innan han g\u00f6r en betalning.<\/p>\n<p>F\u00f6r att skicka produktinformationen m\u00e5ste du skicka &quot;objekt&quot; -arrayen till <code>purchase<\/code>metoden enligt f\u00f6ljande.<\/p>\n<pre><code>$response = $this-&gt;gateway-&gt;purchase(array(\n\u00a0\u00a0\u00a0\u00a0'amount' =&gt; $request-&gt;input('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; $request-&gt;input('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; env('PAYPAL_CURRENCY'),\n\u00a0\u00a0\u00a0\u00a0'returnUrl' =&gt; url('paymentsuccess'),\n\u00a0\u00a0\u00a0\u00a0'cancelUrl' =&gt; url('paymenterror'),\n))-&gt;send();<\/code><\/pre>\n<p>H\u00e4r skickar jag produktinformationen statiskt. Du b\u00f6r g\u00f6ra den dynamisk beroende p\u00e5 din produkt.<\/p>\n<p>Jag hoppas att du fick veta om PayPal-betalningsgatewayintegration i Laravel. Dela 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\/paykun-payment-gateway-integration-i-laravel\/\" title=\"PayKun Payment Gateway-integration i Laravel\">PayKun 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>I den h\u00e4r artikeln diskuterade vi PayPal-betalningsgatewayintegration i Laravel. PayPal \u00e4r en av de mest popul\u00e4ra plattformarna f\u00f6r att acceptera online<\/p>\n","protected":false},"author":1,"featured_media":20137,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[503],"tags":[850],"class_list":["post-29788","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\/29788","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=29788"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts\/29788\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/media\/20137"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/media?parent=29788"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/categories?post=29788"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/tags?post=29788"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}