Autenticación

Las llaves de autenticación son usadas para autenticar todas tus llamadas al servidor de Conekta por medio de autenticación básica HTTP. Las llaves o keys pueden ser recuperadas y configuradas dentro de tu Admin Conekta. Cada key es configurada para ser utilizada ya sea en modo sandbox o producción y para cada uno de estos modos obtendrás una key privada para llamadas entre servidores y una key pública para utilizar con ConektaJS o en su defecto algún SDK como Android y iOS.

Asegúrate de nunca compartir tus keys públicas o privadas con nadie, ya que podrían tener accesos a tu cuenta de Conekta.

Hemos utilizado una llave de API de prueba en todos los ejemplos de la documentación para que puedas probar todos los ejemplos de inmediato y sin tener que crear una cuenta.

No olvides tener a la mano el KIT de pruebas para estar probando los métodos de pago con tarjetas durante el desarrollo.

Para efectos prácticos estamos utilizando nuestras Bibliotecas de pagos , se mantienen actualizadas y te servirán para integrarte fácilmente con nuestros servicios:

Recuerda que:

  1. Puedes obtener tu llave privada desde el panel de Conekta

    • Key_LlavePRIVADA123456789
  2. Convierte tu llave a BASE64

    • Utilizando alguna función proporcionada por el lenguaje de programación de tu elección
  3. Una vez codificada, podrás hacer uso en tu header para autentificarte

    • Authorization: Basic S2V5X0xsYXZlUFJJVkFEQTEyMzQ1Njc4OQ==
972

Imagen 1: Una vista simple para obtener las llaves desde POSTMAN de Google, aquí declaramos variables de entorno.

976

Imagen 2: Una vista simple para obtener las llaves desde POSTMAN de Google, aquí la herramienta las genera automáticamente, la imagen es informativa

curl --location --request POST 'https://api.conekta.io'/{API_endpoint}' \
//POST / PUT / GET / DEL son admitidas dependiendo del endpont a utilizar//
--header 'Accept: application/vnd.conekta-v2.0.0+json' \
--header 'Accept-Language: es' \
--header 'Content-Type: application/json' \
-u key_xxxxxxxxxxxxxx: \
--data-raw '{
//JSON REQUEST BODY
}'
#Ejemplo: Los ejemplos deben de servir de guia, pero deben de desarrollarse de manera segura en conexiones HTTPS y bajo los lineamientos de buenas prácticas

require 'net/http'
require 'openssl'

uri = URI('https://localhost/')

Net::HTTP.start(uri.host, uri.port,
  :use_ssl => uri.scheme == 'https', 
  :verify_mode => OpenSSL::SSL::VERIFY_NONE) do |http|

  request = Net::HTTP::Get.new uri.request_uri
  request.basic_auth 'matt', 'secret'

  response = http.request request # Net::HTTPResponse object

  puts response
  puts response.body
end
// Ejemplo: Los ejemplos deben de servir de guia, pero deben de desarrollarse de manera segura en conexiones HTTPS y bajo los lineamientos de buenas prácticas

<?php
require 'vendor/autoload.php';

use GuzzleHttp\Client;

$client = new \GuzzleHttp\Client();
$credentials = base64_encode('key_LlavePRIVADA12345');

$response = $client->get('http://api.conekta.io/'.$API_endpoint, [
  'body' => '{"livemode":false,"name":"El Fulanito - The guy","email":"[email protected]","phone":"55-5555-5555","default_shipping_contact_id":"ship_cont_1a2b3c4d5e6f7g8h (Conekta_ID)","id":"cus_1a2b3c4d5e6f7g8h","object":"customer","created_at":"1628019992","corporate":false,"default_payment_source_id":"src_1a2b3c4d5e6f7g8h"}',
  'headers' => [
    'Accept' => 'application/vnd.conekta-v2.0.0+json',
    'Authorization' => ['Basic '.$credentials],
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
#Ejemplo: Los ejemplos deben de servir de guia, pero deben de desarrollarse de manera segura en conexiones HTTPS y bajo los lineamientos de buenas prácticas
  
from http.client import HTTPSConnection
from base64 import b64encode
#This sets up the https connection
c = HTTPSConnection("www.google.com")
#we need to base 64 encode it 
#and then decode it to acsii as python 3 stores it as a byte string
userAndPass = b64encode(b"username:password").decode("ascii")
headers = { 'Authorization' : 'Basic %s' %  userAndPass }
#then connect
c.request('GET', '/', headers=headers)
#get the response back
res = c.getresponse()
# at this point you could check the status etc
# this gets the page text
data = res.read()
//Ejemplo: Los ejemplos deben de servir de guia, pero deben de desarrollarse de manera segura en conexiones HTTPS y bajo los lineamientos de buenas prácticas

const userService = require('../users/user.service');

module.exports = basicAuth;

async function basicAuth(req, res, next) {
    // make authenticate path public
    if (req.path === '/users/authenticate') {
        return next();
    }

    // check for basic auth header
    if (!req.headers.authorization || req.headers.authorization.indexOf('Basic ') === -1) {
        return res.status(401).json({ message: 'Missing Authorization Header' });
    }

    // verify auth credentials
    const base64Credentials =  req.headers.authorization.split(' ')[1];
    const credentials = Buffer.from(base64Credentials, 'base64').toString('ascii');
    const [username, password] = credentials.split(':');
    const user = await userService.authenticate({ username, password });
    if (!user) {
        return res.status(401).json({ message: 'Invalid Authentication Credentials' });
    }

    // attach user to request object
    req.user = user

    next();
}
//Ejemplo: Los ejemplos deben de servir de guia, pero deben de desarrollarse de manera segura en conexiones HTTPS y bajo los lineamientos de buenas prácticas

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Base64;


public class HttpBasicAuth {

    public static void main(String[] args) {

        try {
            URL url = new URL ("http://ip:port/login");
            String encoding = Base64.getEncoder().encodeToString(("test1:test1").getBytes(‌"UTF‌​-8"​));

            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("POST");
            connection.setDoOutput(true);
            connection.setRequestProperty  ("Authorization", "Basic " + encoding);
            InputStream content = (InputStream)connection.getInputStream();
            BufferedReader in   = 
                new BufferedReader (new InputStreamReader (content));
            String line;
            while ((line = in.readLine()) != null) {
                System.out.println(line);
            }
        } catch(Exception e) {
            e.printStackTrace();
        }

    }

}
//Ejemplo: Los ejemplos deben de servir de guia, pero deben de desarrollarse de manera segura en conexiones HTTPS y bajo los lineamientos de buenas prácticas

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net.Http;
using System.Net;


namespace HTTP_Test
{
    class program
    {
        static void Main()
        {
            Task t = new Task(HTTP_GET);
            t.Start();
            Console.ReadLine();
        }

        static async void HTTP_GET()
        {
            var TARGETURL = "http://en.wikipedia.org/";

            HttpClientHandler handler = new HttpClientHandler()
            {
                Proxy = new WebProxy("http://127.0.0.1:8888"),
                UseProxy = true,
            };

            Console.WriteLine("GET: + " + TARGETURL);

            // ... Use HttpClient.            
            HttpClient client = new HttpClient(handler);

            var byteArray = Encoding.ASCII.GetBytes("username:password1234");
            client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));

            HttpResponseMessage response = await client.GetAsync(TARGETURL);
            HttpContent content = response.Content;

            // ... Check Status Code                                
            Console.WriteLine("Response StatusCode: " + (int)response.StatusCode);

            // ... Read the string.
            string result = await content.ReadAsStringAsync();

            // ... Display the result.
            if (result != null &&
            result.Length >= 50)
            {
                Console.WriteLine(result.Substring(0, 50) + "...");
            }
        }
    }
}
//Ejemplo: Los ejemplos deben de servir de guia, pero deben de desarrollarse de manera segura en conexiones HTTPS y bajo los lineamientos de buenas prácticas

func basicAuth(username, password string) string {
  auth := username + ":" + password
  return base64.StdEncoding.EncodeToString([]byte(auth))
}

func redirectPolicyFunc(req *http.Request, via []*http.Request) error{
  req.Header.Add("Authorization","Basic " + basicAuth("username1","password123"))
  return nil
}

func main() {
  client := &http.Client{
    Jar: cookieJar,
    CheckRedirect: redirectPolicyFunc,
  }

  req, err := http.NewRequest("GET", "http://localhost/", nil)
  req.Header.Add("Authorization","Basic " + basicAuth("username1","password123")) 
  resp, err := client.Do(req)
}