public async Task <IActionResult> GetMessage(
            [FromServices] BankTransferPaymentProvider provider,
            [FromServices] Configuration configuration,
            [FromServices] IService <IOrder> orderService,
            [FromRoute] string id,
            CancellationToken cancellationToken = default(CancellationToken)
            )
        {
            var result = await orderService.GetByIdAsync(id, cancellationToken);

            var preview = await orderService.PreviewAsync(result);

            var template = configuration.TransferMessage ?? "Default transfer message";

            var compiled = Handlebars.Compile(template);

            var html = compiled(new { order = preview });

            return(Ok(ApiModel.AsSuccess(html)));
        }
        public async Task <IActionResult> RegisterAsync([FromServices] BankTransferPaymentProvider provider, [FromBody] BankTransferChargeBindings bindings, CancellationToken cancellationToken = default(CancellationToken))
        {
            var order = await provider.ChargeAsync(bindings, cancellationToken);

            return(Ok(ApiModel.AsSuccess(order)));
        }