{"id":29719,"date":"2021-06-21T15:37:00","date_gmt":"2021-06-21T12:37:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=29719"},"modified":"2021-10-18T03:30:33","modified_gmt":"2021-10-18T00:30:33","slug":"akceptuj-platnosci-karta-kredytowa-za-pomoca-paypal-payments-pro-w-php","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pl\/akceptuj-platnosci-karta-kredytowa-za-pomoca-paypal-payments-pro-w-php\/","title":{"rendered":"Akceptuj p\u0142atno\u015bci kart\u0105 kredytow\u0105 za pomoc\u0105 PayPal Payments Pro w PHP"},"content":{"rendered":"<p>Czy chcesz zintegrowa\u0107 bramk\u0119 p\u0142atnicz\u0105, kt\u00f3ra akceptuje p\u0142atno\u015bci kart\u0105 kredytow\u0105? P\u0142atno\u015b\u0107 kart\u0105 kredytow\u0105 jest jedn\u0105 z najlepszych opcji akceptowania p\u0142atno\u015bci online. Klienci wol\u0105 p\u0142aci\u0107 online za pomoc\u0105 kart kredytowych. Mo\u017ce si\u0119 zdarzy\u0107, \u017ce tracisz klient\u00f3w tylko dlatego, \u017ce Twoja witryna nie akceptuje p\u0142atno\u015bci kart\u0105 kredytow\u0105. Jako w\u0142a\u015bciciel sklepu internetowego powiniene\u015b doda\u0107 na swojej stronie opcj\u0119 p\u0142atno\u015bci kart\u0105 kredytow\u0105.<\/p>\n<p>Dost\u0119pnych jest wiele bramek p\u0142atniczych, kt\u00f3re obs\u0142uguj\u0105 kart\u0119 kredytow\u0105. Na przyk\u0142ad Authorize.Net i Stripe umo\u017cliwiaj\u0105 przyjmowanie p\u0142atno\u015bci kart\u0105 online.<\/p>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/akceptuj-platnosci-karta-kredytowa-za-pomoca-bramki-platnosci-authorize-net-w-php\/\" title=\"Akceptuj p\u0142atno\u015bci kart\u0105 kredytow\u0105 za pomoc\u0105 bramki p\u0142atno\u015bci Authorize.Net w PHP\" >Akceptuj p\u0142atno\u015bci kart\u0105 kredytow\u0105 za pomoc\u0105 bramki p\u0142atno\u015bci Authorize.Net w PHP<\/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<\/ul>\n<p>Czytelnicy wybieraj\u0105 dowoln\u0105 z powy\u017cszych opcji, ale je\u015bli chc\u0105 przej\u015b\u0107 na PayPal, czytaj dalej. W tym artykule poka\u017c\u0119, jak akceptowa\u0107 p\u0142atno\u015bci kart\u0105 kredytow\u0105 za pomoc\u0105 PayPal Payments Pro.<\/p>\n<p>PayPal Payments Pro akceptuje p\u0142atno\u015bci za pomoc\u0105 ca\u0142kowicie konfigurowalnego rozwi\u0105zania. Oznacza to, \u017ce mo\u017cesz stworzy\u0107 w\u0142asn\u0105 form\u0119 p\u0142atno\u015bci i obci\u0105\u017cy\u0107 klienta. Nie przekierowuje Ci\u0119 do witryny PayPal w celu sfinalizowania transakcji.<\/p>\n<p>Zamierzamy r\u00f3wnie\u017c stworzy\u0107 w\u0142asny formularz, w kt\u00f3rym klient wprowadzi dane swojej karty i b\u0119dzie m\u00f3g\u0142 zap\u0142aci\u0107 bez opuszczania strony internetowej. U\u017cytkownik mo\u017ce zaprojektowa\u0107 w\u0142asn\u0105 stron\u0119 kasy i umo\u017cliwia wprowadzenie danych karty. Wi\u0119c bez dalszej zw\u0142oki zanurkujmy.<\/p>\n<h3>Pierwsze kroki<\/h3>\n<p>Przed zaakceptowaniem p\u0142atno\u015bci w czasie rzeczywistym zawsze zaleca si\u0119 przetestowanie go w trybie piaskownicy. Je\u015bli wszystko dzia\u0142a zgodnie z oczekiwaniami w piaskownicy, powinni\u015bmy wprowadzi\u0107 j\u0105 w \u017cycie, aby unikn\u0105\u0107 problem\u00f3w z p\u0142atno\u015bciami klient\u00f3w. Do testowania p\u0142atno\u015bci musisz mie\u0107 konto w piaskownicy PayPal. Utw\u00f3rz konto na <a href=\"https:\/\/developer.paypal.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PayPal Developer<\/a>. Po za\u0142o\u017ceniu konta przejd\u017a do <strong>SANDBOX-&gt;Konta<\/strong> z menu po lewej stronie i za\u0142\u00f3\u017c konto firmowe.<\/p>\n<p>W chwili pisania tego artyku\u0142u us\u0142uga PayPal Payments Pro jest dost\u0119pna w Stanach Zjednoczonych, Wielkiej Brytanii i Kanadzie. Oznacza to, \u017ce podczas tworzenia konta musisz wybra\u0107 jeden z tych kraj\u00f3w.<\/p>\n<p>Gdy masz ju\u017c konto firmowe, musisz zmieni\u0107 typ konta na \u201eBusiness-Pro&quot;. Musisz mie\u0107 konto typu \u201eBusiness-Pro&#8221;, aby akceptowa\u0107 p\u0142atno\u015bci kart\u0105 kredytow\u0105. Aby go uaktualni\u0107, kliknij \u0142\u0105cze \u201eUaktualnij do wersji Pro&#8221;, a PayPal zmieni typ Twojego konta na \u201eBusiness-Pro&#8221;.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20129-6081c034cf341.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-20129-6081c034cf341.png\" alt=\"Akceptuj p\u0142atno\u015bci kart\u0105 kredytow\u0105 za pomoc\u0105 PayPal Payments Pro w PHP\" ><\/a><\/p>\n<p>Nast\u0119pnie kliknij kart\u0119 \u201ePo\u015bwiadczenia API&#8221; i pobierz swoje dane uwierzytelniaj\u0105ce. B\u0119dziemy potrzebowa\u0107 tych po\u015bwiadcze\u0144 w nast\u0119pnej cz\u0119\u015bci tego samouczka.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20129-6081c0355f78e.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-20129-6081c0355f78e.png\" alt=\"Akceptuj p\u0142atno\u015bci kart\u0105 kredytow\u0105 za pomoc\u0105 PayPal Payments Pro w PHP\" ><\/a><\/p>\n<h3>Konfigurowalny formularz p\u0142atno\u015bci<\/h3>\n<p>Jak ju\u017c wspomnia\u0142em, korzystaj\u0105c z PayPal Payments Pro mo\u017cesz zaprojektowa\u0107 w\u0142asn\u0105 form\u0119 p\u0142atno\u015bci. Stw\u00f3rzmy \u0142adny formularz kasy, w kt\u00f3rym klient wprowadza swoje dane dotycz\u0105ce p\u0142atno\u015bci. W tym samouczku <a href=\"https:\/\/codepen.io\/hswd\/pen\/JYvgBW\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">u\u017cyj\u0119<\/a> \u0142adnie zaprojektowanego formularza na <a href=\"https:\/\/codepen.io\/hswd\/pen\/JYvgBW\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">codepen<\/a>.<\/p>\n<p>Ostateczna struktura folder\u00f3w powinna wygl\u0105da\u0107 nast\u0119puj\u0105co:<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20129-6081c0355f78e.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-20129-6081c0355f78e.png\" alt=\"Akceptuj p\u0142atno\u015bci kart\u0105 kredytow\u0105 za pomoc\u0105 PayPal Payments Pro w PHP\" ><\/a><\/p>\n<p>Nie my\u015bl o tym <code>vendor<\/code>, <code>charge.php<\/code>, <code>composer.json<\/code>, <code>composer.lock<\/code>na razie. Stworzymy to w dalszej cz\u0119\u015bci.<\/p>\n<p>Utw\u00f3rz <code>css\/card.css<\/code>plik i dodaj do niego poni\u017cszy kod zgodnie z <a href=\"https:\/\/codepen.io\/hswd\/pen\/JYvgBW\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">codepen<\/a>.<\/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.5%;\n\u00a0\u00a0float: left;\n\u00a0\u00a0margin-bottom: 2px;\n}\n#column-right {\n\u00a0\u00a0width: 46.5%;\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>Podobnie nasz <code>js\/card.js<\/code>plik b\u0119dzie mia\u0142 nast\u0119puj\u0105cy kod.<\/p>\n<pre><code>\/* Card.js plugin by Jesse Pollak. https:\/\/github.com\/jessepollak\/card *\/\n\u00a0\n$('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>Pobierz kopi\u0119 <code>jquery.card.js<\/code>z tego <a href=\"https:\/\/github.com\/jessepollak\/card\/blob\/master\/dist\/jquery.card.js\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">repozytorium GitHub<\/a>. Zapisz ten plik w swoim katalogu 'js&#8217;.<\/p>\n<p>Teraz utw\u00f3rz <code>index.html<\/code>plik. W tym pliku dodamy znacznik HTML, kt\u00f3ry wy\u015bwietla nasz formularz zam\u00f3wienia.<\/p>\n<pre><code>&lt;!DOCTYPE html&gt;\n&lt;html lang=\"en\"&gt;\n&lt;head&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;meta charset=\"UTF-8\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;meta http-equiv=\"X-UA-Compatible\" content=\"ie=edge\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;title&gt;Online Payments&lt;\/title&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;link rel=\"stylesheet\" href=\"css\/card.css\"&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;form method=\"POST\" action=\"charge.php\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"form-container\"&gt;\n\u00a0\u00a0\u00a0\u00a0\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\u00a0\u00a0\u00a0\u00a0&lt;h1&gt;Payment Information&lt;\/h1&gt;\n\u00a0\u00a0\u00a0\u00a0\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\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\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\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\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\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\u00a0\u00a0\u00a0\u00a0&lt;input id=\"column-right\" type=\"text\" name=\"cvc\" placeholder=\"CCV\" required=\"required\" \/&gt;\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"card-wrapper\"&gt;&lt;\/div&gt;\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\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\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\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\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\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\u00a0\u00a0\u00a0\u00a0&lt;input id=\"input-button\" name=\"submit\" type=\"submit\" value=\"Submit\"\/&gt;\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;\/form&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jquery\/3.6.0\/jquery.min.js\"&gt;&lt;\/script&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;script src=\"js\/jquery.card.js\"&gt;&lt;\/script&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;script src=\"js\/card.js\"&gt;&lt;\/script&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<p>Przejd\u017a do przegl\u0105darki i uruchom <code>index.html<\/code>plik. Powiniene\u015b teraz zobaczy\u0107 \u0142adnie wygl\u0105daj\u0105cy formularz kasy.<\/p>\n<h3>Akceptuj p\u0142atno\u015bci kart\u0105 kredytow\u0105 za pomoc\u0105 PayPal Payments Pro<\/h3>\n<p>Teraz mo\u017cesz ju\u017c korzysta\u0107 z po\u015bwiadcze\u0144 API PayPal i formularza HTML. Nadszed\u0142 czas, aby wszystko zdynamizowa\u0107. Integracja bramki p\u0142atniczej nie jest wcale \u0142atwym zadaniem. Musisz to zbada\u0107 i przeczyta\u0107 ca\u0142\u0105 dokumentacj\u0119 dostarczon\u0105 przez dostawc\u0119. Czasami staje si\u0119 to tak zagmatwane i pomimo d\u0142ugich godzin, nie uda\u0142o ci si\u0119 osi\u0105gn\u0105\u0107 celu. Wiele razy si\u0119 z tym mierzy\u0142am. A je\u015bli chodzi o PayPal, sytuacja komplikuje si\u0119 z powodu obszernej dokumentacji PayPal.<\/p>\n<p>Tak ju\u017c nie jest. <a href=\"https:\/\/omnipay.thephpleague.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Omnipay<\/a> u\u0142atwia \u017cycie naszemu programi\u015bcie w zakresie integracji bramki p\u0142atno\u015bci. Korzystaj\u0105c z tej biblioteki, nie musisz czyta\u0107 dokumentacji bramki p\u0142atno\u015bci. Po prostu uzyskaj dane uwierzytelniaj\u0105ce API, post\u0119puj zgodnie z instrukcjami Omnipay i gotowe. Sprawd\u017a ich <a href=\"https:\/\/github.com\/thephpleague\/omnipay\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">stron\u0119 GitHub,<\/a> aby uzyska\u0107 wi\u0119cej informacji.<\/p>\n<p>Uruchom poni\u017csze polecenie, aby zainstalowa\u0107 Omnipay i obs\u0142ugiwan\u0105 bibliotek\u0119 PayPal.<\/p>\n<pre><code>composer require league\/omnipay:^3 omnipay\/paypal<\/code><\/pre>\n<p>Po zainstalowaniu powy\u017cszych bibliotek, poni\u017cszy kod trafi do twojego <code>charge.php<\/code>pliku.<\/p>\n<pre><code>&lt;?php\nrequire_once \"vendor\/autoload.php\";\n\u00a0\u00a0\nuse OmnipayOmnipay;\n\u00a0\u00a0\n$gateway = Omnipay::create('PayPal_Pro');\n$gateway-&gt;setUsername(PAYPAL_API_USERNAME);\n$gateway-&gt;setPassword(PAYPAL_API_PASSWORD);\n$gateway-&gt;setSignature(PAYPAL_API_SIGNATURE);\n$gateway-&gt;setTestMode(true); \/\/ here 'true' is for sandbox. Pass 'false' when go live\n\u00a0\u00a0\nif (isset($_POST['submit'])) {\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0$arr_expiry = explode(\"\/\", $_POST['expiry']);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0$formData = array(\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'firstName' =&gt; $_POST['first-name'],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'lastName' =&gt; $_POST['last-name'],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'number' =&gt; $_POST['number'],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'expiryMonth' =&gt; trim($arr_expiry[0]),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'expiryYear' =&gt; trim($arr_expiry[1]),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'cvv' =&gt; $_POST['cvc']\n\u00a0\u00a0\u00a0\u00a0);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0try {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Send purchase request\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$response = $gateway-&gt;purchase([\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'card' =&gt; $formData\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0])-&gt;send();\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Process response\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\/\/ Payment was successful\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"Payment is successful. Your Transaction ID is: \". $response-&gt;getTransactionReference();\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} else {\n\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\u00a0echo \"Payment failed. \". $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>Pami\u0119taj, aby zast\u0105pi\u0107 symbole zast\u0119pcze PAYPAL_API_USERNAME, PAYPAL_API_PASSWORD, PAYPAL_API_SIGNATURE rzeczywistymi warto\u015bciami. Teraz przejd\u017a do przegl\u0105darki i spr\u00f3buj dokona\u0107 p\u0142atno\u015bci fikcyjnymi danymi karty kredytowej. Powiniene\u015b otrzyma\u0107 wiadomo\u015b\u0107 o sukcesie wraz z identyfikatorem transakcji. U\u017cytkownik mo\u017ce otrzyma\u0107 <a href=\"https:\/\/developer.paypal.com\/docs\/payflow\/payflow-pro\/payflow-pro-testing\/#credit-card-numbers-for-testing\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">testowe karty kredytowe<\/a> dostarczane przez PayPal.<\/p>\n<h3>Akceptuj p\u0142atno\u015bci na \u017cywo za pomoc\u0105 bramki p\u0142atno\u015bci PayPal Pro<\/h3>\n<p>Po zako\u0144czeniu testowania w piaskownicy przeka\u017c po\u015bwiadczenia na \u017cywo dla symboli zast\u0119pczych u\u017cywanych w kodzie. Musisz tak\u017ce przekaza\u0107 do <code>setTestMode()<\/code>metody warto\u015b\u0107 'false&#8217; .<\/p>\n<p>Wszystko sprowadza si\u0119 do akceptowania p\u0142atno\u015bci kart\u0105 kredytow\u0105 za pomoc\u0105 PayPal Payments Pro w PHP. Mam nadziej\u0119, \u017ce pomo\u017ce Ci to zintegrowa\u0107 rozwi\u0105zanie p\u0142atnicze na Twojej stronie internetowej. Wypr\u00f3buj ten samouczek i daj mi zna\u0107 swoje przemy\u015blenia i sugestie w sekcji komentarzy poni\u017cej.<\/p>\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 Ci, jak akceptowa\u0107 p\u0142atno\u015bci kart\u0105 kredytow\u0105 na Twojej stronie internetowej za pomoc\u0105 PHP. Wykorzystam bibliotek\u0119 Omnipay i zintegruj\u0119 Paypal<\/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-29719","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\/29719","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=29719"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts\/29719\/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=29719"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/categories?post=29719"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/tags?post=29719"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}