20 mrt

Om informatie veilig te verzenden tussen een website en het Ogone platform maakt Ogone gebruik van een gehashte versie van deze informatie genaamd de SHA-IN en SHA-OUT. Deze gehashte versie of de SHASIGN zorgt ervoor dat alle informatie beter beveiligd is en elk systeem een grotere weerstand heeft tegen mogelijke fraude. Niet onbelangrijk bij een online betalingssysteem.

Hash methode kiezen

ogone-shasign

Ogone maakt gebruik van de SHA-1, SHA-256 en SHA-512 hash methodes om data te encrypteren. Standaard maakt Ogone gebruik van de SHA-1 encryptie methode, maar als een andere  methode jouw voorkeur heeft dan kan je deze aanpassingen in het controlepaneel van jouw Ogone account zelf doorvoeren.

Opbouwen van de SHA-IN

Zowel Ogone als de ontwikkelaar kunnen controleren of de informatie die ze binnenkrijgen gelijk is aan de informatie die verzonden is door de SHASIGN opnieuw op te bouwen samen met een sleutel die enkel gekend is door Ogone en de ontwikkelaar. De opbouw van de SHA-IN bestaat uit een string van alle velden die verzonden worden, hun waarde en de SHA-IN sleutel (VELD=waarde+sleutel ). Bij het opmaken van deze string moet je volgende punten onthouden:

  • De velden die in de berekening worden opgenomen moeten voorkomen in de “Appendix : Lijst van paremeters op te nemen in de SHA berekeningen” die je kan raadplegen in de Ogone basis tutorial. Er mogen geen extra velden voorzien worden bij het berekenen van de SHASIGN. 
  • Alle veldnamen moeten in hoofdletters en alfabetisch gerangschikt worden.
  • Lege velden moeten verwijderd worden uit de berekening van de SHASIGN.
  • Het bedrag (AMOUNT) moet vermenigvuldigd worden met 100. Dit voorkomt problemen met internationale verschillen in het gebruik van het teken voor decimaal punt.

Wanneer de string is opgemaakt moet deze nog versleuteld worden volgens de SHA-1, SHA-256 of SHA-512 methode.

Voorbeeldfunctie in php

Om het gemakkelijk te maken heb ik een functie aangemaakt die de SHASIGN aanmaakt met de juiste instellingen.

function generateShasign($fields) {
    unset($fields['SHASIGN']);
    ksort($fields, SORT_NATURAL | SORT_FLAG_CASE); 
    $phrase = ”;
    foreach($fields as $key => $field){
        if(empty($field) && $field !== ’0′) continue;
        $phrase .= strtoupper($key) . ‘=’ . $field . $this->settings[$type];
    }
    return sha1($phrase);
}

Foutmeldingen Ogone

Bij het versturen van de data naar informatie kan je enkele foutmeldingen krijgen wanneer deze data niet correct is opgebouwd. Deze foutmeldingen vind je terug in het adminpaneel van Ogone onder ‘Error Logs’.

  • Een veel voorkomende foutmelding wanneer je net begint met Ogone is ‘unknown order/0/s‘. De foutmelding zelf zegt niet veel maar het betekent gewoon dat je geen SHASIGN hebt meegegeven met de opgestuurde data naar Ogone. Deze is dus verplicht van Ogone om de veiligheid van data te geranderen.
  • Een net zo onduidelijke foutmelding is ‘unknown order/1/s‘. Deze foutmelding geeft aan dat de meegegeven SHASIGN niet overeenkomt met de opgebouwde SHASIGN bij Ogone. Dit kan als oorzaak hebben dat je de SHASIGN niet correct opbouwt of dat de data gemanipuleerd is.

Opbouwen van de SHA-OUT

Wanneer een transactie is afgerond (al dan niet succesvol) wordt er data van Ogone verstuurd naar het systeem. Deze data bevat informatie over de betaling van de klant en het is weeral belangrijk dat deze data beveiligd is met een SHASIGN ter controle. De opbouw van de SHA-OUT is gelijk aan die van de SHA-IN waarbij alle velden in hoofdletters moeten staan, alfabetisch gevolgd door hun waarde en de SHA-OUT sleutel. Belangrijk is dat je een andere sleutel hebt voor SHA-IN en SHA-OUT. Wanneer de meegegeven SHASIGN niet gelijk is aan de door jouw opgebouwde SHASIGN dan is de data ongeldig.

Enkele opmerkingen:

  • Het bedrag (AMOUNT) veld is deze keer niet vermenigvuldigd met 100. We weten niet waarom Ogone hier niet consistent is. Hoewel de data van Ogone uit altijd met hetzelfde decimaal punt zal zijn.
  • Het SHASIGN veld moet uit de berekening worden genomen. Alle andere velden moeten worden opgenomen in de opbouw. Dit doe je best door de functie voor de SHA-OUT te starten met:
    unset($fields['SHASIGN']);
    
  • Een lijst met overeenkomende beschrijving vind je terug bij de Ogone e-Commerce betaalinformatie.

Wanneer de meegestuurde SHASIGN overeenkomt met de door jouw opgebouwde SHASIGN is alles correct verlopen. Hierna kan je de bestellingen afronden op basis van de meegeleverde informatie.

Wij hebben heel wat ervaring met het inwerken van Ogone in E-Commerce websites. Contacteer ons dus zeker als je vragen hebt!

Geef een reactie