Getting Started with FDMS (4D Payments SDK)

How do I get started with FDMS? What is Datawire?

In order to use FDMS, FDMS requires that you first register and activate a merchant account with Datawire, which is the real time transaction delivery network that FMDS relies on. We include a component in our 4D Payments SDK that does just that: FMDSRegister.

  1. The first thing you must do is Register your merchant account. First Data Merchant Services will provide you with a MerchantNumber and a MerchantTerminalNumber, which are required for registering with Datawire. In addition, you will need to set the TransactionNumber with a unique value. (The TransactionNumber should be incremented for each transaction you send to the Datawire VXN). The example below also sets the URL to point to the Datawire test server.
      FDMSRegister.MerchantNumber = "000000999990"
      FDMSRegister.MerchantTerminalNumber = "555555"
      FDMSRegister.TransactionNumber = "1" 'any unique number will do.
      FDMSRegister.URL = ""
  2. If the registration was successful (no exceptions were thrown), the DatawireResponseStatus property will contain “OK”, and the DatawireId property will contain the new Id which you must save and send with every subsequent FDMS transaction. The PrimaryDiscoveryURL and SecondaryDiscoveryURL properties will also be filled after a successful authorization. These Urls should be used to perform ServiceDiscovery.
  3. After registering, you must immediately Activate the merchant. If you wait too long, your registration will time out, and you will have to contact Datawire to have them reset your account so that you may register again. When activating the merchant, the same properties are required as for the Register method, with the addition of the DatawireId property. Since the call to the Register method filled the DatawireId property with the correct value, all we need to do now is:
      FDMSRegister.TransactionNumber = 2
  4. After registering and activating the account, you may now move on to Service Discovery. The Register method returned both a PrimaryDiscoveryURL and a SecondaryDiscoveryURL. Use these Urls with the ServiceDiscovery method to retrieve a list of valid transaction URLs. For instance:

  5. After a successful ServiceDiscovery, the DatawireResponseStatus property will be “OK”. The ServiceProviderCount property will contain the total number of transaction URLs returned, and the URLs will be listed in the ServiceProvider array property. At this time, you should ping each of those URLs to find the URL with the shortest PingResponseTime, for later use in your transactions.
      For i = 0 To FDMSRegister.ServiceProviders.Length - 1
        Debug.Print(FDMSRegister.ServiceProviders[i] & " = " & _

You may now use the DatawireId and the Service Provider URLs retrieved by this component to submit transactions using the FDMSECommerce, FDMSRetail, and FDMSSettle components!

We appreciate your feedback. If you have any questions, comments, or suggestions about this entry please contact our support team at