У меня есть успешный веб-крючок в полоску, который указывает на лямбда-функцию aws, однако мне кажется, что мне не хватает данных. Я подумал, что, возможно, мне нужно было перехватить запись во второй раз через API-интерфейс чередования, основанный на идентификаторе продукта, который чередуется в webhook с моей лямбда-функцией. Однако оба они имеют одинаковые данные: объект с правильным атрибутом имени, нигде не видно цену и пустой массив изображений. В Stripe есть и цена, и изображение для продукта.
Вот моя лямбда-функция
// const axios = require('axios')
// const url = 'http://checkip.amazonaws.com/';
let response;
const SiteClient = require('datocms-client').SiteClient;
const client = new SiteClient('codegoeshere');
/**
*
* Event doc: https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html#api-gateway-simple-proxy-for-lambda-input-format
* @param {Object} event - API Gateway Lambda Proxy Input Format
*
* Context doc: https://docs.aws.amazon.com/lambda/latest/dg/nodejs-prog-model-context.html
* @param {Object} context
*
* Return doc: https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html
* @returns {Object} object - API Gateway Lambda Proxy Output Format
*
*/
exports.lambdaHandler = async (event, context, callback) => {
console.log(event);
client.items.create({
title: JSON.parse(event.body).data.object.name,
itemType: '223937'
})
.then((item) => {
console.log(item);
})
.catch((error) => {
console.error(error);
});
try {
// const ret = await axios(url);
response = {
'statusCode': 200,
'body': JSON.stringify({
message: 'hello world',
// location: ret.data.trim()
})
}
} catch (err) {
console.log(err);
return err;
}
callback(null, response)
};
Когда полоса отправляет запрос на публикацию, перезапустите console.log (событие) в моих aws журналах выглядит так. Я заменил ненужные данные на ...
{
resource: '/hello',
path: '/hello/',
httpMethod: 'POST',
headers: {
...
},
multiValueHeaders: {
...
},
...
},
...
},
body: '{\n' +
' "id": "evt_1GbZb9Hk5l44uIELY8mE0xFl",\n' +
' "object": "event",\n' +
' "api_version": "2020-03-02",\n' +
' "created": 1587765735,\n' +
' "data": {\n' +
' "object": {\n' +
' "id": "prod_H9tNB6zuPJbDcI",\n' +
' "object": "product",\n' +
' "active": true,\n' +
' "attributes": [\n' +
' "name"\n' +
' ],\n' +
' "caption": null,\n' +
' "created": 1587765735,\n' +
' "deactivate_on": [\n' +
'\n' +
' ],\n' +
' "description": null,\n' +
' "images": [\n' +
'\n' +
' ],\n' +
' "livemode": false,\n' +
' "metadata": {\n' +
' },\n' +
' "name": "Red Hat From Mars",\n' +
' "package_dimensions": null,\n' +
' "shippable": true,\n' +
' "type": "good",\n' +
' "updated": 1587765735,\n' +
' "url": null\n' +
' }\n' +
' },\n' +
' "livemode": false,\n' +
' "pending_webhooks": 6,\n' +
' "request": {\n' +
' "id": "req_44TGYL9uyPZAkf",\n' +
' "idempotency_key": null\n' +
' },\n' +
' "type": "product.created"\n' +
'}',
isBase64Encoded: false
}
Теперь в документах API с полосами есть демонстрационный объект, который выглядит как то, что я получил
{
"id": "prod_H9s5JbTrI0tIcm",
"object": "product",
"active": true,
"attributes": [
"name"
],
"caption": null,
"created": 1587760882,
"deactivate_on": [],
"description": null,
"images": [],
"livemode": false,
"metadata": {},
"name": "lets see if this works",
"package_dimensions": null,
"shippable": true,
"type": "good",
"updated": 1587760883,
"url": null
}
Однако моя проблема заключается в том, как Я получаю массив Product Price и Product Image? Или даже Ску. Чего мне здесь не хватает.
Спасибо заранее