Cyberpac: TPV de La Caixa para CubeCart

Aun sin tener ni pajolera idea de programación ni de PHP he conseguido modificar un gateway de los que vienen por defecto en el CubeCart para integrarlo con el sistema Cyberpac que usa La Caixa.

En realidad ha resultado muy sencillo. El único problema que he experimentado ha sido el tener que renunciar al formato de número de pedido que usa CubeCart, por contener guiones, y lo he cambiado por el que sugiere el ejemplo… la fecha vamos.

He creado las variables necesarias en el archivo de administración:

$module['desc'] -> descripcion
$module['id'] -> identificador de comercio
$module['key'] -> clave SHA1
$module['term'] -> codigo de terminal
$module['currency'] -> moneda
$module['merchanturl'] -> URL de la tienda

Y en el archivo principal he modificado las variables globales que devuelve CubeCart (lo he dicho bien??) para que la web de transacciones no dé error:

$order = date(‘ymdHis’);  //el tema de antes, como número de pedido usaremos la fecha con segundos

$transactionType=’0′; //creo que hay distintos tipos de transacción, pero esta es la que tiene que ser.

$amount=$orderSum['prod_total']*100; // el valor que envía CubeCart como total luego la pasarela de pago lo interpreta como dividido entre 100, por lo que lo multiplicamos.

$message=$amount.$order.$module['id'].$module['currency'].$transactionType.$module['merchanturl'].$module['key'];

$signature = strtoupper(sha1($message)); //esto es la firma de todos los conceptos que enviamos a la pasarela de pago. Se juntan en una sola variable y se codifican con la clave que nos dan mediante SHA1.

En fin, en el formulario que vamos a enviar mediante post tienen que existir los siguientes valores:

<input type=’hidden’ name=’Ds_Merchant_Amount’ value=’”.$amount.”‘ />

<input type=’hidden’ name=’Ds_Merchant_Currency’ value=’”.$module['currency'].”‘ />

<input type=’hidden’ name=’Ds_Merchant_Order’ value=’”.$order.”‘ />

<input type=’hidden’ name=’Ds_Merchant_MerchantCode’ value=’”.$module['id'].”‘ />

<input type=’hidden’ name=’Ds_Merchant_Terminal’ value=’”.$module['term'].”‘ />

<input type=’hidden’ name=’Ds_Merchant_TransactionType’ value=’”.$transactionType.”‘ />

<input type=’hidden’ name=’Ds_Merchant_MerchantURL’ value=’”.$module['merchanturl'].”‘ />

<input type=’hidden’ name=’Ds_Merchant_MerchantSignature’ value=’”.$signature.”‘ />”;

Y como colofón final, nos agenciamos de la última parte del gateway de PayPal para usarlo de forma similar, diferenciando modo de prueba (sandbox) o modo en producción:

if($module['testMode']==1) {

$formAction = “https://sis-t.sermepa.es:25443/sis/realizarPago”;
$formMethod = “post”;
$formTarget = “_self”;

} else {

$formAction = “https://sis.sermepa.es/sis/realizarPago”;
$formMethod = “post”;
$formTarget = “_self”;

}

Si no te apetece copiar y pegar te lo puedes bajar de aquí -> cyberpac

MaNoTaS práctica 01

umh1

Programa para el ensamblador de MaNoTaS que realiza operaciones de suma, resta, multiplicación y división.

practica01.ass

practica01.ejc

Economizando. Parte 2.

Extraído y traducido en parte del manual oficial de Yeastar Sisky Enterprise Edition.

Skype, la plataforma de llamadas por internet a bajo coste (paso de llamarlo VozIP :)   se ha extendido como un reguero de pólvora en los últimos años, gracias entre otras cosas a su promoción por parte de Ebay (actual propietaria).

He leido en alguna ocasión que en Asia es mucho más utilizado que en Europa. También puede ser porque sean más. El caso es que efectivamente todos los contactos asiáticos de las empresas con las que trabajo usan Skype preferentemente.

El tema de este artículo es el siguiente: SIP softphone con llamadas entrantes y proveedor IP + Skype para otros contactos… Se puede simplificar todo en una sola aplicación y de paso economizar gracias a las bajas tarifas de Skye? La respuesta es… “Puede”. Vamos a intentarlo usando un servidor “intermedio” que traduzca clientes Skype simultáneos en trunks salientes para Asterisk. Nuestro nuevo amigo se llama SISKY.

Alguno dirá… “Jo, pues no tiene tiempo ni ná el Chan_Skype…”. Efectivamente no es una solución nueva, pero este es más económico (55$ por canal frente a 100$) y aunque me duela decirlo, su instalación es insultántemente sencilla bajo Windows. Chan_Skype necesita una máquina bastante específica y parece ser que la api de desarrollo para el Skype de Windows ofrece más posibilidades y estabilidad que la de Linux, dicho por Yeastar, los creadores de Sisky. Ellos sabrán, yo de programar ni papa.

Al lío. Nos bajamos Sisky Enterprise Edition de la web http://www.yeastar.com/Products/SiSkyEE.asp y lo instalamos en una máquina Windows XP SP2 o Windows 2003 Server SP2. Es importante no tener Skype instalado. En caso de tenerlo instalado procederemos a desinstalarlo. Luego ejecutamos la instalación de Sisky…siguiente, siguiente, siguiente… como siempre y luego a reiniciar. El software es 100% funcional sin registrar, pero oiremos cada 10 segundos una voz que dice “Yeastar!”. Si nos convence lo registramos y si no pues a tomar viento.

En el pimer inicio del programa nos aparecerá el asistente de configuración. Nos pedirá la cantidad de canales que vamos a usar y si queremos registrar una cuenta de Skype para dicho canal. Si elegimos esta opción nos aparecerá un asistente de registro de Skype por cada canal para el cual necesitemos una nueva cuenta de usuario. Si ya tenemos una cuenta que queramos utilizar, simplemente lo dejamos sin seleccionar para introducir los datos de acceso a mano.

Al acabar de configurar los canales deberemos dejar seleccionada la instalación de los “Skype Cables”. Se trata del driver que conectará la entrada/salida de audio de Skype con nuestro servidor Asterisk.

Notas para navegantes:

1- NO FUNCIONA EN SISTEMAS 64bit Y NO TIENEN MUCHAS GANAS DE PROGRAMAR UN DRIVER COMPATIBLE.

2- NO FUNCIONA POR TERMINAL SERVER. La única solución de administración remota son los sistemas tipo VNC.

3- Atención a cuando Skype pregunta si queremos permitir que una aplicación llamada “SkypeChannel.exe” controle la aplicación. Tenemos que decirle “Allow this program to use Skype”. Vamos, que sí que le deje. Como nos despistemos se nos pasa el arroz y puede que nos toque reinstalar Sisky.

Tendremos entonces a la vista los canales creados con testigo rojo a la izquierda, indicando que no están conectados correctamente a nuestra PBX. Normal. Aún no lo hemos hecho, pero tranquilos que no vais a sudar.

Botón derecho sobre el canal y seleccionamos “setting”. Podemos configurar cada canal como una extensión o como un trunk.

En este ejemplo explico una configuración con dos canales como trunk, pero con estos gráficos del manual oficial de Sisky os podeis hacer una idea de que configuración se ajusta mejor a vuestras necesidades.

Ahora nos vamos a nuestro FreePBX y creamos los trunks completando los campos Peer Details y Register String.

Instantánemente veréis como cambia el estado de los canales a color azul

Pues ale, poned el trunk en una ruta saliente y a llamar se ha dicho. Siempre que tengáis crédito SkypeOut claro ;)

En el manual oficial hay instrucciones más amplias sobre cómo configurar los trunks o extensiones sin FreePBX, cómo crear dialplans específicos o cómo crear speed-dials desde el administrador web para llamar a nuestros contacto de Skype desde extensiones SIP.

Economizando – Parte 1

Con la idea de reducir la factura de la electricidad se me ocurrió cambiar los discos duros de los sistemas que menos los usan por tarjetas compactflash. Hice la prueba con el PfSense. Le quité el disco IDE de 20GB que tenía en marcha y le metí el cacharro este que me costó 5€ con una tarjeta de las buenas de 2GB. El resultado fue formidable y no ha dado  ningún problema. Aquí se puede ver el servidor PfSense con sus cuatro tarjetas de red y la compactflash introducida en su ranura PCI. La otra imagen muestra los 30 gloriosos días que la máquina lleva en marcha desde el último reinicio.

No conforme con este cambio me aventuré a ir un poco más lejos. Como tenía en mente darle la patada a TrixBox por sus múltiples incongruencias y violaciones de lo que muchos entendemos por código abierto y community, pensé en cambiar a Elastix y de paso meter otra tarjeta compactflash en este sistema. Resultado, cuatro gigabytes son más que suficientes y va como un tiro. Muy pronto nuevas ideas para ahorrar dinerito todos los meses!!

Añadir “root-path” al DHCPD de m0n0wall 1.3

Montar un servidor LTSP en Ubuntu es relativamente fácil, pero en el caso de Fedora me he encontrado con un problemilla extra al querer usar el monowall bajo Soekris 45xx como DCHP. El caso es que resulta imposible añadir la opción “root-path” al dhcpd.conf del monowall de manera standard, así que tiré de google para buscar una solución.

El tema tiene miga, y el único apaño que he encontrado consiste en descomprimir la imagen, realizar los cambios oportunos y volverla a comprimir. Básicamente hay que instalar FreeBSD o PCBSD en una máquina física o virtual, descomprimir la imagen .img usando el script workon.sh, modificar el archivo services.inc, recomprimir e instalar la imagen. Yo he usado la versión bootonly de FreeBSD que solo ocupa 33MB y tiene todo lo necesario. Seguí los pasos de este post en el foro oficial de monowall:


K, here go’s
My example shows my need for “option root-path” for Linux Terminal Server” and PXE booting
Install PC-BSD on a spare PC or Virtual Machine.
Make a new directory. I used “mono”.
Download your needed monowall image into this directory.
Download “workon.sh” script from http://chrisbuechler.com/index.php?id=20 into this same directory.
Note: The “workon.sh” script has more instruction’s on how to use it.

Open a terminal and type “su”. enter your root password
cd into your mono directory and type “chmod +x workon.sh”

Now to extract the image type, for example “./workon.sh net48xx-1.23.img”
Now you can modify the image how you want before repacking it.

K, now I’m not real comfortable using VI for editing. I like to use a GUI editor and will explain how I used “KEdit” as root to do it. You need to edit as root.
Open a new terminal and type “su” and enter your root password.
Now type “kedit”. Your are running KEdit as root

Now the changes to the image.
With KEdit, click “File” then “Open” and Browse to and open <your-home-dir>/mono/mnt2/etc/inc/services.inc

Look for these lines in services.inc
if ($dhcpifconf['next-server'])
$dhcpdconf .= “   next-server {$dhcpifconf['next-server']};\n”;
if ($dhcpifconf['filename'])
$dhcpdconf .= “   filename \”{$dhcpifconf['filename']}\”;\n”;
Enter this line directly under it.
if ($dhcpifconf['root-path'])
$dhcpdconf .= “   option root-path \”{$dhcpifconf['root-path']}\”;\n”;

Save and exit KEdit.
Type “exit” in the terminal where you started the “workon.sh” script to repack the image.

That it, Your done.
Upload your new image
Now you have and extra option in your config.xml
Mine looks like this.
<next-server>192.168.1.101</next-server>
<filename>/ltsp/i386/pxelinux.0</filename>
<root-path>/opt/ltsp/i386</root-path>

Hope this helps get what you need.
You could probably setup something like this.
<option1>time server</option1>
<option2>something else</option2>
<option3>something else</option3>
<option4>something else</option4>

If you don’t enter the tag in the config.xml, it doesn’t get written to the dhcpd.conf.
Good Luck,
-slick

Kudo’s/Credits:
Manuel Kasper
Jeb Campbell
Chris Buechler

El problema que me encontré más adelante es que el script workon.sh no funciona correctamente para la rama beta de monowall (1.3), así que hay que modificarlo de esta manera:


Finally found the answer. For anyone curious, workon.sh doesn’t work for 1.3 series m0n0wall.you need to edit workon.sh:

line mount /dev/md90 mnt1
changes to mount /dev/md90a mnt1

Regards

Modificación de la shell para la ejecución y del parámetro /dev/md90

Tras ejecutar el script

Modificación del archivo services.inc

Hay que renombrar la imagen modificada a embedded-1.3b14.img para que monowall la acepte

Nos dará un mensaje de advertencia diciendo que la imagen no está oficialmente firmada

Aceptamos y esperamos a que reinicie

Ahí lo tenemos en el config.xml!!