{"id":28638,"date":"2021-06-15T12:26:00","date_gmt":"2021-06-15T09:26:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=28638"},"modified":"2021-10-18T03:59:40","modified_gmt":"2021-10-18T00:59:40","slug":"aceite-pagamentos-com-cartao-de-credito-usando-authorize-net-payment-gateway-em-php","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pt-pt\/aceite-pagamentos-com-cartao-de-credito-usando-authorize-net-payment-gateway-em-php\/","title":{"rendered":"Aceite pagamentos com cart\u00e3o de cr\u00e9dito usando Authorize.Net Payment Gateway em PHP"},"content":{"rendered":"<p>Quer integrar uma op\u00e7\u00e3o de pagamento com cart\u00e3o de cr\u00e9dito em seu site? Se sim, ent\u00e3o Authorize.Net \u00e9 uma boa escolha para voc\u00ea. Fundado em 1996, este \u00e9 um dos mais populares sistemas de pagamento na Internet.<\/p>\n<p>Para uma loja online, os cart\u00f5es de cr\u00e9dito s\u00e3o amplamente usados \u200b\u200bpara aceitar pagamentos. Os clientes preferem pagar com cart\u00e3o de cr\u00e9dito para comprar produtos online. Em sua loja, voc\u00ea deve dar a op\u00e7\u00e3o de pagamento com cart\u00e3o de cr\u00e9dito. Neste artigo, mostrarei como integrar o gateway de pagamento Authorize.Net, que permitir\u00e1 que voc\u00ea receba pagamentos com cart\u00e3o de cr\u00e9dito.<\/p>\n<p>Sempre que estamos adicionando gateways de pagamento, devemos primeiro testar as transa\u00e7\u00f5es no modo sandbox. Assim que os pagamentos de teste estiverem funcionando corretamente, voc\u00ea pode ir para a vers\u00e3o ao vivo.<\/p>\n<p>Para come\u00e7ar a usar Authorize.Net, primeiro crie uma <a href=\"https:\/\/developer.authorize.net\/hello_world\/sandbox\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">conta sandbox<\/a>. Ap\u00f3s a cria\u00e7\u00e3o da conta, copie o ID de login e a chave de transa\u00e7\u00e3o. Voc\u00ea pode obter essas chaves de API em <strong>Conta-&gt; Credenciais e chaves de API<\/strong>. Por favor, consulte a imagem abaixo.<\/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=\"Aceite pagamentos com cart\u00e3o de cr\u00e9dito usando Authorize.Net Payment Gateway em PHP\" ><\/a><\/p>\n<p>Na pr\u00f3xima p\u00e1gina, voc\u00ea obter\u00e1 seu &#8216;ID de login da API&#8217;. Crie uma chave de transa\u00e7\u00e3o na se\u00e7\u00e3o &#8216;Criar Nova (s) Chave (s)&#8217;, conforme mostrado na captura de tela abaixo.<\/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=\"Aceite pagamentos com cart\u00e3o de cr\u00e9dito usando Authorize.Net Payment Gateway em PHP\" ><\/a><\/p>\n<h3>Come\u00e7ando<\/h3>\n<p>Para integrar o Authorize.Net, usaremos a biblioteca <a href=\"https:\/\/github.com\/thephpleague\/omnipay\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Omnipay<\/a>, que oferece uma maneira limpa e f\u00e1cil de integra\u00e7\u00e3o de pagamentos. Instale a biblioteca Omnipay em seu projeto usando o comando:<\/p>\n<pre><code>composer require league\/omnipay:^3<\/code><\/pre>\n<p>Ele instalar\u00e1 a biblioteca Omnipay. Al\u00e9m disso, somos obrigados a instalar o pacote Omnipay para Authorize.Net. Este pacote nos permite capturar o pagamento atrav\u00e9s do portal de pagamento Authorize.Net. Leia mais sobre este pacote em sua <a href=\"https:\/\/github.com\/academe\/omnipay-authorizenetapi\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">documenta\u00e7\u00e3o<\/a>. Execute o comando abaixo para instalar este pacote:<\/p>\n<pre><code>composer require \"academe\/omnipay-authorizenetapi: ~3.0\"<\/code><\/pre>\n<p>Estamos prontos com bibliotecas compat\u00edveis. Agora, vamos criar um formul\u00e1rio simples para inserir o valor e os detalhes do cart\u00e3o. Estou criando um <code>index.php<\/code>arquivo e adiciono o HTML abaixo nele.<\/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>Ao aceitar o pagamento online, devemos armazenar os detalhes da transa\u00e7\u00e3o no banco de dados. Portanto, para armazenar as informa\u00e7\u00f5es da transa\u00e7\u00e3o, crie uma tabela de &#8216;pagamentos&#8217; no banco de dados usando a consulta abaixo.<\/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>Aceitar pagamento com cart\u00e3o de cr\u00e9dito usando Authorize.Net<\/h3>\n<p>Voc\u00ea copiou as chaves API de sua conta Authorize.Net nas etapas anteriores. \u00c9 hora de adicionar essas chaves ao c\u00f3digo PHP. Armazene essas credenciais no <code>config.php<\/code>arquivo. Tamb\u00e9m estou adicionando a conex\u00e3o de banco de dados a este arquivo.<\/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>Substitua os marcadores de posi\u00e7\u00e3o pelos valores reais. Como estamos testando os pagamentos no sandbox, passei true ao m\u00e9todo <code>setTestMode<\/code>. Quando voc\u00ea estiver pronto para passar para a produ\u00e7\u00e3o, remova \/ comente esta linha.<\/p>\n<p>No formul\u00e1rio que criamos acima, eu defini <code>charge.php<\/code>como a URL de a\u00e7\u00e3o. Isso significa que o c\u00f3digo real que captura o pagamento com cart\u00e3o de cr\u00e9dito ir\u00e1 para este arquivo.<\/p>\n<p><strong>charge.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>Agora voc\u00ea pode prosseguir e testar um pagamento. Obtenha esses <a href=\"https:\/\/developer.authorize.net\/hello_world\/testing_guide\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">n\u00fameros de cart\u00e3o de cr\u00e9dito<\/a> de teste para testar o pagamento. Na resposta bem-sucedida, voc\u00ea deve obter o ID da transa\u00e7\u00e3o.<\/p>\n<p>O propriet\u00e1rio pode ver as transa\u00e7\u00f5es no painel do Authorize.Net. Voc\u00ea encontrar\u00e1 transa\u00e7\u00f5es em &#8216;Transa\u00e7\u00f5es n\u00e3o liquidadas&#8217;. O Authorize.Net posteriormente liquida a transa\u00e7\u00e3o por conta pr\u00f3pria e notifica voc\u00ea por e-mail.<\/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=\"Aceite pagamentos com cart\u00e3o de cr\u00e9dito usando Authorize.Net Payment Gateway em PHP\" ><\/a><\/p>\n<p>Espero que voc\u00ea entenda como aceitar pagamentos com cart\u00e3o de cr\u00e9dito usando o gateway de pagamento Authorize.Net. Por favor, compartilhe suas id\u00e9ias ou sugest\u00f5es na se\u00e7\u00e3o de coment\u00e1rios abaixo.<\/p>\n<h4>Artigos relacionados<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/integracao-do-gateway-de-pagamento-do-paypal-em-php-usando-a-api-rest-do-paypal\/\" title=\"Integra\u00e7\u00e3o do gateway de pagamento do PayPal em PHP usando a API REST do PayPal\">Integra\u00e7\u00e3o do gateway de pagamento do PayPal em PHP usando a API REST do PayPal<\/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<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/aceite-pagamentos-com-cartao-de-credito-usando-paypal-payments-pro-em-php\/\" title=\"Aceite pagamentos com cart\u00e3o de cr\u00e9dito usando Paypal Payments Pro em PHP\">Aceite pagamentos com cart\u00e3o de cr\u00e9dito usando Paypal Payments Pro em PHP<\/a><\/li>\n<\/ul>\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, estudamos como integrar o Authorize.net para aceitar pagamentos com cart\u00e3o de cr\u00e9dito. Adicionar op\u00e7\u00e3o de pagamento com cart\u00e3o de cr\u00e9dito \u00e9 muito comum<\/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-28638","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\/28638","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=28638"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts\/28638\/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=28638"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/categories?post=28638"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/tags?post=28638"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}