3.1.4. Reembolso de encomendas#
Esta página contém toda a documentação do vídeo tutorial que explica o processo de reembolso de encomendas e os diferentes prazos envolvidos nos reembolsos.
3.1.4.1. Vídeo#
3.1.4.2. Informações#
Se não estiver familiarizado com o processo de criação de encomendas, pode ver o tutorial Taler merchant creating orders.
3.1.4.3. Requisitos#
Necessário para esta série de tutoriais:
- Um backend de comerciante TalerSe precisar de ajuda para utilizar o backend do comerciante pela primeira vez, pode ver o Taler merchant introduction tutorial.
- Uma instância da carteira TalerAs instruções de configuração estão disponíveis em https://wallet.taler.net.
- Um software de gestão de API REST ou competências de programação relevantesNesta série de vídeos, vamos utilizar o software gratuito Insomnia, disponível para transferência em https://insomnia.rest.
3.1.4.4. Aviso de demonstração do backend#
Para este tutorial, pode utilizar o seu próprio serviço de backend de comerciante ou o serviço de demonstração online em https://backend.demo.taler.net/instances/sandbox/.
3.1.4.5. Mais notas sobre os reembolsos de encomendas do comerciante#
Um reembolso no GNU Taler é uma forma de «desfazer» um pagamento. Ele precisa ser autorizado pelo comerciante. Os reembolsos podem ser para qualquer fração do montante original pago, mas não podem exceder o pagamento original. Os reembolsos são limitados no tempo e só podem ocorrer enquanto a bolsa mantém os fundos de um determinado pagamento em depósito. O tempo durante o qual um reembolso é possível pode ser controlado definindo o refund_deadline numa ordem. O valor predefinido para este prazo de reembolso é especificado na configuração do backend do comerciante.
O frontend pode dar instruções ao backend do comerciante para autorizar um reembolso através de POST para o endpoint /private/orders/$ORDER_ID/refund.
O objeto JSON da solicitação de reembolso tem apenas dois campos:
reembolso: Valor a ser reembolsado. Se um reembolso anterior foi autorizado para a mesma encomenda, o novo montante tem de ser superior, caso contrário a operação não tem qualquer efeito. O valor indica o montante total a reembolsar, não um aumento do reembolso.razão: Justificação legível por humanos para o reembolso. O motivo é utilizado apenas pelo Back Office e não é exposto ao cliente.
Se o pedido for bem sucedido (indicado pelo código de estado HTTP 200), a resposta inclui um taler_refund_uri. O frontend deve redirecionar o browser do cliente para esse URL para permitir que o reembolso seja processado pela carteira.
Este excerto de código ilustra a concessão de um 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
Depois de conceder um reembolso, o endpoint público https://example.com/orders/$ORDER_ID mudará a sua interação com a carteira, passando de um pedido de pagamento para a oferta de um reembolso. Assim, os frontends podem novamente redirecionar os browsers para este endpoint. No entanto, para o fazer, deve ser anexado um campo h_contract (?h_contract=$H_CONTRACT), uma vez que o endpoint público o exige para autenticar o cliente. O valor $H_CONTRACT necessário é devolvido na resposta ao reembolso sob o campo h_contract.
3.1.4.6. Mais tutoriais#
Para ver tutoriais adicionais, pode navegar neste site ou ir a https://docs.taler.net para obter a documentação mais recente sobre os serviços Taler.