Обновление с дополнительной информацией - 18 декабря
По мере дальнейшего тестирования выясняется, что ошибка изолирована от "this.response.end (json);"См. Примечания ниже:
событие чередования без накладных: a) "this.response.end (EJSON.stringify (obj, {indent: true}));"работает и возвращает 200 б) "this.response.end (EJSON.stringify (obj));"нет ошибки на локальном сервере, ошибка на панели инструментов полосы с «невозможно подключиться» и не возвращает код 200
событие счета полосы: a) "this.response.end (EJSON.stringify (obj, {indent:правда}));"выдает ошибки - подробности см. ниже.б) "this.response.end (EJSON.stringify (obj));"нет ошибки на локальном сервере, ошибка на панели инструментов полосы с «невозможно подключиться» и не возвращает код 200
Любое понимание будет приветствоваться.
У меня возникли некоторые проблемы с API Stripe, и мне нужна помощь или понимание.Я использую ngrok
для локального тестирования веб-крючков Stripe, и все работает нормально, пока я не сделаю запрос на любой тип события Stripe 'invoice' (например, invoice.payment_succeeded).Когда я запускаю тест для любого типа события «счет-фактура», я получаю несколько ошибок:
мое работающее приложение разрывается (т. Е. Требует, чтобы я запустил запуск метеора в терминале, чтобы перезапустить приложение)
Я получаю это сообщение об ошибке на стороне сервера в моем терминале:
///error message start///
events.js:183
throw er; // Unhandled 'error' event
^
Error: write after end
at write_ (_http_outgoing.js:622:15)
at ServerResponse.write (_http_outgoing.js:617:10)
at IncomingMessage.ondata (_stream_readable.js:639:20)
at emitOne (events.js:116:13)
at IncomingMessage.emit (events.js:211:7)
at IncomingMessage.Readable.read (_stream_readable.js:475:10)
at flow (_stream_readable.js:846:34)
at resume_ (_stream_readable.js:828:3)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickCallback (internal/process/next_tick.js:180:9)
///error message end///
На панели инструментов Stripe я получаю сообщение об ошибке:
'Test webhook error: Unable to connect'
И снова это прерывается, только когда я делаю запрос на любой тип события Stripe 'invoice'
(например, invoice.payment_succeeded
).
Я связался со Страйпом, чтобы узнать, есть ли что-то еще, что я должен рассмотреть, но они сказали, что все в порядке с их стороны.
И последнее замечание: чтобы запустить ngrok
, я использую 'ngrok http 3000'
.
. С учетом вышесказанного мой код веб-крюка на стороне сервера приведен ниже.Если у кого-либо есть понимание того, что может послужить причиной этой ошибки, любая точка зрения будет полезна.
///server side webhook code start///
Router.route('/webhooks/stripe', { where: 'server' })
.get(function () {
console.log('getter');
this.response.end('closing...');
})
.post(function () {
console.log('post function initiated');
// stores payload as string
var obj = this.request.body;
console.log("print obj var");
console.log(obj);
// saves as indented string to send as response
var json = EJSON.stringify(obj, {indent: true});
this.response.writeHead(200, {
'Content-Length': json.length,
'Content-Type': 'application/json'
});
this.response.end(json);
})
.put(function () {
console.log('put');
});
///server side webhook code end///