示例#1
0
        /// <summary>
        /// CancelPreApproval
        /// </summary>
        /// <param name="credentials">PagSeguro credentials</param>
        /// <param name="preApprovalCode">PreApproval code</param>
        /// <returns>The PreApprovalRequestResponse wich contains the response</returns>
        public static bool CancelPreApproval(Credentials credentials, string preApprovalCode)
        {
            PagSeguroTrace.Info(string.Format(CultureInfo.InvariantCulture, "PreApprovalService.CancelPreApproval({0}) - begin", preApprovalCode));

            try
            {
                using (var response = HttpUrlConnectionUtil.GetHttpGetConnection(BuildCancelUrl(credentials, preApprovalCode)))
                {
                    if (HttpStatusCode.OK.Equals(response.StatusCode))
                    {
                        using (var reader = XmlReader.Create(response.GetResponseStream()))
                        {
                            var paymentResponse = new PreApprovalRequestResponse(PagSeguroUris.GetPreApprovalCancelUri(credentials));
                            PreApprovalSerializer.Read(reader, paymentResponse);
                            PagSeguroTrace.Info(string.Format(CultureInfo.InvariantCulture, "PreApprovalService.CancelPreApproval({0}) - end {1}", preApprovalCode, paymentResponse.Status));
                            return(paymentResponse.Status.Equals("OK", StringComparison.CurrentCultureIgnoreCase));
                        }
                    }

                    var pse = HttpUrlConnectionUtil.CreatePagSeguroServiceException(response);
                    PagSeguroTrace.Error(string.Format(CultureInfo.InvariantCulture, "PreApprovalService.CancelPreApproval({0}) - error {1}", preApprovalCode, pse));
                    throw pse;
                }
            }
            catch (WebException exception)
            {
                var pse = HttpUrlConnectionUtil.CreatePagSeguroServiceException((HttpWebResponse)exception.Response);
                PagSeguroTrace.Error(string.Format(CultureInfo.InvariantCulture, "PreApprovalService.CancelPreApproval({0}) - error {1}", preApprovalCode, pse));
                throw pse;
            }
        }
        /// <summary>
        /// createCheckoutRequest is the actual implementation of the Register method
        /// This separation serves as test hook to validate the Uri
        /// against the code returned by the service
        /// </summary>
        /// <param name="credentials">PagSeguro credentials</param>
        /// <param name="payment">Payment request information</param>
        /// <returns>The Uri to where the user needs to be redirected to in order to complete the payment process</returns>
        public static Uri CreateCheckoutRequest(Credentials credentials, PaymentRequest payment)
        {
            PagSeguroTrace.Info(string.Format(CultureInfo.InvariantCulture, "PaymentService.Register({0}) - begin", payment));

            try
            {
                using (var response = HttpUrlConnectionUtil.GetHttpPostConnection(
                           PagSeguroUris.GetPaymentUri(credentials).AbsoluteUri, BuildCheckoutUrl(credentials, payment)))
                {
                    if (HttpStatusCode.OK.Equals(response.StatusCode))
                    {
                        using (var reader = XmlReader.Create(response.GetResponseStream()))
                        {
                            var paymentResponse = new PaymentRequestResponse(PagSeguroUris.GetPaymentRedirectUri(credentials));
                            PaymentSerializer.Read(reader, paymentResponse);
                            PagSeguroTrace.Info(string.Format(CultureInfo.InvariantCulture, "PaymentService.Register({0}) - end {1}", payment, paymentResponse.PaymentRedirectUri));
                            return(paymentResponse.PaymentRedirectUri);
                        }
                    }

                    var pse = HttpUrlConnectionUtil.CreatePagSeguroServiceException(response);
                    PagSeguroTrace.Error(string.Format(CultureInfo.InvariantCulture, "PaymentService.Register({0}) - error {1}", payment, pse));
                    throw pse;
                }
            }
            catch (WebException exception)
            {
                var pse = HttpUrlConnectionUtil.CreatePagSeguroServiceException((HttpWebResponse)exception.Response);
                PagSeguroTrace.Error(string.Format(CultureInfo.InvariantCulture, "PaymentService.Register({0}) - error {1}", payment, pse));
                throw pse;
            }
        }
示例#3
0
        /// <summary>
        /// Creates a new authorization request
        /// </summary>
        /// <param name="credentials">PagSeguro credentials. Required</param>
        /// <param name="authorizationRequest">PagSeguro AuthorizationRequest</param>
        /// <param name="onlyAuthorizationCode"></param>
        /// <returns></returns>
        public static string CreateAuthorizationRequest(Credentials credentials, AuthorizationRequest authorizationRequest, bool onlyAuthorizationCode)
        {
            PagSeguroTrace.Info(string.Format(CultureInfo.InvariantCulture, "AuthorizationService.CreateAuthorizationRequest() - begin"));

            try
            {
                using (var response = HttpUrlConnectionUtil.GetHttpPostConnection(
                           PagSeguroUris.GetAuthorizarionRequestUri(credentials).AbsoluteUri, BuildAuthorizationRequestUrl(credentials, authorizationRequest)))
                {
                    using (var reader = XmlReader.Create(response.GetResponseStream()))
                    {
                        var authorization = new AuthorizationResponse();
                        AuthorizationSerializer.Read(reader, authorization);

                        return(onlyAuthorizationCode ? authorization.Code : BuildAuthorizationUrl(credentials, authorization.Code));
                    }
                }
            }
            catch (WebException pse)
            {
                throw pse;
            }
            catch (PagSeguroServiceException pse)
            {
                throw pse;
            }
        }
示例#4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="credentials"></param>
        /// <param name="interval"></param>
        /// <returns></returns>
        private static string BuildSearchUrlByInterval(Credentials credentials, int interval)
        {
            var searchUrlByInterval = new QueryStringBuilder("{url}/notifications?{credential}&interval={interval}");

            searchUrlByInterval.ReplaceValue("{url}", PagSeguroUris.GetPreApprovalSearchUri(credentials).AbsoluteUri);
            searchUrlByInterval.ReplaceValue("{interval}", HttpUtility.UrlEncode(interval.ToString()));
            searchUrlByInterval.ReplaceValue("{credential}", new QueryStringBuilder().EncodeCredentialsAsQueryString(credentials).ToString());
            return(searchUrlByInterval.ToString());
        }
示例#5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="credentials"></param>
        /// <param name="preApprovalCode"></param>
        /// <returns></returns>
        private static string BuildCancelUrl(Credentials credentials, string preApprovalCode)
        {
            var searchUrlByCode = new QueryStringBuilder("{url}/{preApprovalCode}?{credential}");

            searchUrlByCode.ReplaceValue("{url}", PagSeguroUris.GetPreApprovalCancelUri(credentials).AbsoluteUri);
            searchUrlByCode.ReplaceValue("{preApprovalCode}", HttpUtility.UrlEncode(preApprovalCode));
            searchUrlByCode.ReplaceValue("{credential}", new QueryStringBuilder().EncodeCredentialsAsQueryString(credentials).ToString());
            return(searchUrlByCode.ToString());
        }
示例#6
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="credentials"></param>
        /// <param name="notificationCode"></param>
        /// <returns></returns>
        private static string BuildAuthorizationNotificationUrl(Credentials credentials, string notificationCode)
        {
            var builder = new QueryStringBuilder("{url}{notificationCode}?{credential}");

            builder.ReplaceValue("{url}", PagSeguroUris.GetAuthorizationNotificationUri(credentials).AbsoluteUri);
            builder.ReplaceValue("{notificationCode}", HttpUtility.UrlEncode(notificationCode));
            builder.ReplaceValue("{credential}", new QueryStringBuilder().EncodeCredentialsAsQueryString(credentials).ToString());
            return(builder.ToString());
        }
示例#7
0
        internal static string BuildAuthorizationUrl(Credentials credentials, string code)
        {
            var builder = new QueryStringBuilder("{URL}?code={code}");

            builder.ReplaceValue("{URL}", PagSeguroUris.GetAuthorizarionUri(credentials).AbsoluteUri);
            builder.ReplaceValue("{code}", code);

            return(builder.ToString());
        }
示例#8
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="credentials"></param>
        /// <param name="notificationCode"></param>
        /// <returns></returns>
        private static string BuildTransactionNotificationUrl(Credentials credentials, string notificationCode)
        {
            var transactionNotificationUrl = new QueryStringBuilder("{url}/{notificationCode}?{credential}");

            transactionNotificationUrl.ReplaceValue("{url}", PagSeguroUris.GetNotificationUri(credentials).AbsoluteUri);
            transactionNotificationUrl.ReplaceValue("{notificationCode}", HttpUtility.UrlEncode(notificationCode));
            transactionNotificationUrl.ReplaceValue("{credential}", new QueryStringBuilder().EncodeCredentialsAsQueryString(credentials).ToString());
            return(transactionNotificationUrl.ToString());
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="credentials"></param>
        /// <param name="transactionCode"></param>
        /// <returns></returns>
        private static string BuildSearchUrlByCode(Credentials credentials, string transactionCode)
        {
            var searchUrlByCode = new QueryStringBuilder("{url}/{transactionCode}?{credential}");

            searchUrlByCode.ReplaceValue("{url}", PagSeguroUris.GetSearchUri(credentials).AbsoluteUri);
            searchUrlByCode.ReplaceValue("{transactionCode}", HttpUtility.UrlEncode(transactionCode));
            searchUrlByCode.ReplaceValue("{credential}", new QueryStringBuilder().EncodeCredentialsAsQueryString(credentials).ToString());
            return(searchUrlByCode.ToString());
        }
示例#10
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="credentials"></param>
        /// <param name="code"></param>
        /// <returns></returns>
        internal static string BuildSearchUrlByCode(Credentials credentials, string code)
        {
            var builder = new QueryStringBuilder("{URL}{code}?{credentials}");

            builder.ReplaceValue("{URL}", PagSeguroUris.GetAuthorizarionSearchUri(credentials).AbsoluteUri);
            builder.ReplaceValue("{code}", code);
            builder.ReplaceValue("{credentials}", new QueryStringBuilder().EncodeCredentialsAsQueryString(credentials).ToString());

            return(builder.ToString());
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="credentials"></param>
        /// <param name="reference"></param>
        /// <returns></returns>
        private static string BuildSearchUrlByReference(Credentials credentials, string reference)
        {
            var searchUrlByReference = new QueryStringBuilder("{url}?{credentials}&reference={reference}");

            searchUrlByReference.ReplaceValue("{url}", PagSeguroUris.GetSearchUri(credentials).AbsoluteUri);
            searchUrlByReference.ReplaceValue("{reference}", HttpUtility.UrlEncode(reference));
            searchUrlByReference.ReplaceValue("{credentials}", new QueryStringBuilder().EncodeCredentialsAsQueryString(credentials).ToString());

            return(searchUrlByReference.ToString());
        }
示例#12
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="credentials"></param>
        /// <param name="notificationCode"></param>
        /// <returns></returns>
        private static string BuildSearchUrlByNotification(Credentials credentials, string notificationCode)
        {
            var searchUrlByNotification = new QueryStringBuilder("{url}/notifications/{notificationCode}?{credential}");

            searchUrlByNotification.ReplaceValue("{url}", PagSeguroUris.GetPreApprovalSearchUri(credentials).AbsoluteUri);
            searchUrlByNotification.ReplaceValue("{notificationCode}", HttpUtility.UrlEncode(notificationCode));

            searchUrlByNotification.ReplaceValue("{credential}", new QueryStringBuilder().EncodeCredentialsAsQueryString(credentials).ToString());
            return(searchUrlByNotification.ToString());
        }
示例#13
0
        private static string BuildInstallmentUrl(Credentials credentials, decimal amount, string cardBrand, int maxInstallmentNoInterest)
        {
            var builder = new QueryStringBuilder("{url}?{credentials}&amount={amount}&cardBrand={cardBrand}&maxInstallmentNoInterest={maxInstallmentNoInterest}");

            builder.ReplaceValue("{url}", PagSeguroUris.GetInstallmentUri(credentials).AbsoluteUri);
            builder.ReplaceValue("{credentials}", new QueryStringBuilder().EncodeCredentialsAsQueryString(credentials).ToString());
            builder.ReplaceValue("{amount}", PagSeguroUtil.DecimalFormat(amount));
            builder.ReplaceValue("{cardBrand}", HttpUtility.UrlEncode(cardBrand));
            builder.ReplaceValue("{maxInstallmentNoInterest}", HttpUtility.UrlEncode(maxInstallmentNoInterest.ToString()));

            return(builder.ToString());
        }
示例#14
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="credentials"></param>
        /// <param name="initialDate"></param>
        /// <param name="finalDate"></param>
        /// <param name="pageNumber"></param>
        /// <param name="resultsPerPage"></param>
        /// <returns></returns>
        private static string BuildSearchUrlByDate(Credentials credentials, DateTime initialDate, DateTime finalDate, int?pageNumber, int?resultsPerPage)
        {
            var builder = new QueryStringBuilder("{url}?initialDate={initialDate}{finalDate}{page}{maxPageResults}{credential}");

            builder.ReplaceValue("{url}", PagSeguroUris.GetPreApprovalSearchUri(credentials).AbsoluteUri);
            builder.ReplaceValue("{initialDate}", PagSeguroUtil.FormatDateXml(initialDate));
            builder.ReplaceValue("{finalDate}", finalDate < DateTime.MaxValue ? "&" + FinalDateParameterName + "=" + PagSeguroUtil.FormatDateXml(finalDate) : "");
            if (pageNumber.HasValue)
            {
                builder.ReplaceValue("{page}", pageNumber > 0 ? "&" + PageNumberParameterName + "=" + pageNumber : "");
            }
            if (resultsPerPage.HasValue)
            {
                builder.ReplaceValue("{maxPageResults}", resultsPerPage > 0 ? "&" + MaxPageResultsParameterName + "=" + resultsPerPage : "");
            }
            builder.ReplaceValue("{credential}", credentials != null ? new QueryStringBuilder().AppendToQuery("&").EncodeCredentialsAsQueryString(credentials).ToString() : "");

            return(PagSeguroUtil.RemoveExtraSpaces(builder.ToString()));
        }
 /// <summary>
 /// Request a transaction cancellation from transaction code
 /// </summary>
 /// <param name="credentials">PagSeguro credentials</param>
 /// <param name="transactionCode">Transaction Code</param>
 /// <returns><c cref="T:Uol.PagSeguro.CancelRequestResponse">Result</c></returns>
 public static RequestResponse RequestCancel(Credentials credentials, string transactionCode)
 {
     PagSeguroTrace.Info(string.Format(CultureInfo.InvariantCulture, "CancelService.Register(transactionCode = {0}) - begin", transactionCode));
     try {
         using (var response = HttpUrlConnectionUtil.GetHttpPostConnection(
                    PagSeguroUris.GetCancelUri(credentials).AbsoluteUri, BuildCancelUrl(credentials, transactionCode)))
         {
             using (var reader = XmlReader.Create(response.GetResponseStream()))
             {
                 var cancel = new RequestResponse();
                 CancelSerializer.Read(reader, cancel);
                 PagSeguroTrace.Info(string.Format(CultureInfo.InvariantCulture, "CancelService.createRequest({0}) - end", cancel.ToString()));
                 return(cancel);
             }
         }
     } catch (WebException exception) {
         var pse = HttpUrlConnectionUtil.CreatePagSeguroServiceException((HttpWebResponse)exception.Response);
         PagSeguroTrace.Error(string.Format(CultureInfo.InvariantCulture, "CancelService.createRequest() - error {0}", pse));
         throw pse;
     }
 }
示例#16
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="credentials"></param>
        /// <param name="initialDate"></param>
        /// <param name="finalDate"></param>
        /// <param name="pageNumber"></param>
        /// <param name="resultsPerPage"></param>
        /// <returns></returns>
        internal static string BuildSearchUrlByDate(Credentials credentials, DateTime initialDate, DateTime finalDate, int?pageNumber = null, int?resultsPerPage = null)
        {
            var builder = new QueryStringBuilder("{URL}?{credentials}&initialDate={initialDate}{finalDate}{page}{maxPageResults}");

            builder.ReplaceValue("{URL}", PagSeguroUris.GetAuthorizarionSearchUri(credentials).AbsoluteUri);
            builder.ReplaceValue("{initialDate}", PagSeguroUtil.FormatDateXml(initialDate));
            builder.ReplaceValue("{finalDate}", finalDate < DateTime.MaxValue ? "&" + FinalDateParameterName + "=" + PagSeguroUtil.FormatDateXml(finalDate) : "");

            if (pageNumber.HasValue)
            {
                builder.ReplaceValue("{page}", pageNumber > 0 ? "&" + PageNumberParameterName + "=" + pageNumber : "");
            }

            if (pageNumber.HasValue)
            {
                builder.ReplaceValue("{maxPageResults}", resultsPerPage > 0 ? "&" + MaxPageResultsParameterName + "=" + resultsPerPage : "");
            }

            builder.ReplaceValue("{credentials}", new QueryStringBuilder().EncodeCredentialsAsQueryString(credentials).ToString());

            return(PagSeguroUtil.RemoveExtraSpaces(builder.ToString()));
        }
        /// <summary>
        /// Request a transaction refund from transaction code
        /// </summary>
        /// <param name="credentials">PagSeguro credentials</param>
        /// <param name="transactionCode">Transaction Code</param>
        /// <param name="refundValue"></param>
        /// <returns><c cref="T:Uol.PagSeguro.CancelRequestResponse">Result</c></returns>
        public static RequestResponse RequestRefund(Credentials credentials, string transactionCode, decimal?refundValue = null)
        {
            PagSeguroTrace.Info(string.Format(CultureInfo.InvariantCulture, "RefundService.Register(transactionCode = {0}) - begin", transactionCode));

            try {
                using (var response = HttpUrlConnectionUtil.GetHttpPostConnection(
                           PagSeguroUris.GetRefundUri(credentials).AbsoluteUri, BuildRefundUrl(credentials, transactionCode, refundValue)))
                {
                    using (var reader = XmlReader.Create(response.GetResponseStream()))
                    {
                        var refund = new RequestResponse();
                        RefundSerializer.Read(reader, refund);
                        PagSeguroTrace.Info(string.Format(CultureInfo.InvariantCulture, "RefundService.Register({0}) - end", refund.ToString()));
                        return(refund);
                    }
                }
            } catch (WebException exception) {
                var pse = HttpUrlConnectionUtil.CreatePagSeguroServiceException((HttpWebResponse)exception.Response);
                PagSeguroTrace.Error(string.Format(CultureInfo.InvariantCulture, "RefundService.Register() - error {0}", pse));
                throw pse;
            }
        }
示例#18
0
 /// <summary>
 /// Create a new transaction checkout
 /// </summary>
 /// <param name="credentials">PagSeguro credentials</param>
 /// <param name="checkout"></param>
 /// <returns cref="T:Uol.PagSeguro.Transaction"><c>Transaction</c></returns>
 public static Transaction CreateCheckout(Credentials credentials, Checkout checkout)
 {
     PagSeguroTrace.Info(string.Format(CultureInfo.InvariantCulture, "TransactionService.Register() - begin"));
     try
     {
         using (var response = HttpUrlConnectionUtil.GetHttpPostConnection(
                    PagSeguroUris.GetTransactionsUri(credentials).AbsoluteUri, BuildTransactionUrl(credentials, checkout)))
         {
             using (var reader = XmlReader.Create(response.GetResponseStream()))
             {
                 var transaction = new Transaction();
                 TransactionSerializer.Read(reader, transaction);
                 PagSeguroTrace.Info(string.Format(CultureInfo.InvariantCulture, "TransactionService.Register() - end {0}", transaction));
                 return(transaction);
             }
         }
     }
     catch (WebException exception)
     {
         var pse = HttpUrlConnectionUtil.CreatePagSeguroServiceException((HttpWebResponse)exception.Response, exception);
         PagSeguroTrace.Error(string.Format(CultureInfo.InvariantCulture, "TransactionService.Register() - error {0}", pse));
         throw pse;
     }
 }
 /// <summary>
 /// Request a direct payment session
 /// </summary>
 /// <param name="credentials">PagSeguro credentials</param>
 /// <returns><c cref="T:Uol.PagSeguro.CancelRequestResponse">Result</c></returns>
 public static Session CreateSession(Credentials credentials)
 {
     PagSeguroTrace.Info(string.Format(CultureInfo.InvariantCulture, "SessionService.Register() - begin"));
     try
     {
         using (var response = HttpUrlConnectionUtil.GetHttpPostConnection(
                    PagSeguroUris.GetSessionUri(credentials).AbsoluteUri, BuildSessionUrl(credentials)))
         {
             using (var reader = XmlReader.Create(response.GetResponseStream()))
             {
                 var result = new Session();
                 SessionSerializer.Read(reader, result);
                 PagSeguroTrace.Info(string.Format(CultureInfo.InvariantCulture, "SessionService.Register({0}) - end", result.ToString()));
                 return(result);
             }
         }
     }
     catch (WebException exception)
     {
         var pse = HttpUrlConnectionUtil.CreatePagSeguroServiceException((HttpWebResponse)exception.Response, exception);
         PagSeguroTrace.Error(string.Format(CultureInfo.InvariantCulture, "SessionService.Register() - error {0}", pse));
         throw pse;
     }
 }