Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何实现条带幂等键_Javascript_Node.js_Stripe Payments - Fatal编程技术网

Javascript 如何实现条带幂等键

Javascript 如何实现条带幂等键,javascript,node.js,stripe-payments,Javascript,Node.js,Stripe Payments,我有一个客户阵列,我想批量收取他们的条纹。有时由于网络原因,有些费用无法通过,而有些费用确实通过,因此提出新的请求会再次向所有客户收取费用。我读到我可以使用幂等性,但注意到每次我提出请求时,键都会重新生成。我如何实现生成密钥来识别每个用户,而不将密钥存储在数据库中,因为它是一个临时密钥 for(customer in customers){ stripe.charges.create({ amount: 2000, currency: "usd",

我有一个客户阵列,我想批量收取他们的条纹。有时由于网络原因,有些费用无法通过,而有些费用确实通过,因此提出新的请求会再次向所有客户收取费用。我读到我可以使用幂等性,但注意到每次我提出请求时,键都会重新生成。我如何实现生成密钥来识别每个用户,而不将密钥存储在数据库中,因为它是一个临时密钥

 for(customer in customers){
     stripe.charges.create({
        amount: 2000,
        currency: "usd",
        source: token,
        customer: stripe_customerId,
    }, {
       idempotency_key: uuid
    }, function(err, charge) {
        // asynchronously called
    });
}

您对此有什么想法吗?

首先,您可能不想对这样的异步代码执行
for
循环;如果您有
n
客户要收费,您将同时发出
n
请求,这可能会导致一系列问题

其次,您使用的收费代码旨在从条带令牌创建一次性收费,而不是

假设您实际上已经保存了客户ID,您可能会希望使用类似的方法来实现此目的

我会使用,我会把事情分成如下几部分:

  • 迭代客户,并为每个客户创建一个“任务”,其中包括
    客户
    ID、
    金额
    货币
    、新生成的
    幂等键
    尝试计数
    ,然后将该任务推送到队列上

  • 在队列“处理”功能中,我将尝试使用该任务及其数据创建费用,如果由于联网或其他可重试错误而失败,我将增加
    trunt\u count
    并将其推回到队列中,以便重试。我可能还需要一个测试来限制重试次数,并跳过/记录任何失败的测试,即5次