Versión API v1.0
Permite el envío de SMS a nuestros clientes registrados
https://restapi.marketext.com/sms/{api_id}
Nuestra API Rest utiliza un esquema de autenticación basado en esta especificación OAuth 2.
Todas las solicitudes de envío deberán incluir el encabezado Authorization con el siguiente formato:
Authorization: MAC id="su ID de usuario", ts="1455281539", nonce="caracteres_aleatorios", mac="hash-codificado-base64"
id El ID de usuario de su cuenta en Marketext. Se recomienda crear un usuario exclusivo en la cuenta para el uso de la API.
ts La marca de hora (Unix timestamp) del instante en el que se realiza el solicitud.
nonce Cadena de caracteres aleatorios. Asegúrese de que sea única para cada solicitud. Máx. 32 caracteres.
mac Firma (hash) de la solicitud codificada en base 64
Timestamp
Nonce
HTTP request method
HTTP request URI
HTTP host
HTTP port
Optional extra data
Cada línea de la cadena debe estar separada por el caracter de avance de línea (\n o 0x0A; No es válido usar \r o \r\n).
La cadena también deberá finalizar con el caracter avance de línea. A continuación se muestra un ejemplo de una solicitud POST.
1455281539\n
ec120228fa6fd17e2545703b4cd3eba2\n
POST\n
/sms/demouser\n
restapi.marketext.com\n
80\n
\n
Tenga en cuenta que el campo Optional extra data se encuentra en blanco. Nuestra API no usa ese campo, pero debe incluirse en la firma tal como lo indica la especificación OAuth 2. Una vez que se tiene la cadena de datos se debe calcular la firma usando el método HMAC utilizando el md5 de la contraseña del usuario como llave.
Nuestra API utiliza el algoritmo SHA-256 para calcular la firma. Se recomienda que utilice librerías nativas ya que el cálculo debe ser exacto.
Asegúrese que el resultado del hash sea en binario y no en hexadecimal. Finalmente codifique el hash calculado utilizando base 64.
// Obtener la marca de hora (timestamp)
$timestamp = time();
// Obtener la cadena aleatoria
$nonce = md5(function_exists("openssl_random_pseudo_bytes") ? openssl_random_pseudo_bytes(10) :
(function_exists("random_bytes") ? random_bytes(10) : mt_rand()) );
// Definir el método de la solicitud
$method = "POST";
// Especificar la URI
$URI = "/sms/democompany";
// Especificar el host
$host = "restapi.marketext.com";
// Especificar el puerto
$port = 80;
// Definir una variable en blanco para los parámetros extra
$extra = "";
// Preoparar la cadena base
$mac = $timestamp . "\n" .
$nonce . "\n" .
$method . "\n" .
$URI . "\n" .
$host . "\n" .
$port . "\n" .
$extra . "\n";
// Calcular la firma usando el algoritmo SHA-256 y el md5 de la contraseña del usuario como llave
$hmac = hash_hmac ( "sha256", $mac, md5("clave123456"), TRUE);
// el parámetro final puesto a TRUE garantiza que el resultado sea devuelto en binario
// Codificar la firma en base64
$base64Data = base64_encode( $hmac );
// Finalmente armar la cadena que se enviará en los encabezados
$headers = array("Authorization: MAC id=\"demouser\",ts=\"{$timestamp}\", nonce=\"{$nonce}\", mac=\"{$base64Data}\"");
Importante: el encabezado debe enviarse siempre con comillas dobles, no se puede usar comilla simple.
Tomando como ejemplo la siguiente cadena:
1455281539\n
ec120228fa6fd17e2545703b4cd3eba2\n
POST\n
/sms/democompany\n
restapi.marketext.com\n
80\n
\n
y utilizando la contraseña: clave123456 para generar el hash SHA-256 obtenermos la siguiente firma después de codificar en base64:
gGYlFChF2R2k0ecCS2HluJpjRuonl8LsdBhO9Ne96j8=
La cadena de encabezado quedaría así:
Authorization: MAC id="demouser", ts="1455281539", nonce="ec120228fa6fd17e2545703b4cd3eba2", mac="gGYlFChF2R2k0ecCS2HluJpjRuonl8LsdBhO9Ne96j8="
Parámetro | Descripción | Requerido | Valor Predeterminado |
---|---|---|---|
destination | Número de destino, si su cuenta es internacional deberá anteponer el prefijo del país al que desea enviar el SMS | Obligatorio | |
text | Mensaje a enviar, si la longitud es mayor a 160 caracteres, se partirá en múltiples SMS de 160 caracteres cada una | Obligatorio | |
senderid | Remitente personalizado puede contener entre 4 y 11 caracteres A-Za-z0-9 Disponibilidad depende del operador / No disponible para ningún operador en Colombia | Opcional | |
smstype | Tipo de envío: instant Inmediato / scheduled Programado | Opcional | instant |
date_delivery | Si el SMS es programado, debe definir la fecha de envío en formato AAAA-MM-DD | Opcional | |
time_delivery | Si el SMS es programado, debe definir la hora de envío en formato 24 horas HH:MM | Opcional | |
format | Solicita el formato de respuesta ya sea JSON/XML/CSV/URLencoded | Opcional |
POST | http://restapi.marketext.com/sms/democompany?destination=3001234567&text=Hello World! |
$headers = array('Authorization: MAC id="demouser", ts="1455281539", nonce="ec120228fa6fd17e2545703b4cd3eba2",' .
'mac="gGYlFChF2R2k0ecCS2HluJpjRuonl8LsdBhO9Ne96j8="');
$data=array('destination'=>'3001234567', 'text'=>'Prueba REST Api Marketext - Autorizacion MAC' );
$client = new RESTClient();
$client->setHeaders($headers);
$client->setData($data);
$client->setUrl("http://restapi.marketext.com/sms/democompany");
$client->setMethod("POST");
$client->execute();
$response = $client->getLastResponse();
$client->resetClient();
Respuesta esperada | Parámetro a enviar |
---|---|
JSON | application/json |
XML | application/xml |
CSV | text/csv |
Form URL Encoded | application/x-www-form-url-encoded |
JSON{ "Number" => "573001234567", "MsgID" => "a2f5adbf76124fdcfc31f5acd6e9463f" }XML<?xml version="1.0"?> <respuesta><Number>573001234567</Number><MsgID>a2f5adbf76124fdcfc31f5acd6e9463f</MsgID></respuesta>CSV573001234567,a2f5adbf76124fdcfc31f5acd6e9463fURLEncodedNumber=573001234567&MsgID=a2f5adbf76124fdcfc31f5acd6e9463f
La siguiente es una lista de códigos de respuesta del recurso y la frase estándar asociadas a ese código, más la explicación de los errores específicos que puedan generarse.
Las frases estándares están destinadas a dar una descripción intutiva del estatus, y la explicación específica permitirá encontrar el error más fácilmente.
El código de respuesta es enviado en el encabezado, y la explicación en el cuerpo de la respuesta.
Código | Descripción |
---|---|
400 | Solicitud incorrecta. La solicitud contiene datos no válidos o faltantes. destination no definido. text no definido. date_delivery o time_delivery no definido date_delivery no válido time_delivery no válido destination no válido |
401 | No autorizado. Error de autenticación o no se proporciono la información de autenticación. api_id no definido. |
404 | No encontrado. El URI no coincide con ninguno de los recursos disponibles, o, si solicita un recurso con un identificador, el recurso no existe. No encontrado. El recurso no existe. |
405 | Método no permitido. El método de la petición HTTP que esta intentando utilizar no esta permitido. Verifique la documentación para ver los metodos permitidos. |
JSON
{
"error": "No autorizado. Error de autenticación o no se proporcionó la información de autenticación"
}
XML
<?xml version="1.0"?>
<respuesta>
<error>No autorizado. Error de autenticación o no se proporcionó la información de autenticación</error>
</respuesta>
CSV
No autorizado. Error de autenticación o no se proporcionó la información de autenticación
URLEncoded
error=No encontrado. El URI no coincide con ninguno de los recursos disponibles, o, si solicita un recurso con un identificador, el recurso no existe -> No encontrado. El código buscado no existe
Transferencia limitada | No |
Formato de la respuesta | JSON/XML/CSV/URLencoded |
Autenticación | MAC Access Authentication Basada en esta especificación OAuth 2 |