首页 > 解决方案 > 发送到 SQS 的条带付款现在不发送......使用 lambda

问题描述

我想象的

在我的网站上,我有一个购买产品的表格。需要的信息是电子邮件和域名。付款由条带管理,我使用 Lambda 和 API 网关来验证付款信息。如果付款成功,我将向 SQS 发送电子邮件和域名。

我有什么

数据不会在验证后立即发送到 SQS。我不知道为什么,但第一次使用表单时,没有设置为 SQS ;第二次使用表单时,将第一个表单的数据发送到 SQS ;第三次使用表单时,将第二次表单的数据发送到 SQS,等等......

无法在 lambda 代码上找到问题

const stripe = require('stripe')("sk_test_xxxxxxxxxxxxxxxxxxxxxxxx");
const ApiBuilder = require('claudia-api-builder');
const querystring = require('querystring');
var api = new ApiBuilder();
var aws  = require('aws-sdk');
var sqs = new aws.SQS();

api.post('/stripe',request => {
    let params = querystring.parse(request.body);

    return stripe.charges.create({
        amount: params.package,
        currency: 'eur',
        description: `foo 12 month charge`,
        source: params.stripeToken,
        receipt_email: params.email,
        metadata: {domain_name: params.domain_name, email: params.email},
    }).then(charge => {
        console.log("Data to send in SQS :" + {domain_name:     params.domain_name, email: params.email});
        var sqsMsg = {domain_name: params.domain_name, email: params.email};
        console.log("Data in variable : sqsMsg");
        console.log(JSON.stringify(sqsMsg));
        sendToSQS(JSON.stringify(sqsMsg));

        return charge;
    }).catch((err) => {
        return err;
    }, { success: { contentType: 'text/html'}});
});

function sendToSQS(data) {
    var params = {
        MessageBody: JSON.stringify(data),
        QueueUrl: 'https://sqs.eu-west-1.amazonaws.com/98XXXXXXXXXXX/foo-new-order',
        DelaySeconds: 0
    };
    sqs.sendMessage(params, function(err, data) {
        if(err) {
            console.log(err);
        }
        else {
            console.log('Sending Data to SQS Queue Successful ', data);
        }
    });
}

module.exports = api;

如果有人,可以解释我出了什么问题。谢谢 :)

标签: amazon-web-servicesaws-lambdaamazon-sqs

解决方案


推荐阅读