示例#1
0
        /// <summary>
        /// Factory method that creates a checkout response from the specified HTTP request
        /// </summary>
        /// <param name="request">The request to create the response from</param>
        /// <param name="successCallback"></param>
        /// <param name="failureCallback"></param>
        /// <param name="cancelCallback"></param>
        /// <returns>A subclass of CheckoutResponse or null if no QPay response is found in the request</returns>
        public static CheckoutResponse FromRequest(HttpRequestBase request,
                                                   Action <CheckoutSuccessResponse> successCallback = null,
                                                   Action <CheckoutFailureResponse> failureCallback = null,
                                                   Action <CheckoutCancelResponse> cancelCallback   = null)
        {
            if (string.IsNullOrEmpty(WireCard.QPayCustomerId))
            {
                throw new WireCardException("Customer id is invalid. Please specify WireCard.CustomerId!");
            }

            if (string.IsNullOrEmpty(WireCard.QPayCustomerSecret))
            {
                throw new WireCardException("Customer secret is invalid. Please specify WireCard.CustomerSecret!");
            }

            CheckoutResponse checkoutResponse = null;

            Debug.WriteLine("checkout response: " + request.Form.ToString());

            var paymentState = request.Form["paymentState"];

            if (paymentState.Equals("SUCCESS", StringComparison.InvariantCultureIgnoreCase))
            {
                var successResponse = new CheckoutSuccessResponse
                {
                    PaymentState               = PaymentState.Success,
                    Amount                     = Decimal.Parse(request.Form["amount"], CultureInfo.InvariantCulture),
                    Currency                   = request.Form["currency"],
                    PaymentType                = (PaymentType)Enum.Parse(typeof(PaymentType), request.Form["paymentType"].Replace('-', '_'), true),
                    FinancialInstitution       = request.Form["financialInstitution"],
                    Language                   = request.Form["language"],
                    OrderNumber                = request.Form["orderNumber"],
                    AnonymousPan               = request.Form["anonymousPan"],
                    Message                    = request.Form["message"],
                    Expiry                     = request.Form["expiry"],
                    Cardholder                 = request.Form["cardholder"],
                    MaskedPan                  = request.Form["maskedPan"],
                    GatewayReferenceNumber     = request.Form["gatewayReferenceNumber"],
                    GatewayContractNumber      = request.Form["gatewayContractNumber"],
                    IDealConsumerName          = request.Form["idealConsumerName"],
                    IDealConsumerCity          = request.Form["idealConsumerCity"],
                    IDealConsumerAccountNumber = request.Form["idealConsumerAccountNumber"],
                    PayPalPayerID              = request.Form["paypalPayerID"],
                    PayPalPayerEMail           = request.Form["paypalPayerEmail"],
                    PayPalPayerLastName        = request.Form["paypalPayerLastName"],
                    PayPalPayerFirstName       = request.Form["paypalPayerFirstName"],
                    SenderAccountOwner         = request.Form["senderAccountOwner"],
                    SenderAccountNumber        = request.Form["senderAccountNumber"],
                    SenderBankNumber           = request.Form["senderBankNumber"],
                    SenderBankName             = request.Form["senderBankName"],
                    SenderBIC                  = request.Form["senderBIC"],
                    SenderIBAN                 = request.Form["senderIBAN"],
                    SenderCountry              = request.Form["senderCountry"],
                    SecurityCriteria           = request.Form["securityCriteria"]
                };

                if (request.Form["authenticated"] != null)
                {
                    successResponse.Authenticated = request.Form["authenticated"].Equals("YES", StringComparison.InvariantCultureIgnoreCase);
                }

                successResponse.IsValid = FingerprintBuilder.VerifyFingerprint(WireCard.QPayCustomerSecret, request.Form);

                checkoutResponse = successResponse;

                checkoutResponse = HandleCustomParameters(request, checkoutResponse);

                if (successCallback != null)
                {
                    successCallback((CheckoutSuccessResponse)checkoutResponse);
                }
            }
            else if (paymentState.Equals("FAILURE", StringComparison.InvariantCultureIgnoreCase))
            {
                var failureResponse = new CheckoutFailureResponse
                {
                    PaymentState = PaymentState.Failure,
                    Message      = request.Form["message"]
                };

                checkoutResponse = failureResponse;

                checkoutResponse = HandleCustomParameters(request, checkoutResponse);

                if (failureCallback != null)
                {
                    failureCallback((CheckoutFailureResponse)checkoutResponse);
                }
            }
            else if (paymentState.Equals("CANCEL", StringComparison.InvariantCultureIgnoreCase))
            {
                var cancelResponse = new CheckoutCancelResponse {
                    PaymentState = PaymentState.Cancel
                };

                checkoutResponse = cancelResponse;

                checkoutResponse = HandleCustomParameters(request, checkoutResponse);

                if (cancelCallback != null)
                {
                    cancelCallback((CheckoutCancelResponse)checkoutResponse);
                }
            }

            return(checkoutResponse);
        }
示例#2
0
        /// <summary>
        /// Factory method that creates a checkout response from the specified HTTP request
        /// </summary>
        /// <param name="request">The request to create the response from</param>
        /// <returns>A subclass of CheckoutResponse or null if no QPay response is found in the request</returns>
        public static CheckoutResponse FromRequest(HttpRequestBase request)
        {
            if (string.IsNullOrEmpty(WireCard.QPayCustomerId))
            {
                throw new WireCardException("Customer id is invalid. Please specify WireCard.CustomerId!");
            }

            if (string.IsNullOrEmpty(WireCard.QPayCustomerSecret))
            {
                throw new WireCardException("Customer secret is invalid. Please specify WireCard.CustomerSecret!");
            }

            CheckoutResponse result = null;

            if (request.Form["paymentState"] == "SUCCESS")
            {
                var success = new CheckoutSuccessResponse
                {
                    PaymentState               = PaymentState.Success,
                    Amount                     = Decimal.Parse(request.Form["amount"], CultureInfo.InvariantCulture),
                    Currency                   = request.Form["currency"],
                    PaymentType                = (PaymentType)Enum.Parse(typeof(PaymentType), request.Form["paymentType"].Replace('-', '_'), true),
                    FinancialInstitution       = request.Form["financialInstitution"],
                    Language                   = request.Form["language"],
                    OrderNumber                = request.Form["orderNumber"],
                    AnonymousPan               = request.Form["anonymousPan"],
                    Message                    = request.Form["message"],
                    Expiry                     = request.Form["expiry"],
                    Cardholder                 = request.Form["cardholder"],
                    MaskedPan                  = request.Form["maskedPan"],
                    GatewayReferenceNumber     = request.Form["gatewayReferenceNumber"],
                    GatewayContractNumber      = request.Form["gatewayContractNumber"],
                    IDealConsumerName          = request.Form["idealConsumerName"],
                    IDealConsumerCity          = request.Form["idealConsumerCity"],
                    IDealConsumerAccountNumber = request.Form["idealConsumerAccountNumber"],
                    PayPalPayerID              = request.Form["paypalPayerID"],
                    PayPalPayerEMail           = request.Form["paypalPayerEmail"],
                    PayPalPayerLastName        = request.Form["paypalPayerLastName"],
                    PayPalPayerFirstName       = request.Form["paypalPayerFirstName"]
                };

                if (request.Form["authenticated"] != null)
                {
                    success.Authenticated = (request.Form["authenticated"].ToUpper() == "YES");
                }

                success.IsValid = FingerprintBuilder.VerifyFingerprint(WireCard.QPayCustomerSecret, request.Form);

                result = success;
            }
            else if (request.Form["paymentState"] == "FAILURE")
            {
                result = new CheckoutFailureResponse {
                    PaymentState = PaymentState.Failure
                };

                (result as CheckoutFailureResponse).Message = request.Form["message"];
            }
            else if (request.Form["paymentState"] == "CANCEL")
            {
                result = new CheckoutCancelResponse {
                    PaymentState = PaymentState.Cancel
                };
            }

            foreach (string key in request.Form.AllKeys)
            {
                if (!ReservedParameters.Contains(key))
                {
                    result.CustomParameters.Add(key, request.Form[key]);
                }
            }

            return(result);
        }