$wsTransactionDetail->amount = $amount;
//$wsTransactionDetail->sharesNumber = $shareNumber;
//$wsTransactionDetail->sharesAmount = $shareAmount;
$wsInitTransactionInput->transactionDetails = $wsTransactionDetail;
#Instancia la clase que comunica con el webservice tbk
$webpayService = new WsTiendaNormal();
#echo "<pre>";print_r($wsInitTransactionInput);echo "</pre>";die();
#Trata de ejecutar el método
try {
    $initTransactionResponse = $webpayService->initTransaction(array("wsInitTransactionInput" => $wsInitTransactionInput));
} catch (SoapFault $exception) {
    ClassNegocio::throwException($exception);
    die;
}
#Obtiene la respuesta y la válida con el certificado público de Tbk
$xmlResponse = $webpayService->soapClient->__getLastResponse();
$soapValidation = new SoapValidation($xmlResponse, SERVER_CERT);
$validationResult = $soapValidation->getValidationResult();
if (!$validationResult) {
    # Si la respuesta no es válida, fracaso.
    $exception = "Error en Init Trx , la respuesta no es válida.";
    ClassNegocio::throwException($exception);
    die;
}
# Si la respuesta es válida hace un POST a la url que retorna el metodo con el token indicado
$wsInitTransactionOutput = $initTransactionResponse->return;
$request = new Request();
$params = array("token_ws" => $wsInitTransactionOutput->token);
$request->setParams($params);
$request->forward($wsInitTransactionOutput->url);
 static function throwPagada()
 {
     $request = new Request();
     $request->forward("http://" . SITIO_CERT . "/webTrxPagada.php");
 }
$tbk_orden_compra = isset($transactionResultOutput->buyOrder) ? $transactionResultOutput->buyOrder : "";
#Persistir la respuesta en el comercio
$resp = ClassNegocio::setWPTransaction(isset($transactionResultOutput->sessionId) ? $transactionResultOutput->sessionId : "", isset($transactionResultOutput->buyOrder) ? $transactionResultOutput->buyOrder : "", "TR_NORMAL_WS", isset($detailOutput->responseCode) ? $detailOutput->responseCode : "", isset($detailOutput->authorizationCode) ? $detailOutput->authorizationCode : "", isset($detailOutput->amount) ? $detailOutput->amount : "", isset($cardDetail->cardNumber) ? $cardDetail->cardNumber : "", isset($transactionResultOutput->accountingDate) ? $transactionResultOutput->accountingDate : "", isset($transactionResultOutput->transactionDate) ? $transactionResultOutput->transactionDate : "", isset($detailOutput->paymentTypeCode) ? $detailOutput->paymentTypeCode : "", isset($detailOutput->sharesNumber) ? $detailOutput->sharesNumber : "");
if (!$resp) {
    ClassNegocio::throwException("Resp = FALSE, em método setTransaction.");
}
# Método de aknoulesh
$acknowledgeTransaction = new acknowledgeTransaction();
$acknowledgeTransaction->tokenInput = $_REQUEST['token_ws'];
try {
    $acknowledgeTransactionResponse = $webpayService->acknowledgeTransaction($acknowledgeTransaction);
} catch (SoapFault $exception) {
    ClassNegocio::throwException($exception);
    die;
}
# Valida resultado de tbk
$xmlResponse = $webpayService->soapClient->__getLastResponse();
$soapValidation = new SoapValidation($xmlResponse, SERVER_CERT);
$validationResult = $soapValidation->getValidationResult();
if (!$validationResult) {
    # Si la respuesta no es válida, fracaso.
    $exception = "Error en Init Trx , la respuesta no es válida.";
    ClassNegocio::throwException($exception);
    die;
}
$url = $transactionResultOutput->urlRedirection;
$request = new Request();
$params = array("token_ws" => $_REQUEST['token_ws']);
$request->setParams($params);
$request->forward($transactionResultOutput->urlRedirection);