{"id":29463,"date":"2021-06-15T12:43:00","date_gmt":"2021-06-15T09:43:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=29463"},"modified":"2021-10-18T03:32:18","modified_gmt":"2021-10-18T00:32:18","slug":"akceptuj-platnosci-karta-kredytowa-za-pomoca-bramki-platnosci-authorize-net-w-php","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pl\/akceptuj-platnosci-karta-kredytowa-za-pomoca-bramki-platnosci-authorize-net-w-php\/","title":{"rendered":"Akceptuj p\u0142atno\u015bci kart\u0105 kredytow\u0105 za pomoc\u0105 bramki p\u0142atno\u015bci Authorize.Net w PHP"},"content":{"rendered":"<p>Chcesz zintegrowa\u0107 opcj\u0119 p\u0142atno\u015bci kart\u0105 kredytow\u0105 na swojej stronie internetowej? Je\u015bli tak, to Authorize.Net jest dla Ciebie dobrym wyborem. Za\u0142o\u017cona w 1996 roku, jest jedn\u0105 z najpopularniejszych bramek p\u0142atniczych w Internecie.<\/p>\n<p>W przypadku sklepu internetowego karty kredytowe s\u0105 powszechnie u\u017cywane do przyjmowania p\u0142atno\u015bci. Klienci wol\u0105 p\u0142aci\u0107 kartami kredytowymi, aby kupowa\u0107 produkty online. W swoim sklepie musisz poda\u0107 opcj\u0119 p\u0142atno\u015bci kart\u0105 kredytow\u0105. W tym artykule poka\u017c\u0119, jak zintegrowa\u0107 bramk\u0119 p\u0142atno\u015bci Authorize.Net, kt\u00f3ra pozwoli na otrzymywanie p\u0142atno\u015bci kart\u0105 kredytow\u0105.<\/p>\n<p>Za ka\u017cdym razem, gdy dodajemy bramki p\u0142atno\u015bci, musimy najpierw przetestowa\u0107 transakcje w trybie piaskownicy. Gdy p\u0142atno\u015bci testowe dzia\u0142aj\u0105 poprawnie, mo\u017cesz przej\u015b\u0107 do wersji na \u017cywo.<\/p>\n<p>Aby rozpocz\u0105\u0107 korzystanie z Authorize.Net, najpierw utw\u00f3rz <a href=\"https:\/\/developer.authorize.net\/hello_world\/sandbox\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">konto piaskownicy<\/a>. Po utworzeniu konta skopiuj identyfikator logowania i klucz transakcji. Mo\u017cesz uzyska\u0107 te klucze API z <strong>Konto-&gt;Po\u015bwiadczenia i klucze API<\/strong>. Prosz\u0119 zapozna\u0107 si\u0119 z poni\u017cszym zrzutem ekranu.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20201-6081cc62a61f7.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-20201-6081cc62a61f7.png\" alt=\"Akceptuj p\u0142atno\u015bci kart\u0105 kredytow\u0105 za pomoc\u0105 bramki p\u0142atno\u015bci Authorize.Net w PHP\" ><\/a><\/p>\n<p>Na nast\u0119pnej stronie otrzymasz sw\u00f3j \u201eIdentyfikator logowania API&quot;. Utw\u00f3rz klucz transakcji z sekcji \u201eUtw\u00f3rz nowe klucze&#8221;, jak pokazano na poni\u017cszym zrzucie ekranu.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20201-6081cc632ae89.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-20201-6081cc632ae89.png\" alt=\"Akceptuj p\u0142atno\u015bci kart\u0105 kredytow\u0105 za pomoc\u0105 bramki p\u0142atno\u015bci Authorize.Net w PHP\" ><\/a><\/p>\n<h3>Pierwsze kroki<\/h3>\n<p>Do integracji Authorize.Net wykorzystamy bibliotek\u0119 <a href=\"https:\/\/github.com\/thephpleague\/omnipay\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Omnipay,<\/a> kt\u00f3ra w <a href=\"https:\/\/github.com\/thephpleague\/omnipay\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">przejrzysty<\/a> i \u0142atwy spos\u00f3b umo\u017cliwia integracj\u0119 p\u0142atno\u015bci. Zainstaluj bibliotek\u0119 Omnipay w swoim projekcie za pomoc\u0105 polecenia:<\/p>\n<pre><code>composer require league\/omnipay:^3<\/code><\/pre>\n<p>Zainstaluje bibliotek\u0119 Omnipay. Dodatkowo jeste\u015bmy zobowi\u0105zani do zainstalowania pakietu Omnipay dla Authorize.Net. Ten pakiet pozwala nam na przechwytywanie p\u0142atno\u015bci przez bramk\u0119 p\u0142atno\u015bci Authorize.Net. Przeczytaj wi\u0119cej o tym pakiecie w ich <a href=\"https:\/\/github.com\/academe\/omnipay-authorizenetapi\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">dokumentacji<\/a>. Uruchom poni\u017csze polecenie, aby zainstalowa\u0107 ten pakiet:<\/p>\n<pre><code>composer require \"academe\/omnipay-authorizenetapi: ~3.0\"<\/code><\/pre>\n<p>Jeste\u015bmy gotowi z obs\u0142ugiwanymi bibliotekami. Teraz stw\u00f3rzmy prosty formularz do wpisania kwoty i danych karty. Tworz\u0119 <code>index.php<\/code>plik i dodaj\u0119 do niego poni\u017cszy kod HTML.<\/p>\n<pre><code>&lt;form action=\"charge.php\" method=\"post\"&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>Przyjmuj\u0105c p\u0142atno\u015b\u0107 online, musimy przechowywa\u0107 dane transakcji w bazie danych. Tak wi\u0119c, aby przechowywa\u0107 informacje o transakcji, utw\u00f3rz tabel\u0119 \u201ep\u0142atno\u015bci&#8221; w bazie danych, korzystaj\u0105c z poni\u017cszego zapytania.<\/p>\n<pre><code>CREATE TABLE `payments` (\u00a0`id` int(11) NOT NULL AUTO_INCREMENT,\n\u00a0`transaction_id` varchar(255) NOT NULL,\n\u00a0`amount` float(10,2) NOT NULL,\n\u00a0`currency` varchar(255) NOT NULL,\n\u00a0`payment_status` varchar(255) NOT NULL,\n\u00a0`captured_at` datetime NOT NULL DEFAULT current_timestamp(),\n\u00a0PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;<\/code><\/pre>\n<h3>Akceptuj p\u0142atno\u015b\u0107 kart\u0105 kredytow\u0105 za pomoc\u0105 Authorize.Net<\/h3>\n<p>Skopiowa\u0142e\u015b klucze API swojego konta Authorize.Net w poprzednich krokach. Czas doda\u0107 te klucze do kodu PHP. Zapisz te po\u015bwiadczenia w <code>config.php<\/code>pliku. Dodaj\u0119 r\u00f3wnie\u017c po\u0142\u0105czenie z baz\u0105 danych do tego pliku.<\/p>\n<p><strong>config.php<\/strong><\/p>\n<pre><code>&lt;?php\nrequire_once \"vendor\/autoload.php\";\n\u00a0\u00a0\n\/\/ Connect with the database\n$db = new mysqli('localhost', 'MYSQL_DB_USERNAME', 'MYSQL_DB_PASSWORD', 'MYSQL_DB_NAME');\n\u00a0\u00a0\nif ($db-&gt;connect_errno) {\n\u00a0\u00a0\u00a0\u00a0die(\"Connect failed: \". $db-&gt;connect_error);\n}\n\u00a0\u00a0\n$gateway = OmnipayOmnipay::create('AuthorizeNetApi_Api');\n$gateway-&gt;setAuthName('PASTE_ANET_API_LOGIN_ID');\n$gateway-&gt;setTransactionKey('PASTE_ANET_TRANSACTION_KEY');\n$gateway-&gt;setTestMode(true); \/\/comment this line when move to 'live'<\/code><\/pre>\n<p>Zast\u0105p symbole zast\u0119pcze rzeczywistymi warto\u015bciami. Poniewa\u017c testujemy p\u0142atno\u015bci na piaskownicy, przeszed\u0142em true do metody <code>setTestMode<\/code>. Kiedy b\u0119dziesz gotowy do przej\u015bcia do produkcji, usu\u0144\/skomentuj t\u0119 lini\u0119.<\/p>\n<p>W formularzu, kt\u00f3ry stworzyli\u015bmy powy\u017cej, ustawi\u0142em <code>charge.php<\/code>jako adres URL akcji. Oznacza to, \u017ce rzeczywisty kod, kt\u00f3ry przechwytuje p\u0142atno\u015b\u0107 kart\u0105 kredytow\u0105, zostanie umieszczony w tym pliku.<\/p>\n<p><strong>op\u0142ata.php<\/strong><\/p>\n<pre><code>&lt;?php\nrequire_once \"config.php\";\n\u00a0\u00a0\nif (isset($_POST['submit'])) {\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0try {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$creditCard = new OmnipayCommonCreditCard([\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'number' =&gt; $_POST['cc_number'],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'expiryMonth' =&gt; $_POST['expiry_month'],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'expiryYear' =&gt; $_POST['expiry_year'],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'cvv' =&gt; $_POST['cvv'],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Generate a unique merchant site transaction ID.\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$transactionId = rand(100000000, 999999999);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$response = $gateway-&gt;authorize([\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'amount' =&gt; $_POST['amount'],\n\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'transactionId' =&gt; $transactionId,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'card' =&gt; $creditCard,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0])-&gt;send();\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if($response-&gt;isSuccessful()) {\n\u00a0\u00a0\n\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$transactionReference = $response-&gt;getTransactionReference();\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$response = $gateway-&gt;capture([\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'amount' =&gt; $_POST['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'transactionReference' =&gt; $transactionReference,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0])-&gt;send();\n\u00a0\u00a0\n\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$amount = $_POST['amount'];\n\u00a0\u00a0\n\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$isPaymentExist = $db-&gt;query(\"SELECT * FROM payments WHERE transaction_id = '\".$transaction_id.\"'\");\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if($isPaymentExist-&gt;num_rows == 0) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$insert = $db-&gt;query(\"INSERT INTO payments(transaction_id, amount, currency, payment_status) VALUES('$transaction_id', '$amount', 'USD', 'Captured')\");\n\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\u00a0echo \"Your payment transaction id: \". $transaction_id;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} else {\n\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\u00a0echo $response-&gt;getMessage();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0} catch(Exception $e) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo $e-&gt;getMessage();\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Mo\u017cesz teraz \u015bmia\u0142o przetestowa\u0107 p\u0142atno\u015b\u0107. Uzyskaj te <a href=\"https:\/\/developer.authorize.net\/hello_world\/testing_guide\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">testowe numery kart kredytowych,<\/a> aby przetestowa\u0107 p\u0142atno\u015b\u0107. Po pomy\u015blnej odpowiedzi powiniene\u015b otrzyma\u0107 sw\u00f3j identyfikator transakcji.<\/p>\n<p>W\u0142a\u015bciciel mo\u017ce zobaczy\u0107 transakcje na pulpicie nawigacyjnym Authorize.Net. Transakcje znajdziesz w zak\u0142adce \u201eTransakcje nierozliczone&#8221;. Authorize.Net p\u00f3\u017aniej sam rozliczy transakcj\u0119 i powiadomi Ci\u0119 e-mailem.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20201-6081cc632ae89.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-20201-6081cc632ae89.png\" alt=\"Akceptuj p\u0142atno\u015bci kart\u0105 kredytow\u0105 za pomoc\u0105 bramki p\u0142atno\u015bci Authorize.Net w PHP\" ><\/a><\/p>\n<p>Mam nadziej\u0119, \u017ce rozumiesz, jak akceptowa\u0107 p\u0142atno\u015bci kart\u0105 kredytow\u0105 za pomoc\u0105 bramki p\u0142atno\u015bci Authorize.Net. Podziel si\u0119 swoimi przemy\u015bleniami lub sugestiami 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-paypal-payment-gateway-w-php-za-pomoca-paypal-rest-api\/\" title=\"Integracja PayPal Payment Gateway w PHP przy u\u017cyciu PayPal REST API\">Integracja PayPal Payment Gateway w PHP przy u\u017cyciu PayPal REST API<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/przewodnik-po-integracji-stripe-w-witrynie-z-php\/\" title=\"Przewodnik po integracji Stripe w witrynie z PHP\">Przewodnik po integracji Stripe w witrynie z PHP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/akceptuj-platnosci-karta-kredytowa-za-pomoca-paypal-payments-pro-w-php\/\" title=\"Akceptuj p\u0142atno\u015bci kart\u0105 kredytow\u0105 za pomoc\u0105 Paypal Payments Pro w PHP\">Akceptuj p\u0142atno\u015bci kart\u0105 kredytow\u0105 za pomoc\u0105 Paypal Payments Pro w PHP<\/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 dowiemy si\u0119, jak zintegrowa\u0107 Authorize.net do przyjmowania p\u0142atno\u015bci kart\u0105 kredytow\u0105. Dodanie opcji p\u0142atno\u015bci kart\u0105 kredytow\u0105 jest bardzo powszechne<\/p>\n","protected":false},"author":1,"featured_media":21609,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[277],"tags":[847],"class_list":["post-29463","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-8","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts\/29463","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=29463"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts\/29463\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/media\/21609"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/media?parent=29463"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/categories?post=29463"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/tags?post=29463"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}