View English version (automatic translation)
[toc]
Integración vía API
El flujo recomendado para comenzar es:
- Creas un escrow a través de nuestra API, que indica el nombre (recomendado), importe y las URL de confirmación y denegación para ambos usuarios. El resultado será un objeto de escrow.
- Envias al usuario 1 a la propiedad del escrow «trustee_shortlink» para realizar el pago. Una vez que lo haya terminado, será redirigido a la URL que nos indicasteis cuando se creó el escrow.
- Aviso al usuario 2 que el pago se ha realizado.
- Envias al usuario 2 a la propiedad del escrow «settlor_shortlink» para incluir la información de pago. Igual que antes. Luego, se le redireccionará a la URL que nos indicasteis.
Desde ese momento, nosotros ya nos encargamos de generar el envío, etc. Por lo que desde vuestra parte no requiere más acciones más que ir actualizando el estado del pedido por si quereis informar a vuestros usuarios.
Estados del depósito (Escrow) y del envío (Shipping)
Los estados posibles de un depósito pueden ser:
- DRAFT: El escrow ha sido iniciado por el vendedor e invita a completar
- PENDING_DETAILS: El escrow está pendiente de direccion por parte del comprador
- PENDING_PUBLISH: El escrow está pendiente de datos de pago del comprador
- FAILURE: El escrow ha fallado en el momento de realizar el pago
- PUBLISHED: El escrow ha sido publicado y visible por los participantes
- ACCEPTED: El escrow ha sido aceptado por vendedor
- REJECTED: El escrow ha sido rechazado por el vendedor
- CANCELLED: El escrow ha sido cancelado por el comprador
- IN_SHIPPING: El escrow está en proceso de envio (sub estado de shipping para más informacion)
- PENDING_VALIDATE: El escrow está pendiente de validar por parte del comprador
- PENDING_RELEASE: El escrow está terminado y pendiende de liberar el dinero (dentro de 48h)
- BLOCKED_RELEASE: El release del escrow ha sido blocqueado por algun motivo y no será liberado
- RELEASED: El dinero del escrow ha sido liberado al vendedor
Los estados posibles de un envío, serán:
- CARRIER_READY: Tenemos la informacion suficiente para relizar el envío
- OUT_FOR_DELIVERY: El paquete ha sido recogido en casa del vendedor y está en camino al destino.
- RETURN_TO_SENDER: El paquete se ha devuelto al remitente.
- DELIVERED: El paquete ha llegado a su destinatario.
- FAILURE: Se ha producido alguna incidencia.
- CANCELLED: El envío se ha cancelado.
Eventos y configuración de Webhooks
La configuración de webhooks se puede hacer desde el propio panel, en el apartado Administration > Webhooks. Al crear un nuevo Webhook (https://admin.lemonpay.me/webhooks/new), los datos principales serán:
- URL – Aquí indicareis vuestra URL donde el Webhook hará la petición POST una vez que lance el evento. El contenido del POST será un JSON con el mismo tipo de objeto que devolvemos siempre.
- Event – Evento al que quereis adjuntar ese Webhook. Los nombres son autoexplicativos, pero los principales son:
- Escrow Published: Cuando el usuario realiza el pago
- Escrow Accepted: Cuando el vendedor acepta la venta
- Escrow Shipping Referenced: Cuando se ha generado el envio de SEUR
- Escrow Payout Created: Cuando el vendedor introduce la información bancaria
- Escrow Released: Cuando transcurren las 48h desde la entrega del pedido
- Source – Debereis seleccionar vuestro Source.
Para ayudaros con el debug, además, en la lista de Webhooks teneis los últimos logs que obtenemos en el momento de la petición de vuestro servidor (https://admin.lemonpay.me/webhooks).
Ejemplo PHP (utilizando cURL)
Los parámetros que hay en el ejemplo son orientativos, es en el enlace a la documentación donde podeis ver los parámetros que podeis enviar y cuales de ellos son obligatorios y cuales no. Hay una lista completa con los parámetros disponibles aquí: https://api.lemonpay.me/documentation/App/Http/Controllers/Api/ExpressController.html#method_postIndex
Testing y puesta en producción
La tarjeta de pruebas es:
- 4548812049400004
- Cad: 12/17 Cad: 123
- Confirmación: 123456
Preguntas frecuentes y errores comunes
Debo colocar algún botón concreto en mi web/app? Dónde debo colocarlo?
Puedes utilizar el botón que creas conveniente. Si deseas utilizar la marca Lemonpay en el botón, te podemos suministrar algunos ejemplos, o puedes crear el tuyo propio. También puedes optar por prescindir de la marca Lemonpay e indicar simplemente “Pagar” o “Comprar” o “Reservar”. La colocación también es libre: en la ficha de producto, en la cesta de la compra, dentro del chat, …
El link del vendedor no funciona/ no consigo completar la dirección y el IBAN/ no me aparecen esas pantallas/ me sale lo mismo que en el del comprador
Por favor, asegúrate de que el artículo ha sido pagado por el comprador previamente. Utiliza para ello la tarjeta de pruebas que te hemos suministrado. Si ya lo has hecho y aun así no funciona, es probable que estés utilizando el mismo dispositivo que utilizaste para realizar la compra. Si la sesión del comprador está abierta, no podrás loguearte como vendedor. Por favor, utiliza un dispositivo diferente para cada rol de usuario.
No quiero habilitar WebHooks, hay otra forma de consultar el estado de las transacciones?
Por supuesto. SI lo prefieres puedes realizar consultas periódicas a nuestra API para consultar el estado. Para ello, utiliza el siguiente método indicando el HASH de la transacción a consultar https://api.lemonpay.me/documentation/App/Http/Controllers/Api/ExpressController.html#method_getCheckoutExpress
¿Qué es la URL de confirmación / denegación?
Es una URL vuestra a la que dirigiremos a vuestro usuario en cada caso (aceptación o denegación del pago). Debe indicarle claramente que la compra ha sido exitosa o que por el contrario ha fallado.
Al abrir el webview dentro de nuestra App Android Nativa, nos da errores
El webview por defecto de Android viene con ciertas settings desactivadas. Para asegurarse de que funciona siempre, es recomendable revisar el código del mismo plugin que utilizamos nosotros en Lemonpay, desde aqui: https://github.com/apache/cordova-plugin-inappbrowser/blob/master/src/android/InAppBrowser.java#L774 hasta aqui: https://github.com/apache/cordova-plugin-inappbrowser/blob/master/src/android/InAppBrowser.java#L815
¿Las comisiones que cobro a mis usuarios en cada transacción son variables, es posible indicaros cada vez la comisión que quiero cobrar?
Sí, es posible. Si se trata de una comisión fija, es suficiente con que la configuréis desde el Dashboard al que os daremos acceso. Si es variable, podéis indicarla en cada llamada a nuestra API, usando los campos fee_percent (%) o fee_amount (€). Por favor, ten en cuenta que validaremos en todo momento que las condiciones publicadas en vuestra web informen correctamente a vuestros usuarios y coincidan con vuestra operativa real.
¿Podemos hacer que el comprador asuma nuestra comisión en lugar del vendedor?
Sí, podemos. En ese caso, debéis indicar en el campo Amount el importe resultante de la suma del precio del producto más vuestra comisión, en el campo fee_amout el valor de vuestra comisión en €, y en el campo fee_precent, 0.