{"id":28857,"date":"2021-06-21T16:29:00","date_gmt":"2021-06-21T13:29:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=28857"},"modified":"2021-10-18T03:57:55","modified_gmt":"2021-10-18T00:57:55","slug":"aceite-pagamentos-com-cartao-de-credito-usando-paypal-payments-pro-em-php","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pt-pt\/aceite-pagamentos-com-cartao-de-credito-usando-paypal-payments-pro-em-php\/","title":{"rendered":"Aceite pagamentos com cart\u00e3o de cr\u00e9dito usando PayPal Payments Pro em PHP"},"content":{"rendered":"<p>Voc\u00ea est\u00e1 procurando integrar um gateway de pagamento que aceite pagamentos com cart\u00e3o de cr\u00e9dito? O pagamento com cart\u00e3o de cr\u00e9dito \u00e9 uma das melhores op\u00e7\u00f5es para aceitar pagamentos online. Os clientes preferem pagar online com seus cart\u00f5es de cr\u00e9dito. Pode estar acontecendo que voc\u00ea est\u00e1 perdendo clientes apenas porque seu site n\u00e3o aceita pagamentos com cart\u00e3o de cr\u00e9dito. Como propriet\u00e1rio de uma loja online, voc\u00ea deve adicionar uma op\u00e7\u00e3o de cart\u00e3o de cr\u00e9dito para aceitar pagamentos em seu site.<\/p>\n<p>Existem muitos gateways de pagamento dispon\u00edveis que oferecem suporte para cart\u00e3o de cr\u00e9dito. Por exemplo, Authorize.Net e Stripe permitem aceitar pagamentos com cart\u00e3o online.<\/p>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/aceite-pagamentos-com-cartao-de-credito-usando-authorize-net-payment-gateway-em-php\/\" title=\"Aceite pagamentos com cart\u00e3o de cr\u00e9dito usando Authorize.Net Payment Gateway em PHP\" >Aceite pagamentos com cart\u00e3o de cr\u00e9dito usando Authorize.Net Payment Gateway em PHP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/um-guia-para-integracao-do-stripe-em-sites-com-php\/\" title=\"Um guia para integra\u00e7\u00e3o do Stripe em sites com PHP\" >Um guia para integra\u00e7\u00e3o do Stripe em sites com PHP<\/a><\/li>\n<\/ul>\n<p>Os leitores escolhem qualquer uma das op\u00e7\u00f5es acima, mas se quiserem usar o PayPal, continuem lendo. Neste artigo, mostrarei como aceitar pagamentos com cart\u00e3o de cr\u00e9dito usando o PayPal Payments Pro.<\/p>\n<p>O PayPal Payments Pro aceita pagamentos com uma solu\u00e7\u00e3o totalmente personaliz\u00e1vel. Isso significa que voc\u00ea pode criar sua pr\u00f3pria forma de pagamento e cobrar de seu cliente. Ele n\u00e3o redireciona voc\u00ea para o site do PayPal para concluir a transa\u00e7\u00e3o.<\/p>\n<p>Tamb\u00e9m vamos criar nosso pr\u00f3prio formul\u00e1rio onde o cliente insere os dados do cart\u00e3o e pode pagar sem sair do site. O usu\u00e1rio pode criar sua pr\u00f3pria p\u00e1gina de checkout e permite que ele insira os detalhes do cart\u00e3o. Ent\u00e3o, sem mais delongas, vamos come\u00e7ar.<\/p>\n<h3>Come\u00e7ando<\/h3>\n<p>Antes de aceitar pagamentos em tempo real, \u00e9 sempre recomend\u00e1vel test\u00e1-lo primeiro no modo sandbox. Se tudo funcionar conforme o esperado no sandbox, devemos ativ\u00e1-lo para evitar problemas com os pagamentos do cliente. Para testar os pagamentos, voc\u00ea precisa ter uma conta sandbox do PayPal. Crie sua conta no <a href=\"https:\/\/developer.paypal.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PayPal Developer<\/a>. Depois de criar uma conta, v\u00e1 para <strong>SANDBOX-&gt; Contas<\/strong> no menu do lado esquerdo e crie uma conta comercial.<\/p>\n<p>No momento em que este artigo foi escrito, o PayPal Payments Pro est\u00e1 dispon\u00edvel nos Estados Unidos, Reino Unido e Canad\u00e1. Isso significa que, ao criar uma conta, voc\u00ea deve selecionar um desses pa\u00edses.<\/p>\n<p>Depois de ter uma conta empresarial, voc\u00ea precisa atualizar seu tipo de conta para &#8216;Business-Pro&#8217;. Voc\u00ea deve ter seu tipo de conta como &#8216;Business-Pro&#8217; para aceitar pagamentos com cart\u00e3o de cr\u00e9dito. Para atualiz\u00e1-lo, clique no link &#8216;Atualizar para Pro&#8217; e o PayPal converter\u00e1 seu tipo de conta para &#8216;Business-Pro&#8217;.<\/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=\"Aceite pagamentos com cart\u00e3o de cr\u00e9dito usando PayPal Payments Pro em PHP\" ><\/a><\/p>\n<p>Em seguida, clique na guia &#8216;Credenciais de API&#8217; e obtenha suas credenciais. Precisaremos dessas credenciais na pr\u00f3xima parte deste tutorial.<\/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=\"Aceite pagamentos com cart\u00e3o de cr\u00e9dito usando PayPal Payments Pro em PHP\" ><\/a><\/p>\n<h3>Formul\u00e1rio de pagamento personaliz\u00e1vel<\/h3>\n<p>Como eu disse, usando o PayPal Payments Pro voc\u00ea pode criar sua pr\u00f3pria forma de pagamento. Vamos criar um bom formul\u00e1rio de checkout onde o cliente insere seus detalhes de pagamento. Vou usar um formul\u00e1rio de design agrad\u00e1vel no <a href=\"https:\/\/codepen.io\/hswd\/pen\/JYvgBW\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">codepen<\/a> para este tutorial.<\/p>\n<p>A estrutura final da pasta deve ser a seguinte:<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20129-6081c0355f78e.png\"><\/a><\/p>\n<p>N\u00e3o pense sobre <code>vendor<\/code>, <code>charge.php<\/code>, <code>composer.json<\/code>, <code>composer.lock<\/code>por enquanto. Iremos cri\u00e1-lo na parte posterior.<\/p>\n<p>Crie um <code>css\/card.css<\/code>arquivo e adicione o c\u00f3digo abaixo conforme fornecido no <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>Da mesma forma, nosso <code>js\/card.js<\/code>arquivo ter\u00e1 o seguinte c\u00f3digo.<\/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>Obtenha uma c\u00f3pia <code>jquery.card.js<\/code>deste <a href=\"https:\/\/github.com\/jessepollak\/card\/blob\/master\/dist\/jquery.card.js\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">reposit\u00f3rio GitHub<\/a>. Armazene este arquivo no diret\u00f3rio &#8216;js&#8217;.<\/p>\n<p>Agora, crie um <code>index.html<\/code>arquivo. Neste arquivo, adicionaremos marca\u00e7\u00e3o HTML que exibe nosso formul\u00e1rio de checkout.<\/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>V\u00e1 at\u00e9 o navegador e execute o <code>index.html<\/code>arquivo. Agora voc\u00ea deve ver um formul\u00e1rio de checkout bem parecido.<\/p>\n<h3>Aceite pagamentos com cart\u00e3o de cr\u00e9dito usando o PayPal Payments Pro<\/h3>\n<p>Agora voc\u00ea est\u00e1 pronto com suas credenciais de API do PayPal e formul\u00e1rio HTML. \u00c9 hora de tornar as coisas din\u00e2micas. Integrar um gateway de pagamento n\u00e3o \u00e9 uma tarefa f\u00e1cil. Voc\u00ea precisa pesquis\u00e1-lo e ler toda a documenta\u00e7\u00e3o fornecida pelo fornecedor. \u00c0s vezes fica muito confuso e, apesar de passar muitas horas, voc\u00ea falhou em atingir seu objetivo. Eu j\u00e1 tinha enfrentado isso muitas vezes. E quando se trata do PayPal, a situa\u00e7\u00e3o se torna mais complexa por causa da vasta documenta\u00e7\u00e3o do PayPal.<\/p>\n<p>Este n\u00e3o \u00e9 mais o caso. <a href=\"https:\/\/omnipay.thephpleague.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Omnipay<\/a> facilita a vida de nosso desenvolvedor em termos de integra\u00e7\u00e3o de gateway de pagamento. Usando esta biblioteca, voc\u00ea n\u00e3o precisa ler a documenta\u00e7\u00e3o do gateway de pagamento. Basta obter suas credenciais de API, seguir as instru\u00e7\u00f5es do Omnipay e pronto. Confira a <a href=\"https:\/\/github.com\/thephpleague\/omnipay\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">p\u00e1gina do GitHub<\/a> para mais detalhes.<\/p>\n<p>Execute o comando abaixo para instalar o Omnipay e a biblioteca do PayPal compat\u00edvel.<\/p>\n<pre><code>composer require league\/omnipay:^3 omnipay\/paypal<\/code><\/pre>\n<p>Depois de instalar as bibliotecas acima, o c\u00f3digo abaixo ir\u00e1 para dentro do seu <code>charge.php<\/code>arquivo.<\/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>Certifique-se de substituir PAYPAL_API_USERNAME, PAYPAL_API_PASSWORD, PAYPAL_API_SIGNATURE do espa\u00e7o reservado pelos valores reais. Agora v\u00e1 para o seu navegador e tente fazer um pagamento com os detalhes do cart\u00e3o de cr\u00e9dito fict\u00edcio. Voc\u00ea deve receber uma mensagem de sucesso junto com seu ID de transa\u00e7\u00e3o. O usu\u00e1rio pode obter <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\">cart\u00f5es de cr\u00e9dito de teste<\/a> fornecidos pelo PayPal.<\/p>\n<h3>Aceitar pagamento em tempo real com PayPal Pro Payment Gateway<\/h3>\n<p>Depois de concluir o teste de sandbox, passe as credenciais ao vivo para os espa\u00e7os reservados usados \u200b\u200bem um c\u00f3digo. Voc\u00ea tamb\u00e9m precisa passar o valor &#8216;falso&#8217; para o <code>setTestMode()<\/code>m\u00e9todo.<\/p>\n<p>Trata-se de aceitar pagamentos com cart\u00e3o de cr\u00e9dito usando o PayPal Payments Pro em PHP. Espero que ajude voc\u00ea a integrar uma solu\u00e7\u00e3o de pagamento para o seu site. Experimente este tutorial e deixe-me saber sua opini\u00e3o e sugest\u00f5es na se\u00e7\u00e3o de coment\u00e1rios abaixo.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte de grava\u00e7\u00e3o:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Neste artigo, mostrarei como aceitar pagamentos com cart\u00e3o de cr\u00e9dito em seu site com PHP. Vou usar a biblioteca Omnipay e integrar o 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":[278],"tags":[848],"class_list":["post-28857","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-9","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts\/28857","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/comments?post=28857"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts\/28857\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/media\/21609"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/media?parent=28857"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/categories?post=28857"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/tags?post=28857"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}