Я пытался внедрить IPN Paypal с помощью AWS Api Gateway, чтобы получить URL-адрес обработчика IPN. API интегрирован с лямбда-функцией в качестве «приемника».
Я проверил URL-адрес шлюза API с помощью симулятора IPN Paypal. Он работает для первого шага, и я получаю сообщение «IPN был отправлен и рукопожатие подтверждено».
Моя проблема теперь со следующим шагом, где я должен отправить полученное сообщение обратно в Paypal, используя сообщение HTTPS. Я пытался несколько раз и продолжаю получать эту ошибку:
{
"code": "ECONNREFUSED",
"errno": "ECONNREFUSED",
"syscall": "connect",
"address": "127.0.0.1",
"port": 443
}
Я действительно был бы признателен за помощь в том, чтобы заставить это работать.
Я использую node.js 8.10. Вот моя лямбда-функция:
exports.handler = (event, context, callback) => {
console.log('Received event:', JSON.stringify(event, null, 2));
// Return 200 to caller
console.log('sending 200 back to paypal');
callback(null, {
statusCode: '200'
});
// Read the IPN message sent from PayPal and prepend 'cmd=_notify-validate'
console.log('modifying return body...');
var body = 'cmd=_notify-validate&' + event.body;
callHttps(body, context);};
function callHttps(body, context) {
console.log('in callHttp()....');
var https = require('https');
var options = {
url: 'https://ipnpb.sandbox.paypal.com/cgi-bin/webscr',
method: 'POST',
headers: {
"user-agent": "Nodejs-IPN-VerificationScript"
},
body: body
};
const req = https.request(options, (res) => {
res.on('data', (chunk) => {
// code to execute
console.log("on data - can execute code here....");
});
res.on('end', () => {
// code to execute
console.log("on end - can execute code here....");
});
});
req.on('error', (e) => {
console.log("Error has occured: ", JSON.stringify(e, null, 2));
});
req.end();}