• PHP
  • Java
  • Java 1.6
  • Ruby
  • .NET
En PHP para las bibliotecas y las dependencias usamos “composer“. Debemos agregar khipu a las dependencias del archivo “composer.json”.
{
    "require": {
        "khipu/khipu-api-client": "2.7.7"
    }
}
Y luego ejecutar:
$ composer install
Installing dependencies (including require-dev)
  - Installing khipu/khipu-api-client (2.7.0)
    Downloading: 100%

Writing lock file
Generating autoload files
Luego, en nuestros archivos de php debemos agregar la siguiente línea para tener disponible la biblioteca:
require __DIR__ . '/vendor/autoload.php';
En Java, usando Maven para resolver las dependencias, debemos agregar las siguientes líneas a nuestro archivo "pom.xml".
<dependency>
    <groupId>com.khipu</groupId>
    <artifactId>khipu-api-client</artifactId>
    <version>2.7.7</version>
</dependency>
Si quieres agregar las dependenciás para groovy, gradle u otras plataformas puedes [buscar el cliente de khipu en maven](https://search.maven.org/search?q=khipu-api-client&target=blank)
La biblioteca de khipu está pensada para ser usada con una máquina virtual 1.7 o superior. Aun así, es posible utilizarla con java 1.6. Para esto es necesario agregar los siguientes cambios. Primero, es necesario agregar un proveedor criptográfico más reciente. Para eso es necesario agregar esta nueva dependencia:
<dependency>
    <groupId>org.bouncycastle</groupId>
    <artifactId>bcprov-jdk15on</artifactId>
    <version>1.54</version>
</dependency>
Luego, para que este proveedor criptográfico esté disponible es necesario agregarlo a los disponibles de la máquina virtual. En el código fuente de la aplicación es necesario agregar las siguientes líneas:
import org.bouncycastle.jce.provider.BouncyCastleProvider;
...
Security.addProvider(new BouncyCastleProvider());
También es posible dejar este proveedor integrado en la máquina virtual. Con eso nos evitamos incluir las líneas de código y el proveedor queda disponible para otras aplicaciones. Para esto es necesario seguir las instrucciones disponibles en la página de [http://www.bouncycastle.org]( http://www.bouncycastle.org/wiki/display/JA1/Provider+Installation)
En Ruby hemos preparado una gema. Para instalar la gema, debemos usar el comando “gem”:
$ gem install khipu-api-client
Luego en tu script debes agregar esta línea para tener disponible el cliente:
require 'khipu-api-client'
Para .NET tenemos disponible una biblioteca empaquetada en un NuGet que se instala usando el [Package Manager Console](http://docs.nuget.org/docs/start-here/using-the-package-manager-console?target=blank)
PM> Install-Package KhipuApiClient
  • PHP
  • Java
  • Ruby
  • .NET
<?php

// Debemos conocer el $receiverId y el $secretKey de ante mano.
$receiverId = obtener-al-crear-una-cuenta-de-cobro;
$secretKey = 'obtener-al-crear-una-cuenta-de-cobro';

require __DIR__ . '/vendor/autoload.php';

$configuration = new Khipu\Configuration();
$configuration->setReceiverId($receiverId);
$configuration->setSecret($secretKey);
// $configuration->setDebug(true);

$client = new Khipu\ApiClient($configuration);
$payments = new Khipu\Client\PaymentsApi($client);

try {
    $opts = array(
        "transaction_id" => "MTI-100",
        "return_url" => "http://mi-ecomerce.com/backend/return",
        "cancel_url" => "http://mi-ecomerce.com/backend/cancel",
        "picture_url" => "http://mi-ecomerce.com/pictures/foto-producto.jpg",
        "notify_url" => "http://mi-ecomerce.com/backend/notify",
        "notify_api_version" => "1.3"
    );
    $response = $payments->paymentsPost(
        "Compra de prueba de la API", //Motivo de la compra
        "CLP", //Monedas disponibles CLP, USD, ARS, BOB
        100.0, //Monto. Puede contener ","
        $opts //campos opcionales
);

    print_r($response);
} catch (\Khipu\ApiException $e) {
    echo print_r($e->getResponseBody(), TRUE);
}


int receiverId = obtener-al-crear-una-cuenta-de-cobro;
String secretKey = 'obtener-al-crear-una-cuenta-de-cobro';

ApiClient apiClient = new ApiClient();
apiClient.setKhipuCredentials(receiverId, secretKey);
apiClient.setPlatform("demo-client", "2.0");
// apiClient.setDebugging(true);
PaymentsApi paymentsApi = new PaymentsApi();
paymentsApi.setApiClient(apiClient);

Map options = new HashMap<>();
options.put("transactionId", "MTI-100");
options.put("returnUrl", "http://mi-ecomerce.com/backend/return");
options.put("cancelUrl", "http://mi-ecomerce.com/backend/cancel");
options.put("pictureUrl", "http://mi-ecomerce.com/pictures/foto-producto.jpg");
options.put("notifyUrl", "http://mi-ecomerce.com/backend/notify");
options.put("notifyApiVersion", "1.3");

PaymentsCreateResponse response = paymentsApi.paymentsPost("Compra de prueba de la API" //Motivo de la compra
        , "CLP" //Monedas disponibles CLP, USD, ARS, BOB
        , 100.0 //Monto
        , options //campos opcionales
);

System.out.println(response);

require 'khipu-api-client'

receiver_id = obtener-al-crear-una-cuenta-de-cobro
secret_key = 'obtener-al-crear-una-cuenta-de-cobro'

Khipu.configure do |c|
  c.secret = secret_key
  c.receiver_id = receiver_id
  c.platform = 'demo-client'
  c.platform_version = '2.0'
  # c.debugging = true
end
client = Khipu::PaymentsApi.new
response = client.payments_post('Motivo del cobro', 'CLP', 120000, {// Monedas disponibles CLP, USD, ARS, BOB. Monto puede contener ","
    transaction_id: 'FACT2001',
    expires_date: DateTime.new(2016, 4, 4),
    body: 'Descripción de la compra',
    picture_url: 'http://mi-ecomerce.com/pictures/foto-producto.jp',
    return_url: 'http://mi-ecomerce.com/backend/return',
    cancel_url: 'http://mi-ecomerce.com/backend/cancel',
    notify_url: 'http://mi-ecomerce.com/backend/notify',
    notify_api_version: '1.3'
})

Configuration.ReceiverId = obtener-al-crear-una-cuenta-de-cobro;
Configuration.Secret = "obtener-al-crear-una-cuenta-de-cobro";
PaymentsApi a = new PaymentsApi();

try
{
    DateTime dt = DateTime.Now;
    dt = dt.AddDays(5);
    PaymentsCreateResponse response = a.PaymentsPost(
        "Compra de prueba de la API", 
        "CLP",
        100.0, 
        transactionId: "FACT2001", 
        expiresDate: dt, 
        body: "Descripción de la compra", 
        pictureUrl: "http://mi-ecomerce.com/pictures/foto-producto.jpg", 
        returnUrl: "http://mi-ecomerce.com/backend/return", 
        cancelUrl: "http://mi-ecomerce.com/backend/cancel", 
        notifyUrl: "http://mi-ecomerce.com/backend/notify", 
        notifyApiVersion: "1.3"
     );
    System.Console.WriteLine(response);
}
catch (ApiException e)
{
    Console.WriteLine(e);
}
  • PHP
  • Java
  • Ruby
<?php

// Debemos conocer el $receiverId y el $secretKey de ante mano.
$receiverId = obtener-al-crear-una-cuenta-de-cobro;
$secretKey = 'obtener-al-crear-una-cuenta-de-cobro';

require __DIR__ . '/vendor/autoload.php';

$configuration = new Khipu\Configuration();
$configuration->setReceiverId($receiverId);
$configuration->setSecret($secretKey);
// $configuration->setDebug(true);

$client = new Khipu\ApiClient($configuration);
$banksApi = new Khipu\Client\BanksApi($client);

try {
    $response = $banksApi->banksGet();
    print_r($response);
} catch (\Khipu\ApiException $e) {
    echo print_r($e->getResponseBody(), TRUE);
}


int receiverId = obtener-al-crear-una-cuenta-de-cobro;
String secretKey = 'obtener-al-crear-una-cuenta-de-cobro';

ApiClient apiClient = new ApiClient();
apiClient.setKhipuCredentials(receiverId, secretKey);
apiClient.setPlatform("demo-client", "2.0");
// apiClient.setDebugging(true);

BanksApi banksApi = new BanksApi();
banksApi.setApiClient(apiClient);
BanksResponse response = banksApi.banksGet();
System.out.println(response);

require 'khipu-api-client'

receiver_id = obtener-al-crear-una-cuenta-de-cobro
secret_key = 'obtener-al-crear-una-cuenta-de-cobro'

Khipu.configure do |c|
  c.secret = secret_key
  c.receiver_id = receiver_id
  c.platform = 'demo-client'
  c.platform_version = '2.0'
  # c.debugging = true
end

banks = Khipu::BanksApi.new
response = banks.banks_get()
print response

  • PHP
  • Java
  • Ruby
  • .NET
<?php
require __DIR__ . '/vendor/autoload.php';

$receiver_id = obtener-al-crear-una-cuenta-de-cobro;
$secret = 'obtener-al-crear-una-cuenta-de-cobro';

$api_version = 'obtener-desde-los-parametros';  // Parámetro api_version
$notification_token = 'obtener-desde-los-parametros'; //Parámetro notification_token
$amount = monto-original-del-cobro;

try {
    if ($api_version == '1.3') {
        $configuration = new Khipu\Configuration();
        $configuration->setSecret($secret);
        $configuration->setReceiverId($receiver_id);
        // $configuration->setDebug(true);

        $client = new Khipu\ApiClient($configuration);
        $payments = new Khipu\Client\PaymentsApi($client);

        $response = $payments->paymentsGet($notification_token);
        if ($response->getReceiverId() == $receiver_id) {
            if ($response->getStatus() == 'done' && $response->getAmount() == $amount) {
                // marcar el pago como completo y entregar el bien o servicio
            }
        } else {
            // receiver_id no coincide
        }
    } else {
        // Usar versión anterior de la API de notificación
    }
} catch (\Khipu\ApiException $exception) {
    print_r($exception->getResponseObject());
}
int receiverId = obtener-al-crear-una-cuenta-de-cobro;
String secret = 'obtener-al-crear-una-cuenta-de-cobro';
String apiVersion = "obtener-desde-los-parametros"; // Parámetro api_version
String notificationToken = "obtener-desde-los-parametros"; // Parámetro notification_token
double amount = monto-original-del-cobro;

if (apiVersion.equals("1.3")) {
    ApiClient apiClient = new ApiClient();
    apiClient.setKhipuCredentials(receiverId, secret);
    apiClient.setPlatform("demo-client", "2.0");
    // apiClient.setDebugging(true);
    PaymentsApi paymentsApi = new PaymentsApi();
    paymentsApi.setApiClient(apiClient);

    PaymentResponse response = paymentsApi.paymentsGet(notificationToken);
    if (response.getReceiverId().longValue() == receiverId) {
        if (response.getStatus().equals("done") && response.getAmount() == amount) {
            // marcar el pago como completo y entregar el bien o servicio
        }
    } else {
        // receiverId no coincide
    }
} else {
    // Usar versión anterior de la API de notificación
}
require 'khipu-api-client'
receiver_id = obtener-al-crear-una-cuenta-de-cobro
secret = 'obtener-al-crear-una-cuenta-de-cobro'
api_version = 'obtener-desde-los-parametros' # Parámetro api_version
notification_token = 'obtener-desde-los-parametros'  # Parámetro notification_token
amount = monto-original-del-pago

if api_version == '1.3'
  Khipu.configure do |c|
    c.receiver_id = receiver_id
    c.secret = secret
    c.platform = 'demo-client'
    c.platform_version = '2.0'
    # c.debugging = true
  end

  client = Khipu::PaymentsApi.new
  response = client.payments_get(notification_token)
  if response.receiver_id == receiver_id
    if response.status == 'done' && response.amount == amount
      # marcar el pago como completo y entregar el bien o servicio
    end
  else
    # receiver_id no coincide
  end
else
  # Usar versión anterior de la API de notificación
end
Configuration.ReceiverId = obtener-al-crear-una-cuenta-de-cobro;
Configuration.Secret = "obtener-al-crear-una-cuenta-de-cobro";
string notificationToken = "obtener-desde-los-parametros-del-request";
string apiVersion = "obtener-desde-los-parametros-del-request";
double amount = monto-original-del-cobro;

if(apiVersion.Equals("1.3")) {
    PaymentsApi a = new PaymentsApi();
    try
    {
         PaymentsResponse response = a.PaymentsGet(notificationToken);
         if(response.ReceiverId.Equals(Configuration.ReceiverId)
                && response.Status.Equals("done") && response.Amount == amount)
         {
            # marcar el pago como completo y entregar el bien o servicio
         }
         else
         {
            # ignorar la invocación
         }
    }
    catch (ApiException e)
    {
        Console.WriteLine(e);
    }
}