<?php
function encrypt_3DES($message, $key){
// Se establece un IV por defecto
$bytes = array(0,0,0,0,0,0,0,0); //byte [] IV = {0, 0, 0, 0, 0, 0, 0, 0}
$iv = implode(array_map("chr", $bytes)); //PHP 4 >= 4.0.2
// Se cifra
$ciphertext = mcrypt_encrypt(MCRYPT_3DES, $key, $message, MCRYPT_MODE_CBC, $iv); //PHP 4 >= 4.0.2
return $ciphertext;
}
function encodeBase64($data){
$data = base64_encode($data);
return $data;
}
function decodeBase64($data){
$data = base64_decode($data);
return $data;
}
function mac256($ent,$key){
$res = hash_hmac('sha256', $ent, $key, true);//(PHP 5 >= 5.1.2)
return $res;
}
function createMerchantSignature($key){
// Se decodifica la clave Base64
$key = decodeBase64($key);
// Se genera el parámetro Ds_MerchantParameters
$ent = "eyJEU19NRVJDSEFOVF9VUkxLTyI6Imh0dHBzOi8vZWplbXBsby9lamVtcGxvX1VSTF9PS19LTy5waHAiLCJEU19NRVJDSEFOVF9UUkFOU0FDVElPTlRZUEUiOiIwIiwiRHNfU2lnbmF0dXJlVmVyc2lvbiI6IkhNQUNfU0hBMjU2X1YxIiwiRFNfTUVSQ0hBTlRfQ1VSUkVOQ1kiOiI5NzgiLCJEU19NRVJDSEFOVF9NRVJDSEFOVENPREUiOiI5OTkwMDg4ODEiLCJEU19NRVJDSEFOVF9URVJNSU5BTCI6Ijg3MSIsIkRTX01FUkNIQU5UX1VSTE9LIjoiaHR0cHM6Ly9lamVtcGxvL2VqZW1wbG9fVVJMX09LX0tPLnBocCIsIkRTX01FUkNIQU5UX01FUkNIQU5UVVJMIjoiaHR0cHM6Ly9lamVtcGxvL2VqZW1wbG9fVVJMX05vdGlmLnBocCIsIkRTX01FUkNIQU5UX0FNT1VOVCI6IjE0NSIsIkRTX01FUkNIQU5UX09SREVSIjoiMTQ0Mjc3MjY0NSJ9";
// Se diversifica la clave con el Número de Pedido
$key = encrypt_3DES('1442772645', $key);
echo bin2hex($key);
// MAC256 del parámetro Ds_MerchantParameters
$res = mac256($ent, $key);
// Se codifican los datos Base64
return encodeBase64($res);
}
$key = createMerchantSignature("Mk9m98IfEblmPfrpsawt7BmxObt98Jev");
echo $key
?>
preferences:
49.5 ms | 402 KiB | 5 Q