/// <summary>
    /// Recupera os dados da transação usando a operação GetExpressCheckoutDetails e, então, utiliza a
    /// operação DoExpressCheckout para completar a transação.
    /// </summary>
    /// <param name='token'>
    /// O Token enviado pelo PayPal após o redirecionamento do cliente.
    /// </param>
    /// <param name='PayerID'>
    /// O id do cliente no PayPal, recebido após o redirecionamento do cliente.
    /// </param>
    /// <exception cref='Exception'>
    /// Se a transação falhar, uma exceção é disparada.
    /// </exception>
    public static ResponseNVP finalize(string token, string PayerID)
    {
        GetExpressCheckoutDetailsOperation GetExpressCheckout = expressCheckout().GetExpressCheckoutDetails(
            token
            );

        execute(GetExpressCheckout);                 //Executa a operação GetExpressCheckout

        //NVP da resposta do GetExpressCheckout
        ResponseNVP responseNVP = GetExpressCheckout.ResponseNVP;

        if (GetExpressCheckout.ResponseNVP.Ack == Ack.SUCCESS)
        {
            DoExpressCheckoutPaymentOperation DoExpressCheckout = expressCheckout().DoExpressCheckoutPayment(
                token, PayerID, PaymentAction.SALE
                );

            DoExpressCheckout.PaymentRequest(0).Amount = responseNVP.GetDouble("PAYMENTREQUEST_0_AMT");

            configureLocalization(DoExpressCheckout);       //Configura moeda e idioma
            execute(DoExpressCheckout);                     //Executa a operação DoExpressCheckout

            //if (DoExpressCheckout.ResponseNVP.Ack != Ack.SUCCESS) {
            //    throw new Exception();
            //}
        }

        return(responseNVP);
    }
Exemplo n.º 2
0
        public ResponseNVP Finalize(string token, string PayerId)
        {
            GetExpressCheckoutDetailsOperation getEc = ec.GetExpressCheckoutDetails(
                token
                );

            getEc.sandbox().execute();

            DoExpressCheckoutPaymentOperation doEc = ec.DoExpressCheckoutPayment(
                token, PayerId, PaymentAction.SALE
                );

            doEc.CurrencyCode             = CurrencyCode.BRAZILIAN_REAL;
            doEc.PaymentRequest(0).Amount = getEc.ResponseNVP.GetDouble("PAYMENTREQUEST_0_AMT");
            doEc.sandbox().execute();

            return(doEc.ResponseNVP);
        }