Spanish [SOLUCIONADO]Pasarela de pago

Jorgelcr

Active Member
Licensed User
Longtime User
Hola,

Quiero integrar en mi app la posibilidad de que el usuario pueda realizar pago con tarjeta.

Tengo alguna duda:
- Existe alguna libreria/modulo para implantar un tpv implantado. (Redsys/CECA) etc.
- He visto que algunas apps piden los datos de la tarjeta la primera vez que te registras y así no tienen que introducir los datos cada vez que van a realizar un pago. Este caso no sé muy bien como lo
harán.

Alguien sabe de esto?
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola Jorge:

Tendras que darte de alta en alguna de las pasarelas de pago que hay en el mercado, algunas aceptan tarjetas y Paypal. Tambien tu banco te puede informar, los bancos suelen tener, lo que pasa que te pondran mas condiciones que otros sitios

Saludos
 

Jorgelcr

Active Member
Licensed User
Longtime User
Hola,

Gracias por las respuestas.
He creado la pasarela de pago con mi entidad, genero la firma en la app y mando a la url de la entidad para que el usuario introduzca los datos de su tarjeta y me funciona correctamente.

B4X:
    Clave = "xxxxx"

    MerchantID = "xxxx"

    AcquirerBIN = "xxxxx"

    TerminalID = "xxx"

    Importe =PVP.Text *100

    Num_operacion = micodigopedido

    Exponente = "2"

    TipoMoneda = "978"

    Referencia = "prueba1"

    Descripcion = "Prueba"

    URL_OK = "http://www.xxxxk.com"

    URL_NOK = "http://www.xxx.com"

    firma = Clave & MerchantID & AcquirerBIN & TerminalID & Num_operacion & Importe & TipoMoneda & Exponente & "SHA2" & URL_OK & URL_NOK

   

    Dim mm As MessageDigest
    Dim Data(),data2, b() As Byte
    Dim signature As String
    Data = firma.GetBytes("UTF8")
   
  
    b=mm.GetMessageDigest(Data,"SHA-256")
   
   
   
    Dim bc As ByteConverter
    Log(bc.HexFromBytes(b))
 
    signature=bc.HexFromBytes(b)
   
   
   
    datos="MerchantID=" & MerchantID & "&AcquirerBIN=" & AcquirerBIN & "&TerminalID=" & TerminalID & "&Num_operacion=" & Num_operacion & "&Importe=" & Importe & "&Descripcion= " & Descripcion & "&TipoMoneda=" & TipoMoneda & "&Exponente=" & Exponente & "&URL_OK=" & URL_OK & "&URL_NOK=" & URL_NOK & "&Cifrado=SHA2&Idioma=1&Pago_soportado=SSL&Firma=" & signature
   

    urltpv="http://xxxxx?" & datos
   
  
   
  
    WebView1.LoadUrl(urltpv)
 

Carlos marin

Active Member
Licensed User
Longtime User
Hola,

Gracias por las respuestas.
He creado la pasarela de pago con mi entidad, genero la firma en la app y mando a la url de la entidad para que el usuario introduzca los datos de su tarjeta y me funciona correctamente.

B4X:
    Clave = "xxxxx"

    MerchantID = "xxxx"

    AcquirerBIN = "xxxxx"

    TerminalID = "xxx"

    Importe =PVP.Text *100

    Num_operacion = micodigopedido

    Exponente = "2"

    TipoMoneda = "978"

    Referencia = "prueba1"

    Descripcion = "Prueba"

    URL_OK = "http://www.xxxxk.com"

    URL_NOK = "http://www.xxx.com"

    firma = Clave & MerchantID & AcquirerBIN & TerminalID & Num_operacion & Importe & TipoMoneda & Exponente & "SHA2" & URL_OK & URL_NOK

  

    Dim mm As MessageDigest
    Dim Data(),data2, b() As Byte
    Dim signature As String
    Data = firma.GetBytes("UTF8")
  
 
    b=mm.GetMessageDigest(Data,"SHA-256")
  
  
  
    Dim bc As ByteConverter
    Log(bc.HexFromBytes(b))
 
    signature=bc.HexFromBytes(b)
  
  
  
    datos="MerchantID=" & MerchantID & "&AcquirerBIN=" & AcquirerBIN & "&TerminalID=" & TerminalID & "&Num_operacion=" & Num_operacion & "&Importe=" & Importe & "&Descripcion= " & Descripcion & "&TipoMoneda=" & TipoMoneda & "&Exponente=" & Exponente & "&URL_OK=" & URL_OK & "&URL_NOK=" & URL_NOK & "&Cifrado=SHA2&Idioma=1&Pago_soportado=SSL&Firma=" & signature
  

    urltpv="http://xxxxx?" & datos
  
 
  
 
    WebView1.LoadUrl(urltpv)


Hola jorge también estoy pasando por las mismas, me podrías compartir el código completo para estudiarlo (sin claves ni nada claro esta) necesito enviar estos datos a la url y obtener respuesta de la misma tengo un hilo pero estoy mas embalado, te lo agradeceria mucho. gracias
 

Jorgelcr

Active Member
Licensed User
Longtime User
Hola,

El código que te he puesto es el código completo que utilizo en el evento del botón "pagar".
Lo que hace este código es asignar los datos proporcionados por la entidad bancaria, calcular la firma y enviar los datos a la web de la entidad bancaria.
Después la url la muestro en un webview y ya el usuario realiza el pago directamente en la pasarela de la entidad bancaria.
 

Carlos marin

Active Member
Licensed User
Longtime User
Hola,

El código que te he puesto es el código completo que utilizo en el evento del botón "pagar".
Lo que hace este código es asignar los datos proporcionados por la entidad bancaria, calcular la firma y enviar los datos a la web de la entidad bancaria.
Después la url la muestro en un webview y ya el usuario realiza el pago directamente en la pasarela de la entidad bancaria.

hola jorge hable con los de soporte de la plataforma de pagos y me dieron este codigo que es un boton que los redirige a la pagina de ellos. e tratado de hacer lo que tienes en tu codigo (no se que librerías estas usando para encryptar) pero la pagina no me carga men no se que estoy haciendo mal. mira el código

B4X:
<form id="frm_botonePayco" name="frm_botonePayco" method="post" action="https://secure.payco.co/checkout.php">
    <input name="p_cust_id_cliente" type="hidden" value="xxxx">
    <input name="p_key" type="hidden" value="xxxxxx">
    <input name="p_id_invoice" type="hidden" value="">
    <input name="p_description" type="hidden" value=" Vestido dama negro">
    <input name="p_currency_code" type="hidden" value="COP">
    <input name="p_amount" id="p_amount" type="hidden" value="59500.00">
    <input name="p_tax" id="p_tax" type="hidden" value="9500">
    <input name="p_amount_base" id="p_amount_base" type="hidden" value="50000">
    <input name="p_test_request" type="hidden" value="FALSE">
    <input name="p_url_response" type="hidden" value="">
    <input name="p_url_confirmation" type="hidden" value="">
    <input name="p_signature" type="hidden" id="signature"  value="cc7c26580955193975b49b2ecdaea136" />
    <input name="idboton"type="hidden" id="idboton"  value="4380" />
    <input type="image" id="imagen" src="https://369969691f476073508a-60bf0867add971908d4f26a64519c2aa.ssl.cf5.rackcdn.com/btns/btn4.png" />
</form>
 
Last edited:

Jorgelcr

Active Member
Licensed User
Longtime User
El código que pones es el del form, que error te da cuando haces clic en el boton?
 

Carlos marin

Active Member
Licensed User
Longtime User
El código que pones es el del form, que error te da cuando haces clic en el boton?

:( me dice que la pagina no esta disponible, jorge me podrías mostrar las declaraciones de las variables y las librerias de encrypcion te lo agradeceria. gracias
 

Jorgelcr

Active Member
Licensed User
Longtime User
Las variables que utilizo.

Dim Clave,MerchantID,AcquirerBIN,TerminalID,Importe,Num_operacion,Exponente,TipoMoneda,Referencia,Descripcion,URL_OK,URL_NOK,firma As String
Dim urltpv As String
Dim datos As String
Private PVP As Label
Dim micodigopedido As String


Las librerias que utilizo para calcular la clave en la app son ByteConverter y Encryption.
Pero si tú no generas la clave en la app no las necesitas ya que estás pasando los datos a la pasarela mediante un form.

Si te da error de página no disponible, es que no estás poniendo la ruta correctamente. No conozco tu plataforma de pago, pero normalmente las pasarelas de las entidades bancarias tienen buenos manuales.

si el form que has puesto lo llamas p.ej. pasarela.htm y lo subes a tu web www.tuweb.com/pasarela.htm y accedes a esa dirección debería mostrarte un formulario con los datos que has introducido.
Si no la muestra puedes tener algun error de codigo html y tu servidor no te muestre los errores
 

Carlos marin

Active Member
Licensed User
Longtime User
Jorge me dieron este código que lo veo mas fácil es un script, de pronto alguna idea de como ejecutarlo en b4a. yo este código lo guardo en un html simple y me genera el botón de pago y me lleva a la pagina de pago.

B4X:
<form>
        <script
            src="https://checkout.epayco.co/checkout.js"
            class="epayco-button"
            data-epayco-key="491d6a0b6e992cf924edd8d3d088aff1"
            data-epayco-amount="50000"
            data-epayco-name="Vestido Mujer Primavera"
            data-epayco-description="Vestido Mujer Primavera"
            data-epayco-currency="cop"
            data-epayco-country="co"
            data-epayco-test="true"
            data-epayco-external="false"
            data-epayco-response="https://ejemplo.com/respuesta.html"
            data-epayco-confirmation="https://ejemplo.com/confirmacion">
        </script>
    </form>
 

Jorgelcr

Active Member
Licensed User
Longtime User
Es lo mismo.
Pero el boton te lleva a la web de la entidad para poder introducir los datos de la tarjeta?
 

Carlos marin

Active Member
Licensed User
Longtime User
Jorge yo tengo unos datos de tarjeta ficticia, uno que me da aceptada y otro fallida. es todo fácil lo que me esta rompiendo la cabeza es que trato de hacer lo que tu, hacerlo para mis clientes en sus apps pero no e podido adaptar este código
 

Jorgelcr

Active Member
Licensed User
Longtime User
Buff no sé.
Solamente tienes que poner los datos que te pide la entidad que pases en el formulario (Clave,descripción, importe, etc). Comprobar que te genera bien la firma y enviarlos a la dirección web dónde pide los datos de la tarjeta. No hay que hacer nada mas.
Si por web te funciona en B4a en lo mismo.
 

Carlos marin

Active Member
Licensed User
Longtime User
bueno men, intentare hasta que de con el resultado. muchas gracias por tu ayuda voy a estudiar bien las variables gracias
 
Top