3.1.4. Reembolso de pedidos#
Esta página contiene toda la documentación del videotutorial en el que se explica el proceso de reembolso de pedidos y los diferentes plazos que conllevan los reembolsos.
3.1.4.1. Vídeo#
3.1.4.2. Información#
Si no está familiarizado con el proceso de creación de pedidos, puede ver el tutorial Taler merchant creating orders.
3.1.4.3. Requisitos#
Necesario para esta serie de tutoriales:
- Un backend comercial TalerSi necesita ayuda para utilizar el backend de comerciante por primera vez, puede ver el tutorial Taler merchant introduction.
- Una instancia de cartera TalerLas instrucciones de configuración están disponibles en https://wallet.taler.net.
- Un software de gestión de API REST o conocimientos de programación pertinentesEn esta serie de vídeos, vamos a utilizar el software gratuito Insomnia, disponible para su descarga en https://insomnia.rest.
3.1.4.4. Aviso de backend de demostración#
Para este tutorial, puede utilizar su propio servicio de backend comercial o el servicio de demostración en línea de https://backend.demo.taler.net/instances/sandbox/.
3.1.4.5. Más notas sobre las devoluciones de pedidos de comerciantes#
Un reembolso en GNU Taler es una forma de «deshacer» un pago. Debe ser autorizado por el comerciante. Los reembolsos pueden ser por cualquier fracción de la cantidad original pagada, pero no pueden exceder el pago original. Los reembolsos están limitados en el tiempo y sólo pueden producirse mientras la bolsa mantiene los fondos de un pago concreto en custodia. El tiempo durante el cual un reembolso es posible puede ser controlado mediante el establecimiento de la refund_deadline
en una orden. El valor predeterminado para este plazo de reembolso se especifica en la configuración del backend del comerciante.
El frontend puede indicar al backend del vendedor que autorice un reembolso mediante POST
al endpoint /private/orders/$ORDER_ID/refund
.
El objeto JSON de solicitud de reembolso sólo tiene dos campos:
reembolso
: Importe a devolver. Si se autorizó un reembolso anterior para el mismo pedido, el nuevo importe debe ser superior, de lo contrario la operación no tiene efecto. El valor indica el importe total a reembolsar, no un incremento del reembolso.reason
: Justificación legible por humanos para el reembolso. El motivo solo lo utiliza el back office y no se muestra al cliente.
Si la solicitud tiene éxito (indicado por el código de estado HTTP 200), la respuesta incluye una taler_refund_uri
. El frontend debe redirigir el navegador del cliente a esa URL para permitir que el monedero procese el reembolso.
Este fragmento de código ilustra la realización de un reembolso:
>>> import requests
>>> refund_req = dict(refund="KUDOS:10",
... reason="Customer did not like the product")
>>> requests.post("https://backend.demo.taler.net/instances/sandbox/private/orders/"
... + order_id + "/refund", json=refund_req,
... headers={"Authorization": "Bearer secret-token:sandbox"})
<Response [200]>
Nota
Tras conceder un reembolso, el punto final público https://example.com/orders/$ORDER_ID
cambiará su interacción con el monedero y pasará de solicitar el pago a ofrecer un reembolso. Por lo tanto, las interfaces pueden volver a redirigir a los navegadores a este punto final. Sin embargo, para hacerlo, debe añadirse un campo h_contract
(?h_contract=$H_CONTRACT
), ya que el punto final público lo requiere para autenticar al cliente. El valor requerido $H_CONTRACT
se devuelve en la respuesta de reembolso bajo el campo h_contract
.
3.1.4.6. Más tutoriales#
Para ver tutoriales adicionales, puede navegar por este sitio o dirigirse a https://docs.taler.net para obtener la documentación más reciente sobre los servicios Taler.