Skip to content
Daniel Costa edited this page Sep 8, 2014 · 1 revision

Cancelamento com a RedeCard

Exemplo de código para realizar o cancelamento com a RedeCard

use RedeCard\Ecommerce\Client as RedeCardClient;
use RedeCard\Ecommerce\Entity\Authentication;
use RedeCard\Ecommerce\Entity\Enum\CardAccountTypeEnum;
use RedeCard\Ecommerce\Entity\Enum\Currency\Iso4217Enum;
use RedeCard\Ecommerce\Entity\Enum\MethodEnum;
use RedeCard\Ecommerce\Entity\Request;
use RedeCard\Ecommerce\Entity\Response;
use RedeCard\Ecommerce\Entity\Transaction\CardTransaction\Card;
use RedeCard\Ecommerce\Entity\Transaction\CardTransaction\Card\Cv2Avs;
use RedeCard\Ecommerce\Entity\Transaction\CardTransaction;
use RedeCard\Ecommerce\Entity\Transaction\HistoricTransaction;
use RedeCard\Ecommerce\Entity\Transaction\TransactionDetails\Amount;
use RedeCard\Ecommerce\Entity\Transaction\TransactionDetails\Installments;
use RedeCard\Ecommerce\Entity\Transaction\TransactionDetails;
use RedeCard\Ecommerce\Entity\Transaction;
use RedeCard\Ecommerce\Exception\RedeCardEcommerceException;
use RedeCard\Ecommerce\Serializer\Builder;

class MyRedeClient
{

	public function cancelCreditCard(...)
	{
		$historicTransaction = new HistoricTransaction();
		$historicTransaction->setMethod(MethodEnum::CANCEL);
		$historicTransaction->setReference($referenceNumber); // previous value from Authorize step
		
		$transactionDetails = new Transaction();
		$transaction->setHistoricTransaction($historicTransaction);
		
		$authentication = new Authentication('987654321234567890', 'mYSeCr3t');

		$request = new Request($authentication);
		$request->setTransaction($transaction);

		$serializer = Builder::create();
		$message = Builder::removeCdata($serializer->serialize($request, 'xml'));

		try {
			$redecard = new RedeCardClient();
			$httpResponse = $redecard->send($message);

			/* @var RedeCard\Ecommerce\Entity\Response $response */
			$response = $serializer->deserialize($httpResponse->body, 'RedeCard\Ecommerce\Entity\Response', 'xml');
			$status = $response->getStatus();

			if (1 == $status) {
				// faça o que for necessário quando o cancelamento tiver ocorrido com sucesso
			} else {
				// faça o que for necessário se tiver ocorrido algum erro no cancelamento, por exemplo:
				throw new RedeCardEcommerceException(
					$response->getReason() . ' - ' . $response->getInformation(),
					$status
				);
			}
		} catch (RedeCardEcommerceException $e) {
			// trate a exceção
		}
	}
}
Clone this wiki locally