Skip to main content

Security

VodaPay Gateway is PCI DSS compliant. PCI DSS stands for Payment Card Industry Data Security Standard and is a PASA (Payment Association of South Africa) regulation in South Africa, this means any company accepting credit card payments on their website needs to comply in some way.

By using VodaPay Gateway means that you do not have to be concerned about being PCI compliant, and know that your card information is handled securely.

For more information on PCI compliance you can check out PCI Security Standards Council website.

Security at VodaPay Gateway​

VodaPay Gateway forces HTTPS for all services using TLS 1.2, including all our APIs and Websites. For our Web Application Firewall we have partnered with Imperva.

Imperva protects VodaPay Gateway from:

  • Bot Mitigations
  • DDoS Attacks

All of our libraries connect to VodaPay Gateway servers over TLS and verify TLS certificates on each connection. We regularly perform audits of our implementation, including the certificates we serve, the certificate authorities we use, and the ciphers we support. Currently, we use DigiCert. We use HSTS to ensure that browsers interact with VodaPay Gateway only serves over HTTPS.

Signature

In order to construct the Signature element of the Assurance Data, the values of the following fields need to be concatenated together if present. Note that they must be concatenated in this specific order.

  1. Merchant ID
  2. Transaction Amount
  3. Currency Code
  4. Retrieval Reference Number
  5. Retrieval Reference Number Extended
  6. Session ID
  7. Merchant's Private Key

This produces a concatenated string. Change this string to lowercase. Then generate a SHA512 hash value from the string. This hash value must be used as the Signature element within the assurance data payload JSON message, which is then encrypted into Assurance Data.

The Payment Gateway Server will also generate a Signature from the transaction data using the same method, and confirm that the two Signature values match. This provides a way of verifying that the message had not been tampered with.

Example​

In the example message shown above, the transaction data used for the Signature would be the following:

  • Merchant ID: VPS999999999999
  • Transaction Amount: 50000
  • Currency Code: 710
  • Retrieval Reference Number: 348934893489
  • Retrieval Reference Number, Extended: MERCH383483489
  • Session ID: 26bcbeef-c5c1-4313-8b11-4730fc6a07ab
  • Merchant's Private Key: 02225271-595a-4378-bf2c-8da81e29c195

Result​

With this source data, the Signature would be generated as follows:

1. Concatenate all values: VPS99999999999950000710348934893489MERCH38348348926bcbeef-c5c1-4313-8b11-4730fc6a07ab02225271-595a-4378-bf2c8da81e29c195

2. Change all to lower case: vps99999999999950000710348934893489merch38348348926bcbeef-c5c1-4313-8b11-4730fc6a07ab02225271-595a-4378-bf2c-8da81e29c195

3. Generate a SHA512 hash value: D63F6C9C56C1EDB20CC0E110F7F4D5BF439E879EC9D2F80FAC69A48B9EE8311EEF547DC3F30BBC6B79CA8A92A72570754AF9BFF5FE42918496149B382CAB71E2