-
Notifications
You must be signed in to change notification settings - Fork 7
Cancel
Daniel Costa edited this page Sep 8, 2014
·
1 revision
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
}
}
}