处理Express应用程序中的Stripe响应

时间:2018-05-16 14:43:44

标签: node.js express stripe-payments

我正在尝试使用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块中处理'errors'。我没有意识到Stripe不会抛出异常,这样可以让生活更轻松。然而,关于格式化消息的观点仍然存在。 '/ charge'只输出纯文本。

1 个答案:

答案 0 :(得分:0)

  

如何查看响应并相应处理?

条纹文档清楚地向您显示成功收费的响应是:https://stripe.com/docs/api/node#create_chargeExample response下)。它会为您提供一个大型JSON对象。

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

  

(...)但这是一个'充电'页?如何将其显示为html而不仅仅是纯文本?

您现在正在做的只是通过res.send将整个JSON对象发送到您的客户端。除了简单地将其作为纯文本发送回来之外,您没有对响应做任何事情。您需要配置视图以显示响应: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