filipegar/erede

为 e.Rede RESTful 支付处理提供的 PHP 无框架实现。

1.1 2022-02-15 16:56 UTC

This package is auto-updated.

Last update: 2024-09-15 22:18:23 UTC


README

#e.Rede PHP SDK

这是一个 PHP 的无框架框架实现,用于 UseRede 的 e.Rede RESTful 服务。UseRede

UseRede(也称为 Redecard)是巴西领先的信用卡收单机构之一。

在开始使用之前,请确保该产品已为您的工作站购买。

主要功能

  • 信用卡支付。
  • 借记卡支付/认证。
  • 取消授权/捕获。
  • 查询交易。

限制

由于涉及应用程序的用户界面,SDK 仅作为创建交易的框架。在直接授权(不使用 3DS)的情况下,没有限制;但在需要认证的情况下,开发者必须使用 SDK 生成交易,并使用 Rede 返回的链接在应用程序中提供用户重定向。

安装 e.Rede

通过 Composer 安装此软件包是最好的方式。

如果您已经有了一个 composer.json 文件,只需将以下依赖项添加到您的项目中

"require": {
    "filipegar/erede": "^1.0"
}

将依赖项添加到 composer.json 后,只需执行

composer install

或者,您可以直接在终端中执行

composer require "filipegar/erede"

使用 SDK

要使用 SDK 创建简单的信用卡支付,只需这样做

创建信用卡支付

<?php
require 'vendor/autoload.php';

use Filipegar\eRede\Acquirer\Environment;
use Filipegar\eRede\Acquirer\ERedeClient;
use Filipegar\eRede\Acquirer\Transaction;
use Filipegar\eRede\Acquirer\Refund;
use Filipegar\eRede\Acquirer\Url;
use Filipegar\eRede\Merchant;
use Filipegar\eRede\Acquirer\Requests\ERedeErrorException;

//Configure suas credenciais - PV e token
$merchant = new Merchant("PVestabelecimento", "TOKEN");
//Crie seu cliente da SDK
$eRede = new ERedeClient($merchant, Environment::sandbox());
// Crie uma instância de Transaction informando o ID do pedido na loja
$transacao = (new Transaction("IDpedido"))->setCapture(false)->setSoftDescriptor('PEDIDO 12345');
// Crie uma instância de Payment informando o valor do pagamento
$payment = $transacao->payment(123456);
// Crie uma instância de Credit Card utilizando os dados de teste
// disponíveis no manual de integração
$card = $transacao->creditCard('CVV/CVV2')
        ->setCardHolderName('Fulano da Silva')
        ->setCardNumber('0000000000000001')
        ->setExpirationMonth('01')->setExpirationYear('2019');

// Envie o pagamento para a Rede
try {
    // Utilizando o cliente SDK criado com Merchant + Environment
    $transacao = $eRede->authorize($transacao);

    // Com a venda criada na Cielo, já temos o ID do pagamento, TID e demais
    // dados retornados pela Cielo
    $transactionTid = $transacao->getTid();

    // Com o ID do pagamento, podemos fazer sua captura, se ela não tiver sido capturada ainda
    $captura = $eRede->captureTransaction($transactionTid, 123456);

    // E também podemos fazer seu cancelamento, se for o caso
    $refund = (new Refund())->setTid($transactionTid)->setAmount(123456)->url('CALLBACKurl', URL::URL_CALLBACK);
    $refund = $eRede->refundTransaction($refund);
} catch (ERedeErrorException $e) {
    // Em caso de erros de integração, podemos tratar o erro aqui.
    // os códigos de erro estão todos disponíveis no manual de integração.
    $error = $e->getMessage();
    //os erros de transferência do Guzzle estão em getPrevious().
    $erroERede = (string) $e->getPrevious()->getRequest()->getBody();
}
// ...

创建借记卡/认证支付

<?php
require 'vendor/autoload.php';

use Filipegar\eRede\Acquirer\Environment;
use Filipegar\eRede\Acquirer\ERedeClient;
use Filipegar\eRede\Acquirer\Transaction;
use Filipegar\eRede\Acquirer\Url;
use Filipegar\eRede\Acquirer\ThreeDSecure;
use Filipegar\eRede\Merchant;
use Filipegar\eRede\Acquirer\Requests\ERedeErrorException;

//Configure suas credenciais - PV e token
$merchant = new Merchant("PVestabelecimento", "TOKEN");
//Crie seu cliente da SDK
$eRede = new ERedeClient($merchant, Environment::sandbox());
// Crie uma instância de Transaction informando o ID do pedido na loja
$transacao = (new Transaction("IDpedido"))->setCapture(false)->setSoftDescriptor('PEDIDO 12345');
// Crie uma instância de Payment informando o valor do pagamento
$payment = $transacao->payment(123456);
// Crie uma instância de Credit Card utilizando os dados de teste
// disponíveis no manual de integração
$card = $transacao->debitCard('CVV/CVV2')
        ->setCardHolderName('Fulano da Silva')
        ->setCardNumber('0000000000000001')
        ->setExpirationMonth('01')->setExpirationYear('2019');

// Obrigatório utilizar 3DS - 3D Secure - transação autenticada
$threeD = $transacao->threeDSecure(ThreeDSecure::MPI_EREDE, ThreeDSecure::FAILURE_DECLINE)->setUserAgent('USER_AGENT_string');
// Defina as URLs para redirecionar seu cliente de volta para seu site.
$transacao->url('https://teste.com.br/erede/sucesso', Url::URL_SUCCESS)->url('https://teste.com.br/erede/falha', Url::URL_FAILURE);

// Envie o pagamento para a Rede
try {
    // Utilizando o cliente SDK criado com Merchant + Environment
    $transacao = $eRede->authorize($transacao);

    // Redirecione o usuário de sua aplicação para a URL de autenticação.
    $transacao->getThreeDSecure()->getRedirectUrl();
    
} catch (ERedeErrorException $e) {
    // Em caso de erros de integração, podemos tratar o erro aqui.
    // os códigos de erro estão todos disponíveis no manual de integração.
    $error = $e->getMessage();
    //os erros de transferência do Guzzle estão em getPrevious().
    $erroERede = (string) $e->getPrevious()->getRequest()->getBody();
}
// ...

请注意,e.Rede 不会为未完成的认证交易生成 TID、NSU 或授权代码。在沙盒中,无法通过商店的 referenceId 查询这些交易。因此,方法 authorize 的响应中返回的 Transaction 对象将仅包含重定向链接、请求状态(220)和请求的日期/时间。

查询交易

<?php
require 'vendor/autoload.php';

use Filipegar\eRede\Acquirer\Environment;
use Filipegar\eRede\Acquirer\ERedeClient;
use Filipegar\eRede\Merchant;
use Filipegar\eRede\Acquirer\Requests\ERedeErrorException;

//Configure suas credenciais - PV e token
$merchant = new Merchant("PVestabelecimento", "TOKEN");
//Crie seu cliente da SDK
$eRede = new ERedeClient($merchant, Environment::sandbox());

// Consulta de status da transação
try {
    $query = $eRede->queryTransaction('TIDcom20digitos');
    // Ou ainda via Referencia da loja
    $query = $eRede->queryTransactionReference('Reference');
    
    // Consulte os dados da transação via getTransaction()
    $nsu = $query->getTransaction()->getNsu();
    $cardBin = $query->getTransaction()->getCard()->getCardBin();
    $amount = $query->getTransaction()->getPayment()->getAmount();
    
    // Consulte os dados da captura
    $nsuCaptura = $query->getCapture()->nsu;
    
    // Ou consulte os dados de qualquer cancelamento
    $refundId = $query->getRefunds()[0]->getRefundId();
} catch (ERedeErrorException $e) {
    // Em caso de erros de integração, podemos tratar o erro aqui.
    // os códigos de erro estão todos disponíveis no manual de integração.
    $error = $e->getMessage();
    //os erros de transferência do Guzzle estão em getPrevious().
    $erroERede = (string) $e->getPrevious()->getRequest()->getBody();
}
// ...

测试卡

测试卡在 e.Rede 文档中可用,请点击 此处

点击“注册”以获取您的 token 和 PV 号码以测试此 SDK。

e.Rede 文档

e.Rede 文档可在 Rede 网站上找到,请点击 此处

如果您发现行为与文档不同,请报告一个问题以供检查。

许可证

此开源软件包遵循 MIT 许可证 的条款。