...
✅ Notícias, temas e plug-ins da WEB e do WordPress. Aqui compartilhamos dicas e as melhores soluções para sites.

Aceite pagamentos com cartão de crédito usando Authorize.Net Payment Gateway em PHP

25

Quer integrar uma opção de pagamento com cartão de crédito em seu site? Se sim, então Authorize.Net é uma boa escolha para você. Fundado em 1996, este é um dos mais populares sistemas de pagamento na Internet.

Para uma loja online, os cartões de crédito são amplamente usados ​​para aceitar pagamentos. Os clientes preferem pagar com cartão de crédito para comprar produtos online. Em sua loja, você deve dar a opção de pagamento com cartão de crédito. Neste artigo, mostrarei como integrar o gateway de pagamento Authorize.Net, que permitirá que você receba pagamentos com cartão de crédito.

Sempre que estamos adicionando gateways de pagamento, devemos primeiro testar as transações no modo sandbox. Assim que os pagamentos de teste estiverem funcionando corretamente, você pode ir para a versão ao vivo.

Para começar a usar Authorize.Net, primeiro crie uma conta sandbox. Após a criação da conta, copie o ID de login e a chave de transação. Você pode obter essas chaves de API em Conta-> Credenciais e chaves de API. Por favor, consulte a imagem abaixo.

Aceite pagamentos com cartão de crédito usando Authorize.Net Payment Gateway em PHP

Na próxima página, você obterá seu ‘ID de login da API’. Crie uma chave de transação na seção ‘Criar Nova (s) Chave (s)’, conforme mostrado na captura de tela abaixo.

Aceite pagamentos com cartão de crédito usando Authorize.Net Payment Gateway em PHP

Começando

Para integrar o Authorize.Net, usaremos a biblioteca Omnipay, que oferece uma maneira limpa e fácil de integração de pagamentos. Instale a biblioteca Omnipay em seu projeto usando o comando:

composer require league/omnipay:^3

Ele instalará a biblioteca Omnipay. Além disso, somos obrigados a instalar o pacote Omnipay para Authorize.Net. Este pacote nos permite capturar o pagamento através do portal de pagamento Authorize.Net. Leia mais sobre este pacote em sua documentação. Execute o comando abaixo para instalar este pacote:

composer require "academe/omnipay-authorizenetapi: ~3.0"

Estamos prontos com bibliotecas compatíveis. Agora, vamos criar um formulário simples para inserir o valor e os detalhes do cartão. Estou criando um index.phparquivo e adiciono o HTML abaixo nele.

<form action="charge.php" method="post">
    <input type="text" name="amount" placeholder="Enter Amount" />
    <input type="text" name="cc_number" placeholder="Card Number" />
    <input type="text" name="expiry_month" placeholder="Month" />
    <input type="text" name="expiry_year" placeholder="Year" />
    <input type="text" name="cvv" placeholder="CVV" />
    <input type="submit" name="submit" value="Submit" />
</form>

Ao aceitar o pagamento online, devemos armazenar os detalhes da transação no banco de dados. Portanto, para armazenar as informações da transação, crie uma tabela de ‘pagamentos’ no banco de dados usando a consulta abaixo.

CREATE TABLE `payments` ( `id` int(11) NOT NULL AUTO_INCREMENT,
 `transaction_id` varchar(255) NOT NULL,
 `amount` float(10,2) NOT NULL,
 `currency` varchar(255) NOT NULL,
 `payment_status` varchar(255) NOT NULL,
 `captured_at` datetime NOT NULL DEFAULT current_timestamp(),
 PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Aceitar pagamento com cartão de crédito usando Authorize.Net

Você copiou as chaves API de sua conta Authorize.Net nas etapas anteriores. É hora de adicionar essas chaves ao código PHP. Armazene essas credenciais no config.phparquivo. Também estou adicionando a conexão de banco de dados a este arquivo.

config.php

<?php
require_once "vendor/autoload.php";
  
// Connect with the database
$db = new mysqli('localhost', 'MYSQL_DB_USERNAME', 'MYSQL_DB_PASSWORD', 'MYSQL_DB_NAME');
  
if ($db->connect_errno) {
    die("Connect failed: ". $db->connect_error);
}
  
$gateway = OmnipayOmnipay::create('AuthorizeNetApi_Api');
$gateway->setAuthName('PASTE_ANET_API_LOGIN_ID');
$gateway->setTransactionKey('PASTE_ANET_TRANSACTION_KEY');
$gateway->setTestMode(true); //comment this line when move to 'live'

Substitua os marcadores de posição pelos valores reais. Como estamos testando os pagamentos no sandbox, passei true ao método setTestMode. Quando você estiver pronto para passar para a produção, remova / comente esta linha.

No formulário que criamos acima, eu defini charge.phpcomo a URL de ação. Isso significa que o código real que captura o pagamento com cartão de crédito irá para este arquivo.

charge.php

<?php
require_once "config.php";
  
if (isset($_POST['submit'])) {
  
    try {
        $creditCard = new OmnipayCommonCreditCard([
            'number' => $_POST['cc_number'],
            'expiryMonth' => $_POST['expiry_month'],
            'expiryYear' => $_POST['expiry_year'],
            'cvv' => $_POST['cvv'],
        ]);
  
        // Generate a unique merchant site transaction ID.
        $transactionId = rand(100000000, 999999999);
  
        $response = $gateway->authorize([
            'amount' => $_POST['amount'],
            'currency' => 'USD',
            'transactionId' => $transactionId,
            'card' => $creditCard,
        ])->send();
  
        if($response->isSuccessful()) {
  
            // Captured from the authorization response.
            $transactionReference = $response->getTransactionReference();
  
            $response = $gateway->capture([
                'amount' => $_POST['amount'],
                'currency' => 'USD',
                'transactionReference' => $transactionReference,
                ])->send();
  
            $transaction_id = $response->getTransactionReference();
            $amount = $_POST['amount'];
  
            // Insert transaction data into the database
            $isPaymentExist = $db->query("SELECT * FROM payments WHERE transaction_id = '".$transaction_id."'");
  
            if($isPaymentExist->num_rows == 0) {
                $insert = $db->query("INSERT INTO payments(transaction_id, amount, currency, payment_status) VALUES('$transaction_id', '$amount', 'USD', 'Captured')");
            }
  
            echo "Your payment transaction id: ". $transaction_id;
        } else {
            // not successful
            echo $response->getMessage();
        }
    } catch(Exception $e) {
        echo $e->getMessage();
    }
}

Agora você pode prosseguir e testar um pagamento. Obtenha esses números de cartão de crédito de teste para testar o pagamento. Na resposta bem-sucedida, você deve obter o ID da transação.

O proprietário pode ver as transações no painel do Authorize.Net. Você encontrará transações em ‘Transações não liquidadas’. O Authorize.Net posteriormente liquida a transação por conta própria e notifica você por e-mail.

Aceite pagamentos com cartão de crédito usando Authorize.Net Payment Gateway em PHP

Espero que você entenda como aceitar pagamentos com cartão de crédito usando o gateway de pagamento Authorize.Net. Por favor, compartilhe suas idéias ou sugestões na seção de comentários abaixo.

Artigos relacionados

Fonte de gravação: artisansweb.net

Este site usa cookies para melhorar sua experiência. Presumiremos que você está ok com isso, mas você pode cancelar, se desejar. Aceitar Consulte Mais informação