使用 React 输入调用后,Lambda 函数在 dynamo 中创建对象

问题描述 投票:0回答:1

我已经使用 React 设置了一个前端,它获取一些数据,并使用 graphql,使用 amplify 在 aws dynamo 数据库中创建对象。我现在必须将条纹支付纳入应用程序中。一旦用户输入数据,我想使用 stripe 向他们收费,然后一旦成功付款,我想使用他们在反应输入上提供的数据在 dynamo 数据库中创建相应的项目(仅当付款是成功)。

我已经设置了一个 stripe webhook 来命中一个 lambda 函数,该函数可以访问 graphql api,因此可以在数据库中创建一个对象,我只是想不出如何获取从反应前端构建的对象,以便可以使用它在 Dynamo DB 中构建对象?

解决这个问题的最佳方法是什么?谢谢:)

reactjs amazon-web-services stripe-payments
1个回答
0
投票

在我看来,根据通过 React 输入提供的数据类型,您有两个选择(我相信第二个选项可以更好地保持灵活性):

API 元数据

如果用户提供的数据不敏感,请使用此选项。 Stripe 支持将元数据作为键值对附加到您的请求中。然后,此元数据会添加到由“PaymentIntent”创建的“Charge”对象中,您可以在 Webhook 函数中检索该对象。

来自文档:

// Set your secret key. Remember to switch to your live secret key in production.
// See your keys here: https://dashboard.stripe.com/apikeys
const stripe = require('stripe')('sk_test_CGGvfNiIPwLXiDwaOfZ3oX6Y');

const intent = await stripe.paymentIntents.retrieve('{{PAYMENT_INTENT_ID}}');
const latest_charge = intent.latest_charge;

根据文档,主要限制是,

您最多可以指定 50 个键,键名称最长为 40 个字符 值最多 500 个字符

最重要的是,不要在此处存储敏感或 PII 数据。

两步过程

或者,也许更适合您的解决方案是,您可以在付款流程中添加一个步骤:
  1. 通过在 Amplify 代码中添加端点,使用数据库中的 React 输入创建对象。向该对象添加一个字段,例如
    fulfilled
    并将其设置为
    false
  2. 付款完成后,您的 webhook 必须更新此项目。
© www.soinside.com 2019 - 2024. All rights reserved.