Está creando una aplicación web de comercio electrónico y debe admitir varios métodos de pago (Visa, MasterCard ... etc.) para que sus clientes puedan pagar fácilmente sus pedidos. En lugar de implementar esto usted mismo, decide confiar en un proveedor de terceros confiable para proporcionar estos servicios para usted.
Una compañía conocida de Bélgica que brinda servicios de pago es Ogone. Proporcionan más de 40 métodos de pago internacionales y locales. Manejan las transacciones de pago entre sus clientes, su tienda en línea y los proveedores de métodos de pago (p. Ej. Visa).
Por supuesto, debe pagar una pequeña suma por cada transacción manejada por Ogone, pero eso le compra protección de fraude integrada, seguridad, herramientas para administrar sus pagos ... y mucho más. El costo de implementar todo esto usted mismo es mucho mayor.
Entonces, se registre para una cuenta Ogone y decida integrar su sistema en su aplicación web.
¿Cómo podemos darnos cuenta de esto? Averigamos ...
Lo primero es lo primero, vaya al sitio web de Ogone y regístrese para una cuenta de prueba gratuita. En la esquina superior derecha del sitio "encontrará un botón etiquetado" Crea tu cuenta de prueba gratuita ".
Figura 1 - Cuenta de prueba

Haga clic en él y complete el formulario resultante. Asegúrese de que los datos que ingrese en este formulario sean correctos. Después de enviar su solicitud de una nueva cuenta de prueba, un empleado de Ogone verificará sus datos y, dependiendo del resultado, aprobará o rechazará su solicitud. Este proceso puede llevar algunas horas. Muy molesto, pero no hay forma de evitarlo.
Una vez que se haya aprobado su cuenta, recibirá un correo electrónico que contiene su contraseña. Ahora está listo para iniciar sesión en la administración de comerciantes Ogone.
Antes de que pueda comenzar a usar su cuenta de prueba, debe configurar la siguiente configuración:
Para configurar sus opciones de suscripción, haga clic en la cuenta de opción que se muestra en el menú en el lado izquierdo de la pantalla.
Figura 2 - Menú de administración de comerciantes

En la página de la cuenta se le presentará algunas opciones, seleccione la opción "Su suscripción". Ahora necesita elegir un tipo de suscripción. Elija "Aventura" y haga clic en el botón etiquetado "Confirme y vaya a sus opciones".
Aquí puede agregar una serie de opciones a su suscripción, como detección de fraude, alojamiento de imágenes, aspecto de factura ... etc. Para esta demostración no necesitamos ninguna opción adicional, así que haga clic en Confirmar para guardar su configuración.
Después de configurar su tipo de suscripción, puede continuar agregando los métodos de pago que desea ofrecer a sus clientes. Haga clic en los métodos de pago de opciones en el menú Administración de Mercantes (Figura 2). Después de agregar Visa a la lista de "Métodos de pago seleccionados", debe editar este método de pago y configurarlo en activado.
Figura 3 - Activar método de pago de visa

Simplemente haga clic en la opción Editar que se muestra en la Figura 3, marque el método de pago como activado (activación: sí) y haga clic en enviar. Puede usar el número de tarjeta 4111 1111 1111 1111 para probar los pagos de visa. Simplemente ingrese cualquier cosa para la fecha de vencimiento y el código de seguridad de 3 dígitos.
Por último, pero no menos importante, debe configurar algunas configuraciones técnicas que determinen cómo se manejarán los pagos en línea. Continúe haciendo clic en la opción Información técnica que se muestra en el menú (Figura 2).
La página resultante se divide en las siguientes pestañas:
Simplemente haga clic en estos enlaces para ver las capturas de pantalla de cómo configuré mi cuenta de prueba Ogone. He establecido la firma SHA-1-In y SHA-1-Out en "Microsoftaspnet4". Volveremos a esto más tarde.
Ahora ha creado y configurado su cuenta de prueba Ogone. Estás listo para hacer su primer pago en línea.
He creado un simple proyecto de aplicación web ASP.NET que demuestra cómo puede integrar los pagos Ogone dentro de su propio sitio web habilitado para ASP.NET.
Figura 4 - La solución

Esta aplicación web solo contiene un puñado de páginas:
Observación : Como puede ver, el proyecto también contiene un par de archivos de código. Discutiremos esto en las siguientes secciones. Estos archivos contienen el código necesario para manejar el proceso de pago con Ogone. Siéntase libre de mejorar el diseño, solo incluí el mínimo de código para que las cosas funcionen.
No haga clic en el botón de pago de inicio que se muestra a continuación, es solo una captura de pantalla. Así es como se ve la página predeterminada.aspx:
Figura 5 - la página predeterminada.aspx

Se genera una referencia (o ID de pedido) para identificar de manera única la orden que se paga. Ogone realiza un seguimiento de estas referencias. No puede procesar la misma referencia dos veces. Por eso he elegido usar un GUID generado al azar para este ejemplo. Tuve que acortar el GUID a 30 caracteres porque Ogone no permite más que este límite.
Obviamente, además de esta referencia, también debe especificar la cantidad que debe pagarse. El código de ejemplo también envía a lo largo de la dirección de correo electrónico del cliente en cuestión. De esta manera, Ogone puede enviarle un correo electrónico al cliente que su pago ha sido procesado con éxito.
Veamos el código oculto detrás del evento de clic del botón:
Listado 1 - Solicitud de pago Ogone
// Persist order to database
// ...
OgoneRequest ogoneRequest = new OgoneRequest ( ) ;
ogoneRequest . RequestPayment ( this . _reference , amount , customerEmail ) ;
// Clear shopping cart
// ...Puede iniciar un pago creando una nueva instancia de la clase Ogonequest y llamando al método requestPayment (...). Este método requiere 3 parámetros, a saber, la referencia del pedido, la cantidad que debe pagarse y la dirección de correo electrónico del cliente.
Listado 2 - Constructor Ogonerequest
public OgoneRequest ( )
{
OgoneUrl = ConfigurationManager . AppSettings [ "Ogone_Url" ] ;
Psid = ConfigurationManager . AppSettings [ "Ogone_PSID" ] ;
ShaKey = ConfigurationManager . AppSettings [ "Ogone_SHA1_IN" ] ;
Currency = ConfigurationManager . AppSettings [ "Ogone_Currency" ] ;
Language = ConfigurationManager . AppSettings [ "Ogone_Language" ] ;
AcceptUrl = ConfigurationManager . AppSettings [ "Ogone_AcceptUrl" ] ;
ExceptionUrl = ConfigurationManager . AppSettings [ "Ogone_ExceptionUrl" ] ;
CancellationUrl = ConfigurationManager . AppSettings [ "Ogone_CancellationUrl" ] ;
}El constructor de la clase OgonRequest inicializa algunas propiedades leyendo algunos valores del archivo de configuración de la aplicación (Web.Config). Debe especificar la URL para llamar para comenzar el proceso de pago, su Psid Ogone (nombre de usuario), la clave SHA1-in que especificó en la administración comercial, las URL de redirección ... etc.
Listado 3 - Método de rehacer (...)
public void RequestPayment ( string reference , double amount , string email )
{
// Multiply by one hundred and round to zero decimals
amount = Math . Round ( amount * 100 , 0 ) ;
RemotePost post = new RemotePost { Url = this . OgoneUrl } ;
post . Add ( "pspid" , this . Psid ) ;
post . Add ( "orderid" , reference ) ;
post . Add ( "amount" , amount . ToString ( ) ) ;
post . Add ( "currency" , this . Currency ) ;
post . Add ( "language" , this . Language ) ;
post . Add ( "email" , email ) ;
// Hash
post . Add ( "SHASign" , Ogone . GenerateHash (
reference + amount + this . Currency +
this . Psid + this . ShaKey ) ) ;
// Redirection URLs
post . Add ( "accepturl" , this . AcceptUrl ) ;
post . Add ( "exceptionurl" , this . ExceptionUrl ) ;
post . Add ( "cancelurl" , this . CancellationUrl ) ;
post . Post ( ) ;
}El método de rehacedPayment (...) inicia un nuevo proceso de pago haciendo una publicación HTTP utilizando la clase Remotepost. Toda la información necesaria se incluye en la publicación, como su PSID, la cantidad que debe pagarse, el idioma, el signo SHA1 ... etc.
Debe calcular el hash SHA1 utilizando la firma SHA1-in que configuró en la administración del comerciante. Ogone afirma que también debe incluir la referencia, la cantidad, la moneda y su PSID en este hash. Volveremos a calcular los hashes SHA1 más tarde.
Observación : La publicación HTTP envía algunas URL de redirección que Ogone usará cuando se realice, cancele el pago, etc. Si no los proporciona, se utilizarán las URL predeterminadas configuradas en la administración del comerciante (pestaña de retroalimentación de transacciones bajo información técnica).
Figura 6 - Confirmación de pago

Después de comenzar el proceso de pago, será redirigido a una nueva página como se ve en la figura anterior. Puede cambiar el diseño de esta página especificando parámetros adicionales en la publicación HTTP. Eche un vistazo al código fuente que acompaña a este artículo y a la documentación oficial de Ogone para obtener más información sobre ese tema.
Si el usuario hace clic en el botón Cancelar, el proceso de pago finalizará y se redirigirá a la página PaymentCancelled.aspx. Esta página solo muestra un mensaje que el usuario canceló el proceso de pago.
Pero hemos configurado nuestra cuenta Ogone de tal manera que toda la información relevante con respecto al proceso de pago se incluya en la cadena de consulta. Por ejemplo:
http: // localhost: 3767/paymayCancelled.aspx? OrderId = 246CF6F0-8BAD-4EDB-806C-EEED3FB & CONINE = EUR & MANTY = 19.99 & PM = CreditCard & Aceptance = & Status = 1 1 1 & Cardno = & ed = & cn = & TRXDate = 04%2F08%2F10 & PayID = 6806803 & nCerror = & Brand = ... etc.
Puede extraer información como la referencia de pedido original, el monto, el método de pago (por ejemplo: visa), estado de éxito de pago ... etc. Puede iniciar sesión o descartar esta información si lo desea. Depende de ti. Ogone también incluye un hash SHA1 compuesto con la ayuda de la firma SHA1-Out configurada en la administración comercial. Este hash le permite verificar la identidad de la persona que hizo la solicitud y la validez de los datos presentes en la cadena de consulta.
Si el proceso de pago se completa con éxito, Ogone redirigirá al usuario a la página de PaymentACpted.aspx. La cadena de consulta también incluirá los mismos datos. Durante el evento de carga de la página, se verifica el estado del pago y la validez del hash SHA. Si ambos tienen razón, se acepta el pago.
Listado 4 - PaymentAcepted.Aps Página de carga Plazador de eventos
OgonePaymentStatus status = OgoneResponse . Status ;
// Invalid Sha key returned from Ogone?
bool paymentSucceeded = OgoneResponse . IsShaSignValid && Ogone . IsPaymentStatusValid ( status ) ;Observación : Ogone incluye un parámetro llamado estado (entero) en la cadena de consulta. Este estado le informa sobre el estado del pago. El código de muestra para este artículo envolvió algunos de estos valores en un enum llamado OgonePaymentStatus. Consulte la documentación oficial de Ogone para obtener una lista de todos los valores posibles. El método ISPaymentStatusValid (...) verifica si el parámetro de estado entrante es uno de los valores que nos informan que se ha realizado el pago.
El tipo de clase OgonerSponse es solo un pequeño envoltorio que maneja el trato con los parámetros de cadena de consulta que Ogone incluye cuando redirige al usuario de regreso a su sitio.
El listado 5 le muestra un pequeño extracto de esta clase. La propiedad ISSHASIGNVALID lee la firma SHA1-Out del archivo de configuración de la aplicación (Web.Config) y recalcula el signo SHA. Para hacer esto, debe incluir otros datos, como la cantidad, referencia de pedido, moneda ... etc. (Consulte la documentación oficial de Ogone para obtener más información).
Si el signo SHA calculado coincide con el incluido en la cadena de consulta, entonces estamos tratando con una solicitud que se origina en Ogone y los datos en los parámetros de la cadena de consulta son válidos.
Listado 5 - Clase OgonerResponse
public static class OgoneResponse
{
public static string OrderId { get { return HttpContext . Current . Request [ "orderid" ] ; } }
public static string Amount { get { return HttpContext . Current . Request [ "amount" ] ; } }
public static string ShaSign { get { return HttpContext . Current . Request [ "shasign" ] ; } }
public static bool IsShaSignValid
{
get
{
string key = OrderId + Currency + Amount + PaymentMethod + AcceptanceCode +
( int ) Status + CardNumber + PaymentId + NcError + Brand +
ConfigurationManager . AppSettings [ "Ogone_SHA1_OUT" ] ;
return ShaSign == Ogone . GenerateHash ( key ) ;
}
}
} El Listado 6 le muestra una forma posible de cómo puede calcular un hash SHA1 para una cadena. La cadena se convierte en una matriz de bytes y luego se codifica usando un SHA1CryptoserviceProvider. El hash resultante se convierte en un formato hexadecimal.
Listado 6 - Calculando hashes SHA1
public static string GenerateHash ( string input )
{
byte [ ] bytes = new ASCIIEncoding ( ) . GetBytes ( input ) ;
SHA1CryptoServiceProvider sha = new SHA1CryptoServiceProvider ( ) ;
byte [ ] hash = sha . ComputeHash ( bytes ) ;
StringBuilder result = new StringBuilder ( ) ;
for ( int i = 0 ; i < 20 ; i ++ )
{
string temp = hash [ i ] . ToString ( "X2" ) ;
if ( temp . Length == 1 )
{
temp = "0" + temp ;
}
result . Append ( temp ) ;
}
return result . ToString ( ) ;
}Y con esto, el artículo termina ...
Espero que haya disfrutado de este tutorial sobre cómo integrar los servicios de pago Ogone con su aplicación web de comercio electrónico. Para recapitular lo que hemos cubierto desde el punto de vista de un desarrollador: