首页 > 解决方案 > 在 Express 应用中处理 Stripe 响应

问题描述

我正在尝试使用 Express 编写一个简单的 Stripe 集成。我的代码创建客户并收费并完成,出现在我的仪表板中。但是我很难理解如何处理来自 Stripe 的响应。以下只是从 Stripe 输出整个响应 - 我希望能够根据此响应的内容输出一条友好的消息:

stripe.customers.create({
    card: stripeToken
  })
  .then(customer =>
stripe.charges.create({
  amount: fee,
  description: "Client Ref: " + clientref,
  currency: "gbp",
  customer: customer.id,
  metadata: {
    'allocation:': allocate
  }
}))
  .then(charge => response.send(charge))
  .catch(err => {
    console.log("Error:", err);
    response.status(500).send({error: "Purchase Failed"});
  });

我如何查看响应并相应地处理它?我试过使用 response.send 承诺,我可以让它显示部分响应,但这是一个“收费”页面吗?如何将其显示为 html 而不仅仅是纯文本?

我查看了 Stripe 文档并没有发现任何类似的东西。我希望能够说明失败的付款、拒绝等以及成功的收费。

非常感谢任何帮助或其他示例!

谢谢

编辑:好的,我处理 catch 块中的“错误”。我没有意识到 Stripe 不会抛出异常,所以这让生活更轻松。然而,我关于格式化消息的观点仍然存在。'/charge' 只输出纯文本。

标签: node.jsexpressstripe-payments

解决方案


我如何查看响应并相应地处理它?

Stripe 文档在这里清楚地向您展示了成功收费的响应:https ://stripe.com/docs/api/node#create_charge (在 下Example response)。它会返回一个大型 JSON 对象。

您需要弄清楚该响应的哪一部分对您有用,以便在客户端应用程序中显示。如果不需要任何信息,那么您可以简单地忽略响应。

(...) 但这是一个“收费”页面吗?如何将其显示为 html 而不仅仅是纯文本?

您现在所做的只是将整个 JSON 对象通过res.send. 除了简单地将其作为纯文本发回之外,您没有对响应做任何事情。您需要配置视图以显示响应:http ://expressjs.com/en/guide/using-template-engines.html

或者,如果您生成一个 API 供其他人使用,则使用res.json发送回您从 Stripe 获得的 JSON。http://expressjs.com/en/4x/api.html#res.json

我希望能够说明失败的付款、拒绝等以及成功的收费。

然后你需要处理发生的错误。您正在通过 处理错误.catch,但您没有检查错误对象。同样,条纹也有关于错误的文档:https ://stripe.com/docs/api#errors

他们甚至还告诉您如何处理错误:https ://stripe.com/docs/api#handling-errors


推荐阅读