protected void onAuthorizeOrder(object sender, CommandEventArgs e)
        {
            var client = new WorldpayRestClient((string)Session["apiEndpoint"], (string)Session["service_key"]);

            string           orderCode    = (string)Session["orderCode"];
            var              responseCode = HttpContext.Current.Request.Form["PaRes"];
            var              httpRequest  = HttpContext.Current.Request;
            ThreeDSecureInfo threeDSInfo  = new ThreeDSecureInfo()
            {
                shopperIpAddress    = httpRequest.UserHostAddress,
                shopperSessionId    = HttpContext.Current.Session.SessionID,
                shopperUserAgent    = httpRequest.UserAgent,
                shopperAcceptHeader = String.Join(";", httpRequest.AcceptTypes)
            };

            try
            {
                var response = client.GetOrderService().Authorize(orderCode, responseCode, threeDSInfo);
                OrderResponse.Text = "Order code: <span id='order-code'>" + response.orderCode + "</span><br />Payment Status: " +
                                     response.paymentStatus + "<br />Environment: " + response.environment;
            }
            catch (WorldpayException exc)
            {
                ErrorControl.DisplayError(exc.apiError);
            }
            catch (Exception exc)
            {
                throw new InvalidOperationException("Error sending request with order code " + orderCode, exc);
            }
        }
Beispiel #2
0
        public void FindAsync_ExposesThreeDSecureInfo()
        {
            Task.Run(async () =>
#endif
        {
            BraintreeService service = new BraintreeService(gateway.Configuration);
            CreditCardRequest creditCardRequest = new CreditCardRequest
            {
                Number = SandboxValues.CreditCardNumber.VISA,
                ExpirationMonth = "05",
                ExpirationYear = "2020"
            };
            string nonce = TestHelper.Generate3DSNonce(service, creditCardRequest);

            PaymentMethodNonce foundNonce = await gateway.PaymentMethodNonce.FindAsync(nonce);
            ThreeDSecureInfo info = foundNonce.ThreeDSecureInfo;

            Assert.AreEqual(foundNonce.Nonce, nonce);
            Assert.AreEqual(foundNonce.Type, "CreditCard");
            Assert.AreEqual(info.Enrolled, "Y");
            Assert.AreEqual(info.Status, "authenticate_successful");
            Assert.AreEqual(info.LiabilityShifted, true);
            Assert.AreEqual(info.LiabilityShiftPossible, true);
        }
#if net452
            ).GetAwaiter().GetResult();
        }
        /// <summary>
        /// Create a 3DS order request
        /// </summary>
        private OrderRequest create3DSOrderRequest()
        {
            var orderRequest = new OrderRequest();

            orderRequest.amount           = 1999;
            orderRequest.currencyCode     = CurrencyCode.GBP.ToString();
            orderRequest.name             = "3D";
            orderRequest.orderDescription = "test description";

            var threeDSInfo = new ThreeDSecureInfo();

            threeDSInfo.shopperIpAddress    = "127.0.0.1";
            threeDSInfo.shopperSessionId    = "sessionId";
            threeDSInfo.shopperUserAgent    = "Mozilla/v1";
            threeDSInfo.shopperAcceptHeader = "application/json";
            orderRequest.threeDSecureInfo   = threeDSInfo;
            orderRequest.is3DSOrder         = true;

            var address = new Address();

            address.address1            = "line 1";
            address.address2            = "line 2";
            address.city                = "city";
            address.countryCode         = CountryCode.GB.ToString();
            address.postalCode          = "AB1 2CD";
            orderRequest.billingAddress = address;

            var customerIdentifiers = new Dictionary <string, string>();

            customerIdentifiers["test key 1"] = "test value 1";

            orderRequest.customerIdentifiers = customerIdentifiers;
            return(orderRequest);
        }
Beispiel #4
0
        public void Find_ExposesThreeDSecureInfo()
        {
            BraintreeService service = new BraintreeService(gateway.Configuration);
            CreditCardRequest creditCardRequest = new CreditCardRequest
            {
                Number = SandboxValues.CreditCardNumber.VISA,
                ExpirationMonth = "05",
                ExpirationYear = "2020"
            };
            string nonce = TestHelper.Generate3DSNonce(service, creditCardRequest);

            PaymentMethodNonce foundNonce = gateway.PaymentMethodNonce.Find(nonce);
            ThreeDSecureInfo info = foundNonce.ThreeDSecureInfo;

            Assert.AreEqual(nonce, foundNonce.Nonce);
            Assert.AreEqual("CreditCard", foundNonce.Type);
            Assert.AreEqual("Y", info.Enrolled);
            Assert.AreEqual("authenticate_successful", info.Status);
            Assert.IsTrue(info.LiabilityShifted);
            Assert.IsTrue(info.LiabilityShiftPossible);
            Assert.AreEqual("test_cavv", info.Cavv);
            Assert.AreEqual("test_eci", info.EciFlag);
            Assert.AreEqual("1.0.2", info.ThreeDSecureVersion);
            Assert.AreEqual("test_xid", info.Xid);
            Assert.IsNotNull(info.ThreeDSecureAuthenticationId);
        }
Beispiel #5
0
 /// <summary>
 /// Authorize a 3DS order
 /// </summary>
 /// <param name="orderCode">Order code for the orer to be authorized</param>
 /// <param name="responseCode">Authorization Response code from Issuer</param>
 /// <param name="threeDSInfo">3D Secure Information</param>
 /// <returns>Confirmation of the new order</returns>
 public OrderResponse Authorize(string orderCode, string responseCode, ThreeDSecureInfo threeDSInfo)
 {
     return(Http.Put <OrderAuthorizationRequest, OrderResponse>(String.Format("{0}/orders/{1}", _baseUrl, orderCode),
                                                                new OrderAuthorizationRequest()
     {
         threeDSResponseCode = responseCode,
         threeDSecureInfo = threeDSInfo
     }));
 }
        public void ConstructFromXMLResponse()
        {
            StringBuilder builder = new StringBuilder();

            builder.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
            builder.Append("<three-d-secure-info>");
            builder.Append("<liability-shifted>true</liability-shifted>");
            builder.Append("<liability-shift-possible>true</liability-shift-possible>");
            builder.Append("<enrolled>Y</enrolled>");
            builder.Append("<status>status</status>");
            builder.Append("<cavv>imacavv</cavv>");
            builder.Append("<eci-flag>05</eci-flag>");
            builder.Append("<xid>1234</xid>");
            builder.Append("<three-d-secure-version>2.0.0</three-d-secure-version>");
            builder.Append("<ds-transaction-id>5678</ds-transaction-id>");
            builder.Append("<three-d-secure-authentication-id>09</three-d-secure-authentication-id>");
            builder.Append("<acs-transaction-id>ACS123</acs-transaction-id>");
            builder.Append("<pares-status>Y</pares-status>");
            builder.Append("<three-d-secure-server-transaction-id>3DS456</three-d-secure-server-transaction-id>");
            builder.Append("<lookup>");
            builder.Append("  <trans-status>status</trans-status>");
            builder.Append("  <trans-status-reason>reason</trans-status-reason>");
            builder.Append("</lookup>");
            builder.Append("<authentication>");
            builder.Append("  <trans-status>status</trans-status>");
            builder.Append("  <trans-status-reason>reason</trans-status-reason>");
            builder.Append("</authentication>");
            builder.Append("</three-d-secure-info>");


            XmlDocument doc = new XmlDocument();

            doc.LoadXml(builder.ToString());

            ThreeDSecureInfo info = new ThreeDSecureInfo(new NodeWrapper(doc).GetNode("//three-d-secure-info"));

            Assert.IsTrue(info.LiabilityShifted);
            Assert.IsTrue(info.LiabilityShiftPossible);
            Assert.AreEqual("Y", info.Enrolled);
            Assert.AreEqual("status", info.Status);
            Assert.AreEqual("imacavv", info.Cavv);
            Assert.AreEqual("05", info.EciFlag);
            Assert.AreEqual("1234", info.Xid);
            Assert.AreEqual("2.0.0", info.ThreeDSecureVersion);
            Assert.AreEqual("5678", info.DsTransactionId);
            Assert.AreEqual("09", info.ThreeDSecureAuthenticationId);
            Assert.AreEqual("ACS123", info.AcsTransactionId);
            Assert.AreEqual("Y", info.ParesStatus);
            Assert.AreEqual("3DS456", info.ThreeDSecureServerTransactionId);
            Assert.IsInstanceOf(typeof(ThreeDSecureLookupInfo), info.Lookup);
            Assert.AreEqual("status", info.Lookup.TransStatus);
            Assert.AreEqual("reason", info.Lookup.TransStatusReason);
            Assert.IsInstanceOf(typeof(ThreeDSecureAuthenticationInfo), info.Authentication);
            Assert.AreEqual("status", info.Authentication.TransStatus);
            Assert.AreEqual("reason", info.Authentication.TransStatusReason);
        }
        public void Find_ExposesThreeDSecureInfo()
        {
            PaymentMethodNonce nonce = gateway.PaymentMethodNonce.Find("threedsecurednonce");
            ThreeDSecureInfo   info  = nonce.ThreeDSecureInfo;

            Assert.AreEqual(nonce.Nonce, "threedsecurednonce");
            Assert.AreEqual(nonce.Type, "CreditCard");
            Assert.AreEqual(info.Enrolled, "Y");
            Assert.AreEqual(info.Status, "authenticate_successful");
            Assert.AreEqual(info.LiabilityShifted, true);
            Assert.AreEqual(info.LiabilityShiftPossible, true);
        }
        public void ConstructFromDynamicObject()
        {
            var rawJSON = @"{
'liabilityShifted':'true',
'liabilityShiftPossible':'true',
'status':'status',
'enrolled':'Y',
'cavv':'imacavv',
'xid':'1234',
'acsTransactionId':'ACS123',
'dsTransactionId':'5678',
'eciFlag':'05',
'paresStatus':'Y',
'threeDSecureAuthenticationId':'09',
'threeDSecureServerTransactionId':'3DS456',
'threeDSecureVersion':'2.0.0',
}";

            dynamic          json = JsonConvert.DeserializeObject <dynamic>(rawJSON);
            ThreeDSecureInfo info = new ThreeDSecureInfo(json);

            Assert.IsTrue(info.LiabilityShifted);
            Assert.IsTrue(info.LiabilityShiftPossible);
            Assert.AreEqual("Y", info.Enrolled);
            Assert.AreEqual("status", info.Status);
            Assert.AreEqual("imacavv", info.Cavv);
            Assert.AreEqual("05", info.EciFlag);
            Assert.AreEqual("1234", info.Xid);
            Assert.AreEqual("2.0.0", info.ThreeDSecureVersion);
            Assert.AreEqual("5678", info.DsTransactionId);
            Assert.AreEqual("09", info.ThreeDSecureAuthenticationId);
            Assert.AreEqual("ACS123", info.AcsTransactionId);
            Assert.AreEqual("Y", info.ParesStatus);
            Assert.AreEqual("3DS456", info.ThreeDSecureServerTransactionId);
            Assert.IsInstanceOf(typeof(ThreeDSecureLookupInfo), info.Lookup);
            Assert.IsNull(info.Lookup.TransStatus);
            Assert.IsNull(info.Lookup.TransStatusReason);
            Assert.IsInstanceOf(typeof(ThreeDSecureAuthenticationInfo), info.Authentication);
            Assert.IsNull(info.Authentication.TransStatus);
            Assert.IsNull(info.Authentication.TransStatusReason);
        }
        public void ShouldAuthorise3DSOrder()
        {
            OrderRequest orderRequest = create3DSOrderRequest();

            orderRequest.token = CreateToken();

            OrderResponse response = _orderService.Create(orderRequest);

            var threeDSInfo = new ThreeDSecureInfo()
            {
                shopperIpAddress    = "127.0.0.1",
                shopperSessionId    = "sessionId",
                shopperUserAgent    = "Mozilla/v1",
                shopperAcceptHeader = "application/json"
            };

            var authorizationResponse = _orderService.Authorize(response.orderCode, "IDENTIFIED", threeDSInfo);

            Assert.AreEqual(response.orderCode, authorizationResponse.orderCode);
            Assert.AreEqual(1999, authorizationResponse.amount);
            Assert.IsTrue(response.is3DSOrder);
            Assert.AreEqual(OrderStatus.SUCCESS, authorizationResponse.paymentStatus);
        }
        private void createOrder()
        {
            var form      = HttpContext.Current.Request.Form;
            var client    = new WorldpayRestClient((string)Session["apiEndpoint"], (string)Session["service_key"]);
            var orderType = (OrderType)Enum.Parse(typeof(OrderType), form["orderType"]);

            var cardRequest = new CardRequest();

            cardRequest.cardNumber  = form["number"];
            cardRequest.cvc         = form["cvc"];
            cardRequest.name        = form["name"];
            cardRequest.expiryMonth = Convert.ToInt32(form["exp-month"]);
            cardRequest.expiryYear  = Convert.ToInt32(form["exp-year"]);
            cardRequest.type        = form["cardType"];
            int?_amount       = 0;
            var _currencyCode = "";
            Dictionary <string, string> custIdentifiers = new Dictionary <string, string>();

            try
            {
                custIdentifiers = JavaScriptConvert.DeserializeObject <Dictionary <string, string> >(form["customer-identifiers"]);
            }
            catch (Exception exc) { }

            try
            {
                if (!string.IsNullOrEmpty(form["amount"]))
                {
                    double n;
                    bool   isNumeric = double.TryParse(form["amount"], out n);
                    _amount = isNumeric ? (int)(Convert.ToDecimal(form["amount"]) * 100) : -1;
                }
            }
            catch (Exception excAmount) { }

            try
            {
                _currencyCode = Enum.Parse(typeof(CurrencyCode), form["currency"]).ToString();
            }
            catch (Exception excCurrency) { }

            var billingAddress = new Address()
            {
                address1        = form["address1"],
                address2        = form["address2"],
                address3        = form["address3"],
                postalCode      = form["postcode"],
                city            = form["city"],
                telephoneNumber = form["telephone-number"],
                state           = "",
                countryCode     = Enum.Parse(typeof(CountryCode), form["countryCode"]).ToString()
            };

            var deliveryAddress = new DeliveryAddress()
            {
                firstName       = form["delivery-firstName"],
                lastName        = form["delivery-lastName"],
                address1        = form["delivery-address1"],
                address2        = form["delivery-address2"],
                address3        = form["delivery-address3"],
                postalCode      = form["delivery-postcode"],
                city            = form["delivery-city"],
                telephoneNumber = form["delivery-telephone-number"],
                state           = "",
                countryCode     = Enum.Parse(typeof(CountryCode), form["delivery-countryCode"]).ToString()
            };

            var is3DS = form["3ds"] == "on" ? true : false;
            ThreeDSecureInfo threeDSInfo = null;

            if (is3DS)
            {
                var httpRequest = HttpContext.Current.Request;
                threeDSInfo = new ThreeDSecureInfo()
                {
                    shopperIpAddress    = httpRequest.UserHostAddress,
                    shopperSessionId    = HttpContext.Current.Session.SessionID,
                    shopperUserAgent    = httpRequest.UserAgent,
                    shopperAcceptHeader = String.Join(";", httpRequest.AcceptTypes)
                };
            }

            var request = new OrderRequest()
            {
                token               = form["token"],
                orderDescription    = form["description"],
                amount              = _amount,
                currencyCode        = _currencyCode,
                name                = is3DS && Session["mode"].Equals("test") ? "3D" : form["name"],
                shopperEmailAddress = form["shopper-email"],
                statementNarrative  = form["statement-narrative"],
                billingAddress      = billingAddress,
                deliveryAddress     = deliveryAddress,
                threeDSecureInfo    = is3DS ? threeDSInfo : new ThreeDSecureInfo(),
                is3DSOrder          = is3DS,
                authorizeOnly       = form["authorizeOnly"] == "on",
                orderType           = orderType.ToString(),
                customerIdentifiers = custIdentifiers,
                customerOrderCode   = form["customer-order-code"],
                orderCodePrefix     = form["order-code-prefix"],
                orderCodeSuffix     = form["order-code-suffix"]
            };

            var directOrder = form["direct-order"] == "1";

            if (directOrder)
            {
                request.shopperLanguageCode = form["language-code"];
                request.reusable            = form["chkReusable"] == "on";
                request.paymentMethod       = new CardRequest()
                {
                    name        = form["name"],
                    expiryMonth = Convert.ToInt32(form["exp-month"]),
                    expiryYear  = Convert.ToInt32(form["exp-year"]),
                    cardNumber  = form["number"],
                    cvc         = form["cvc"]
                };
            }

            if (!string.IsNullOrEmpty(form["settlement-currency"]))
            {
                request.settlementCurrency = form["settlement-currency"];
            }
            if (!string.IsNullOrEmpty(form["site-code"]))
            {
                request.siteCode = form["site-code"];
            }

            try
            {
                var response = client.GetOrderService().Create(request);

                HandleSuccessResponse(response);

                SuccessPanel.Visible = true;
            }
            catch (WorldpayException exc)
            {
                ErrorControl.DisplayError(exc.apiError);
            }
            catch (Exception exc)
            {
                throw new InvalidOperationException("Error sending request with token " + request.token, exc);
            }
        }
Beispiel #11
0
        protected void OnCreateOrder(object sender, CommandEventArgs e)
        {
            var form   = HttpContext.Current.Request.Form;
            var client = new WorldpayRestClient((string)Session["service_key"]);

            var cardRequest = new CardRequest();

            cardRequest.cardNumber  = form["number"];
            cardRequest.cvc         = form["cvv"];
            cardRequest.name        = form["name"];
            cardRequest.expiryMonth = Convert.ToInt32(form["exp-month"]);
            cardRequest.expiryYear  = Convert.ToInt32(form["exp-year"]);
            cardRequest.type        = form["cardType"];

            var billingAddress = new Address()
            {
                address1    = form["address1"],
                address2    = form["address2"],
                address3    = form["address3"],
                postalCode  = form["postcode"],
                city        = form["city"],
                state       = "",
                countryCode = (CountryCode)Enum.Parse(typeof(CountryCode), form["countryCode"])
            };

            var is3DS = form["3ds"] == "on" ? true : false;
            ThreeDSecureInfo threeDSInfo = null;

            if (is3DS)
            {
                var httpRequest = HttpContext.Current.Request;
                threeDSInfo = new ThreeDSecureInfo()
                {
                    shopperIpAddress    = httpRequest.UserHostAddress,
                    shopperSessionId    = HttpContext.Current.Session.SessionID,
                    shopperUserAgent    = httpRequest.UserAgent,
                    shopperAcceptHeader = String.Join(";", httpRequest.AcceptTypes)
                };
            }

            var orderType = (OrderType)Enum.Parse(typeof(OrderType), form["radOrderType"]);

            var request = new OrderRequest()
            {
                token               = form["token"],
                orderDescription    = form["description"],
                amount              = (int)(Convert.ToDecimal(form["amount"]) * 100),
                currencyCode        = (CurrencyCode)Enum.Parse(typeof(CurrencyCode), form["currency"]),
                name                = is3DS ? "3D" : form["name"],
                billingAddress      = billingAddress,
                threeDSecureInfo    = is3DS ? threeDSInfo : new ThreeDSecureInfo(),
                is3DSOrder          = is3DS,
                authorizeOnly       = form["authoriseOnly"] == "on",
                orderType           = orderType,
                customerIdentifiers = new List <Entry>()
                {
                    new Entry()
                    {
                        key   = "my-customer-ref",
                        value = "customer-ref"
                    }
                },
                customerOrderCode = "A123"
            };

            try
            {
                var response = client.GetOrderService().Create(request);

                HandleSuccessResponse(response);

                SuccessPanel.Visible = true;
            }
            catch (WorldpayException exc)
            {
                ErrorControl.DisplayError(exc.apiError);
            }
            catch (Exception exc)
            {
                throw new InvalidOperationException("Error sending request with token " + request.token, exc);
            }
        }
Beispiel #12
0
        protected void OnCreateOrder(object sender, CommandEventArgs e)
        {
            var form          = HttpContext.Current.Request.Form;
            var client        = new WorldpayRestClient((string)Session["apiEndpoint"], (string)Session["service_key"]);
            var orderType     = (OrderType)Enum.Parse(typeof(OrderType), form["orderType"]);
            int?_amount       = null;
            var _currencyCode = "";

            try
            {
                _amount = (int)(Convert.ToDecimal(form["amount"]) * 100);
            }
            catch (Exception excAmount) { }

            try
            {
                _currencyCode = Enum.Parse(typeof(CurrencyCode), form["currency"]).ToString();
            }
            catch (Exception excCurrency) { }

            var billingAddress = new Address()
            {
                address1    = form["address1"],
                address2    = form["address2"],
                address3    = form["address3"],
                postalCode  = form["postcode"],
                city        = form["city"],
                state       = "",
                countryCode = Enum.Parse(typeof(CountryCode), form["countryCode"]).ToString()
            };

            var deliveryAddress = new DeliveryAddress()
            {
                firstName   = form["delivery-firstName"],
                lastName    = form["delivery-lastName"],
                address1    = form["delivery-address1"],
                address2    = form["delivery-address2"],
                address3    = form["delivery-address3"],
                postalCode  = form["delivery-postcode"],
                city        = form["delivery-city"],
                state       = "",
                countryCode = Enum.Parse(typeof(CountryCode), form["delivery-countryCode"]).ToString()
            };

            var is3DS = form["3ds"] == "on" ? true : false;
            ThreeDSecureInfo threeDSInfo = null;

            if (is3DS)
            {
                var httpRequest = HttpContext.Current.Request;
                threeDSInfo = new ThreeDSecureInfo()
                {
                    shopperIpAddress    = httpRequest.UserHostAddress,
                    shopperSessionId    = HttpContext.Current.Session.SessionID,
                    shopperUserAgent    = httpRequest.UserAgent,
                    shopperAcceptHeader = String.Join(";", httpRequest.AcceptTypes)
                };
            }

            var request = new OrderRequest
            {
                token              = form["token"],
                orderDescription   = form["description"],
                statementNarrative = form["statement-narrative"],
                billingAddress     = billingAddress,
                deliveryAddress    = deliveryAddress,
                amount             = _amount,
                currencyCode       = _currencyCode,
                name             = is3DS ? "3D" : form["name"],
                threeDSecureInfo = is3DS ? threeDSInfo : new ThreeDSecureInfo(),
                is3DSOrder       = is3DS,
                authorizeOnly    = form["authoriseOnly"] == "on",
                orderType        = orderType.ToString()
            };

            if (!string.IsNullOrEmpty(form["settlement-currency"]))
            {
                request.settlementCurrency = form["settlement-currency"];
            }

            try
            {
                var response = client.GetOrderService().Create(request);
                HandleSuccessResponse(response);
            }
            catch (WorldpayException exc)
            {
                ErrorControl.DisplayError(exc.apiError);
            }
            catch (Exception exc)
            {
                throw new InvalidOperationException("Error sending request with token " + request.token, exc);
            }
        }