{"id":27988,"date":"2021-05-18T10:34:00","date_gmt":"2021-05-18T07:34:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=27988"},"modified":"2021-10-18T03:44:13","modified_gmt":"2021-10-18T00:44:13","slug":"integracja-bramki-platnosci-authorize-net-w-laravel","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pl\/integracja-bramki-platnosci-authorize-net-w-laravel\/","title":{"rendered":"Integracja bramki p\u0142atno\u015bci Authorize.Net w Laravel"},"content":{"rendered":"<p><a href=\"https:\/\/www.authorize.net\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Authorize.Net<\/a> jest bez w\u0105tpienia jednym z zaufanych i popularnych rozwi\u0105za\u0144 p\u0142atniczych w Internecie. Je\u015bli prowadzisz sklep internetowy i chcesz otrzymywa\u0107 p\u0142atno\u015bci za pomoc\u0105 kart kredytowych\/debetowych, to Authorize.Net b\u0119dzie Twoim wyborem. W tym artykule poka\u017c\u0119 Ci jak zintegrowa\u0107 bramk\u0119 p\u0142atno\u015bci Authorize.Net w Twojej aplikacji Laravel.<\/p>\n<p>Na pocz\u0105tek powiniene\u015b mie\u0107 konto na <a href=\"https:\/\/www.authorize.net\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Authorize.Net<\/a>. Powiniene\u015b najpierw przetestowa\u0107 swoje p\u0142atno\u015bci w trybie piaskownicy, a je\u015bli wszystko dzia\u0142a zgodnie z oczekiwaniami, przejd\u017a do trybu na \u017cywo. Aby zaakceptowa\u0107 p\u0142atno\u015b\u0107 za pomoc\u0105 Authorize.Net, musisz pobra\u0107 dane uwierzytelniaj\u0105ce API. Zaloguj si\u0119 na swoje <a href=\"https:\/\/developer.authorize.net\/hello_world\/sandbox\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">konto piaskownicy,<\/a> a mo\u017cesz uzyska\u0107 te klucze API z <strong>Konto-&gt;Po\u015bwiadczenia i klucze API<\/strong>.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20566-608205b6e3c01.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-20566-608205b6e3c01.png\" alt=\"Integracja bramki p\u0142atno\u015bci Authorize.Net w Laravel\" ><\/a><\/p>\n<p>Na nast\u0119pnej stronie otrzymasz \u201eIdentyfikator logowania API&quot; i utworzysz nowy klucz transakcji w sekcji \u201eUtw\u00f3rz nowy klucz(e)&#8221;.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20566-608205b73dc1a.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-20566-608205b73dc1a.png\" alt=\"Integracja bramki p\u0142atno\u015bci Authorize.Net w Laravel\" ><\/a><\/p>\n<h3>Podstawowa konfiguracja w Laravel do akceptowania p\u0142atno\u015bci za pomoc\u0105 Authorize.Net<\/h3>\n<p>Kiedy Twoi klienci kupuj\u0105 produkty, powiniene\u015b przechowywa\u0107 ich dane dotycz\u0105ce p\u0142atno\u015bci w bazie danych. Maj\u0105c to na uwadze, stw\u00f3rzmy tabel\u0119 \u201ep\u0142atno\u015bci&#8221; do przechowywania szczeg\u00f3\u0142\u00f3w transakcji.<\/p>\n<pre><code>php artisan make:migration create_payments_table<\/code><\/pre>\n<p>W wygenerowanym pliku migracji dodaj poni\u017cszy kod do metody up.<\/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('transaction_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>Nast\u0119pnie uruchom polecenie migrate, kt\u00f3re doda t\u0119 tabel\u0119 do Twojej bazy danych.<\/p>\n<pre><code>php artisan migrate<\/code><\/pre>\n<p>Do interakcji z tabel\u0105 \u201eP\u0142atno\u015bci&#8221; potrzebny jest model \u201eP\u0142atno\u015b\u0107&#8221;. Utw\u00f3rz go za pomoc\u0105 polecenia:<\/p>\n<pre><code>php artisan make:model Payment<\/code><\/pre>\n<p>Skopiowano dane uwierzytelniaj\u0105ce Authorize.Net API. Umie\u015b\u0107my to w twoim <code>.env<\/code>pliku w nast\u0119puj\u0105cy spos\u00f3b.<\/p>\n<pre><code>ANET_API_LOGIN_ID=PASTE_HERE_API_LOGIN_ID\nANET_TRANSACTION_KEY=PASTE_HERE_TRANSACTION_KEY<\/code><\/pre>\n<p>Pami\u0119taj, aby zast\u0105pi\u0107 symbole zast\u0119pcze rzeczywistymi warto\u015bciami. Nast\u0119pnie wyczy\u015b\u0107 pami\u0119\u0107 podr\u0119czn\u0105 konfiguracji.<\/p>\n<pre><code>php artisan config:clear<\/code><\/pre>\n<p>Podczas przetwarzania p\u0142atno\u015bci w Laravelu musisz zdefiniowa\u0107 trasy. Zdefiniujmy wi\u0119c dla niego trasy.<\/p>\n<p><strong>trasy\/web.php<\/strong><\/p>\n<pre><code>&lt;?php\n...\n...\nRoute::get('payment', 'PaymentController@index');\nRoute::post('charge', 'PaymentController@charge');<\/code><\/pre>\n<h3>Integracja bramki p\u0142atno\u015bci Authorize.Net w Laravel<\/h3>\n<p>Dawno min\u0119\u0142y czasy, kiedy programi\u015bci musieli czyta\u0107 dokumentacj\u0119 API dostawc\u00f3w bram p\u0142atniczych, aby zintegrowa\u0107 swoje us\u0142ugi. <a href=\"https:\/\/github.com\/thephpleague\/omnipay\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Omnipay<\/a> to biblioteka do przetwarzania p\u0142atno\u015bci dla PHP, kt\u00f3ra wykonuje ca\u0142\u0105 ci\u0119\u017ck\u0105 prac\u0119, aby u\u0142atwi\u0107 \u017cycie naszym programistom. Zapewniaj\u0105 wsparcie dla us\u0142ug bramek dla wielu p\u0142atno\u015bci. Zamierzamy r\u00f3wnie\u017c wykorzysta\u0107 Omnipay do integracji Authorize.Net w Laravel. Wraz z Omnipay wykorzystujemy r\u00f3wnie\u017c ich inn\u0105 bibliotek\u0119 do implementacji API Authorize.Net.<\/p>\n<p>Powiedziawszy to, zainstaluj te 2 biblioteki za pomoc\u0105 polecenia Composer:<\/p>\n<pre><code>composer require league\/omnipay:^3 \"academe\/omnipay-authorizenetapi: ~3.0\"<\/code><\/pre>\n<p>Teraz utw\u00f3rz kontroler, kt\u00f3ry wywo\u0142a plik widoku, przetworzy p\u0142atno\u015b\u0107 i zapisze szczeg\u00f3\u0142y transakcji w bazie danych.<\/p>\n<pre><code>php artisan make:controller PaymentController<\/code><\/pre>\n<p>Do tego kontrolera dodaj poni\u017cszy kod, kt\u00f3ry b\u0119dzie obs\u0142ugiwa\u0142 wszystkie rzeczy zwi\u0105zane z p\u0142atno\u015bciami.<\/p>\n<p><strong>PaymentController.php<\/strong><\/p>\n<pre><code>&lt;?php\nnamespace AppHttpControllers;\n\u00a0\u00a0\nuse IlluminateHttpRequest;\nuse OmnipayOmnipay;\nuse AppPayment;\n\u00a0\nclass PaymentController extends Controller\n{\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('AuthorizeNetApi_Api');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;gateway-&gt;setAuthName(env('ANET_API_LOGIN_ID'));\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;gateway-&gt;setTransactionKey(env('ANET_TRANSACTION_KEY'));\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;gateway-&gt;setTestMode(true); \/\/comment this line when move to '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 charge(Request $request)\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0try {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$creditCard = new OmnipayCommonCreditCard([\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'number' =&gt; $request-&gt;input('cc_number'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'expiryMonth' =&gt; $request-&gt;input('expiry_month'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'expiryYear' =&gt; $request-&gt;input('expiry_year'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'cvv' =&gt; $request-&gt;input('cvv'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Generate a unique merchant site transaction ID.\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$transactionId = rand(100000000, 999999999);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$response = $this-&gt;gateway-&gt;authorize([\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'transactionId' =&gt; $transactionId,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'card' =&gt; $creditCard,\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\u00a0if($response-&gt;isSuccessful()) {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Captured from the authorization response.\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$transactionReference = $response-&gt;getTransactionReference();\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$response = $this-&gt;gateway-&gt;capture([\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; 'USD',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'transactionReference' =&gt; $transactionReference,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\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\u00a0\u00a0\u00a0\u00a0$transaction_id = $response-&gt;getTransactionReference();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$amount = $request-&gt;input('amount');\n\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('transaction_id', $transaction_id)-&gt;first();\n\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;transaction_id = $transaction_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 = $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$payment-&gt;currency = 'USD';\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 = 'Captured';\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\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return \"Payment 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\/\/ not successful\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} catch(Exception $e) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return $e-&gt;getMessage();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Ten kontroler pobiera kwot\u0119, dane karty z formularza HTML i przetwarza p\u0142atno\u015b\u0107. Po pomy\u015blnej p\u0142atno\u015bci przechowuje wszystkie szczeg\u00f3\u0142y transakcji w tabeli \u201ep\u0142atno\u015bci&#8221;.<\/p>\n<p>Na koniec utw\u00f3rz widok, <code>payment.blade.php<\/code>kt\u00f3ry b\u0119dzie zawiera\u0142 nast\u0119puj\u0105cy kod.<\/p>\n<p><strong>p\u0142atno\u015b\u0107.blade.php<\/strong><\/p>\n<pre><code>&lt;form action=\"{{ url('charge') }}\" method=\"post\"&gt;\n\u00a0\u00a0\u00a0\u00a0{{ csrf_field() }}\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"email\" name=\"email\" placeholder=\"Enter Email\" \/&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"text\" name=\"amount\" placeholder=\"Enter Amount\" \/&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"text\" name=\"cc_number\" placeholder=\"Card Number\" \/&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"text\" name=\"expiry_month\" placeholder=\"Month\" \/&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"text\" name=\"expiry_year\" placeholder=\"Year\" \/&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"text\" name=\"cvv\" placeholder=\"CVV\" \/&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"submit\" name=\"submit\" value=\"Submit\" \/&gt;\n&lt;\/form&gt;<\/code><\/pre>\n<p>Po przes\u0142aniu tego formularza kontrola przechodzi do <code>charge<\/code>funkcji w <code>PaymentController<\/code>i kontroler wykonuje reszt\u0119 procesu p\u0142atno\u015bci. <a href=\"https:\/\/developer.authorize.net\/hello_world\/testing_guide.html\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Kliknij tutaj,<\/a> aby uzyska\u0107 fa\u0142szywe numery kart kredytowych w celu przetestowania p\u0142atno\u015bci w piaskownicy. U\u017cytkownik mo\u017ce r\u00f3wnie\u017c zobaczy\u0107 swoj\u0105 transakcj\u0119 na pulpicie nawigacyjnym Authorize.Net. Pocz\u0105tkowo transakcje oznaczone jako \u201eTransakcje nierozliczone&#8221;. Authorize.Net p\u00f3\u017aniej sam rozlicza transakcj\u0119.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20566-608205b73dc1a.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-20566-608205b73dc1a.png\" alt=\"Integracja bramki p\u0142atno\u015bci Authorize.Net w Laravel\" ><\/a><\/p>\n<h3>Dokonaj p\u0142atno\u015bci na \u017cywo<\/h3>\n<p>Po pomy\u015blnym przetestowaniu p\u0142atno\u015bci w trybie piaskownicy mo\u017cesz przej\u015b\u0107 do trybu produkcyjnego. Wszystko, co musisz zrobi\u0107, to zast\u0105pi\u0107 po\u015bwiadczenia piaskownicy szczeg\u00f3\u0142ami produkcji w <code>.env<\/code>pliku. Skomentuj tak\u017ce poni\u017cszy wiersz z <code>__construct<\/code>metody <code>PaymentController<\/code>.<\/p>\n<pre><code>$this-&gt;gateway-&gt;setTestMode(true); \/\/comment this line when move to 'live'<\/code><\/pre>\n<p>To wszystko! Mam nadziej\u0119, \u017ce rozumiesz Integracj\u0119 bramki p\u0142atno\u015bci Authorize.Net w Laravel. Chcia\u0142bym us\u0142ysze\u0107 Twoje przemy\u015blenia lub sugestie w sekcji komentarzy poni\u017cej.<\/p>\n<h4>Powi\u0105zane artyku\u0142y<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/integracja-bramki-platnosci-paypal-w-laravel\/\" title=\"Integracja bramki p\u0142atno\u015bci PayPal w Laravel\">Integracja bramki p\u0142atno\u015bci PayPal w Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/integracja-stripe-payment-gateway-w-laravel\/\" title=\"Integracja Stripe Payment Gateway w Laravel\">Integracja Stripe Payment Gateway w Laravel<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>W tym artykule poka\u017c\u0119, jak zintegrowa\u0107 bramk\u0119 p\u0142atno\u015bci Authorize.Net w Laravel. Korzystaj\u0105c z tej bramki, mo\u017cesz akceptowa\u0107 p\u0142atno\u015bci kartami kredytowymi\/debetowymi w dniu<\/p>\n","protected":false},"author":1,"featured_media":20567,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[501],"tags":[847],"class_list":["post-27988","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts\/27988","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/comments?post=27988"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts\/27988\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/media\/20567"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/media?parent=27988"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/categories?post=27988"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/tags?post=27988"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}