Мы разрабатываем приложение с интеграцией Recurly и пытаемся использовать его функцию PDF Invoice.
Приложение основано на Node.js (платформа Meteor).
Он получает правильный ответ от Recurly с бинарным файлом:
Но я не могу правильно сохранить его. Я пробовал два способа: распечатать на стороне клиента в браузере:
var file = window.URL.createObjectURL(new Blob([r.content], {type: "application/pdf"}));
var a = document.createElement("a");
a.href = file;
a.download = "invoicePDF";
document.body.appendChild(a);
a.click();
window.onfocus = function () {
document.body.removeChild(a)
}
И сохраните его прямо на сервере (просто для теста):
var fs = require('fs');
var wstream = fs.createWriteStream('C:/recurly.pdf');
wstream.write(result.content);
wstream.end();
Но в обоих случаях я получил нерабочий файл PDF. Acrobat, Foxit reader и Chrome не могут открыть этот файл — он поврежден.
У вас есть предложения, где я ошибаюсь? Может быть, мне нужно преобразовать контент перед его сохранением или что-то еще?
Добавлено
Результат этого запроса я отправил клиенту и распечатал в консоли (изображение выше).
try {
result = HTTP.call(
'GET',
'https://' + Meteor.settings.recurly.SUBDOMAIN + '.recurly.com/v2/invoices/' + invoiceId,
{
headers: {
Authorization: "Basic " + (new Buffer(Meteor.settings.recurly.API_KEY)).toString('base64'),
Accept: 'application/pdf'
}
}
);
} catch (err) {
result = e;
}
blob
responseType? - person MasterAM   schedule 28.06.2016