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); } }
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); }
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); }
/// <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); } }
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); } }
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); } }