NDM Simulator Integration with the 3DS Server

Once the Netcetera Demo Merchant Simulator is up and running, the following endpoints of the NDM Simulator should be configured in the 3DS Server Timeout Configuration:

  • The Results Response Notification Url - fully-qualified-url-of-simulator/requestor/results-notification
  • The Challenge Response Notification Url - fully-qualified-url-of-simulator/requestor/challenge-notification
  • The ThreeDS Requestor Url - fully-qualified-url-of-simulator/shop

Scheme Directory Server configuration

Since the Simulator simulates a Directory Server, Scheme(s) should be configured in the 3DS Server Configuration having the NDM Simulator endpoint as a Directory Server endpoint. For the time being, there isn't a single endpoint on the NDM Simulator which handles both preparation and authentication requests.

When testing authentication requests, a 3DS Server Scheme Directory Server endpoint should be configured to:

  • fully-qualified-url-of-simulator/ds/authentication

When testing preparation requests, the 3DS Server Scheme Directory Server endpoint can be configured with any of the following URLs (all simulate different responses):

  • fully-qualified-url-of-simulator/ds/valid-pres-configured-card-range-data
  • fully-qualified-url-of-simulator/ds/valid-pres-add-card-range-data
  • fully-qualified-url-of-simulator/ds/pres-error-request-validation-failed
  • fully-qualified-url-of-simulator/ds/pres-error-request-missing-data
  • fully-qualified-url-of-simulator/ds/pres-error-request-invalid-serial-num
  • fully-qualified-url-of-simulator/ds/valid-pres-delete-card-range-data
  • fully-qualified-url-of-simulator/ds/timeout-pres
  • fully-qualified-url-of-simulator/ds/invalid-pres-missing-data

The returned Preparation Responses' include the following card ranges - having action indicator ADD: * [4000001000000000, 4000001999999999], [4000003000000000, 4000003999999999], [4000007000000000, 4000007999999999] and [5000001000000000, 5000007999999999].

Best practise would be to configure multiple Schemes, like the example below. At the startup of the 3DS Server it will send preparation requests to all directory server endpoints and different types of preparation responses will be simulated from the NDM Simulator.

When testing authentication requests, a Visa cardholder account number should be utilised in the request. In that case, the Visa Directory Server will be resolved having the authentication endpoint of the NDM Simulator.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?xml version="1.0" encoding="UTF-8"?>
<ThreeDSServerConfiguration>
 
  <TimeoutConfiguration/>
 
  <UrlConfiguration>
    <NotificationUrl>fully-qualified-url-of-3ds-server/notification</NotificationUrl>
    <ResultsResponseNotificationUrl>fully-qualified-url-of-simulator/requestor/results-notification</ResultsResponseNotificationUrl>
    <ChallengeResponseNotificationUrl>fully-qualified-url-of-simulator/requestor/challenge-notification</ChallengeResponseNotificationUrl>
    <ThreeDSRequestorUrl>fully-qualified-url-of-simulator/shop</ThreeDSRequestorUrl>
    <ThreeDSMethodNotificationUrl>fully-qualified-url-of-3ds-server/3ds/3ds-method-notification</ThreeDSMethodNotificationUrl>
  </UrlConfiguration>
 
  <Scheme schemeId="...">
    <DirectoryServer  threeDSRequestorID="..." threeDSRequestorName="..." threeDSServerOperatorID="..." threeDSServerUrl="...">
      <ClientCertificateStore keystoreResource="file:..." keystorePassword="..."/>
      <TrustCertificateStore keystoreResource="..." keystorePassword="..."/>
      <DirectoryServerEndpoint url="<fully-qualified-url-of-simulator>/ds/valid-pres-add-card-range-data" enabled="true"/>
    </DirectoryServer>
  </Scheme>
 
  <Scheme schemeId="...">
  <DirectoryServer threeDSRequestorID="..." threeDSRequestorName="..." threeDSServerOperatorID="..." threeDSServerUrl="...">
    <ClientCertificateStore keystoreResource="file:..." keystorePassword="..."/>
    <TrustCertificateStore keystoreResource="..." keystorePassword="..."/>
    <DirectoryServerEndpoint url="<fully-qualified-url-of-simulator>/ds/pres-error-request-validation-failed" enabled="true"/>
  </DirectoryServer>
  </Scheme>
      .
      .
      .
      .
      .
  <Scheme schemeId="Visa">
  <DirectoryServer threeDSRequestorID="..." threeDSRequestorName="..." threeDSServerOperatorID="..." threeDSServerUrl="...">
    <ClientCertificateStore keystoreResource="file:..." keystorePassword="..."/>
    <TrustCertificateStore keystoreResource="..." keystorePassword="..."/>
    <DirectoryServerEndpoint url="<fully-qualified-url-of-simulator>/ds/authentication" enabled="true"/>
  </DirectoryServer>
  </Scheme>
 
  <Acquirer name="...">
    <AcquirerBin schemeId="Visa" value="123456"/>
  </Acquirer>
 
  <Merchant id="..." merchantName="..." mcc="..." merchantCountryCode="...">
    <MerchantAcquirer acquirerBin="123456" acquirerMerchantID="..." schemeId="Visa"/>
  </Merchant>
 
</ThreeDSServerConfiguration>