Nous mettons à votre disposition une classe développée en PHP sur Github pour vous aider à construire vos requêtes vers la plateforme de paiement AXEPTA.
Cette classe est disponible via ce lien : https://github.com/aphania/axepta-access
A noter que :
- Les paramètres Data et Len sont calculés (Authentication HMAC incluse et chiffrement en Blowfish)
- Exceptions/alertes si des paramètres sont manquants
A l'inverse cette classe vous aide à décoder la réponse de la plateforme de paiement :
- Si la réponse est valide (authentifiée), elle est décodée et les informations sont disponible en clair
Voici un exemple d'utilisation dans la page qui doit rediriger les valeurs du paiement vers la plateforme de paiement :
init the class
$paymentRequest = new Axepta($Your_HMAC);
$paymentRequest->setCryptKey($Your_CRYPTKEY);
Set your data in :
$paymentRequest->setUrl(Axepta::PAYSSL);
$paymentRequest->setMerchantID($Your_MERCHANTID);
$paymentRequest->setTransID("Your paiement prefix" . $Your_Payment_id."/".rand(100000,999999));
$paymentRequest->setAmount($Your_Amount*100);
$paymentRequest->setCurrency('EUR');
$paymentRequest->setRefNr($Your_Ref);
$paymentRequest->setURLSuccess("Your success URL page");
$paymentRequest->setURLFailure("Your failure URL page");
$paymentRequest->setURLNotify("Your notify URL page");
$paymentRequest->setURLBack("Your cancel URL back page");
$paymentRequest->setReponse('encrypt');
$paymentRequest->setLanguage('fr');
$paymentRequest->setOrderDesc('Your Order description text');
// ...
// check your data
$paymentRequest->validate();
// compute
$mac = $paymentRequest->getShaSign() ; // run HMAC hash
$data = $paymentRequest->getBfishCrypt(); // run Crypt & retrieve Data
$len = $paymentRequest->getLen(); // retrieve Crypt length
fill your form
echo "<html><body><form name=\"redirectForm\" method=\"GET\" action=\"" . $paymentRequest->getUrl() . "\">" .
"<input type=\"hidden\" name=\"MerchantID\" value=\"". $paymentRequest->getMerchantID() . "\">" .
"<input type=\"hidden\" name=\"Len\" value=\"". $paymentRequest->getLen() . "\">" .
"<input type=\"hidden\" name=\"Data\" value=\"". $paymentRequest->getBfishCrypt() . "\">" .
"<input type=\"hidden\" name=\"URLBack\" value=\"". $paymentRequest->getURLBack() . "\">" .
"<input type=\"hidden\" name=\"CustomField1\" value=\"". $paymentRequest->getAmount()/100 . "\">" .
"<input type=\"hidden\" name=\"CustomField2\" value=\"". $paymentRequest->getTransID() . "\">" .
"<input type=\"hidden\" name=\"CustomField3\" value=\"". $Your_logo_img . "\">" .
"<input type=\"hidden\" name=\"CustomField8\" value=\"". $Your_miscelaneous text . "\">" .
"<noscript><input type=\"submit\" name=\"Go\" value=\"Click to continue\"/></noscript> </form>" .
"<script type=\"text/javascript\">document.redirectForm.submit(); </script>" .
"</body></html>";
Voici un exemple d'utilisation lors d'une connexion server-to-server :
init the class
$paymentRequest = new Axepta($Your_HMAC);
$paymentRequest->setCryptKey($Your_CRYPTKEY);
Set your data in :
$paymentRequest->setUrl(Axepta::DIRECT);
$paymentRequest->setMerchantID($Your_MERCHANTID);
$paymentRequest->setTransID("Your paiement prefix" . $Your_Payment_id."/".rand(100000,999999));
$paymentRequest->setAmount($Your_Amount*100);
$paymentRequest->setCurrency('EUR');
$paymentRequest->setRefNr($Your_Ref);
$paymentRequest->setURLSuccess("Your success URL page");
$paymentRequest->setURLFailure("Your failure URL page");
$paymentRequest->setURLNotify("Your notify URL page");
$paymentRequest->setURLBack("Your cancel URL back page");
$paymentRequest->setReponse('encrypt');
$paymentRequest->setLanguage('fr');
$paymentRequest->setOrderDesc('Your Order description text');
// ...
// check your data
$paymentRequest->validate();
// compute
$mac = $paymentRequest->getShaSign() ; // run HMAC hash
$data = $paymentRequest->getBfishCrypt(); // run Crypt & retrieve Data
$len = $paymentRequest->getLen(); // retrieve Crypt length
Send the POST REQUEST : ( code depending on the PHP framework you use )
$transmit = array('MerchantID' => $paymentRequest->getMerchantID(), 'Len' => $len, 'Data' => $data);
$request = Request::factory($paymentRequest->getUrl())
->headers('Content-type', 'application/x-www-form-urlencoded; charset=UTF-8')
->method(Request::POST)
->post($transmit);
Voici un exemple d'utilisation lors de la réception de la réponse dans les pages URLnotify ou URLSuccess
$paymentResponse = new Axepta($Your_HMAC);
$paymentResponse->setCryptKey($Your_CRYPTKEY);
$paymentResponse->setResponse($_GET);
if($paymentResponse->isValid() && $paymentResponse->isSuccessful()) {
$TransID = $paymentResponse->getPayID();
$PCNr = $paymentResponse->getPCNr();
$CCBrand = $paymentResponse->getCCBrand();
$CCExpiry = $paymentResponse->getCCExpiry();
// .....
} else {
// Fail ....
}