【问题标题】:Process Stripe Payments in React Js and Firebase在 React Js 和 Firebase 中处理 Stripe 付款
【发布时间】:2021-10-26 00:57:21
【问题描述】:

我仍然是 Firebase 的初学者,我正在使用 ReactJs 开发一个应用程序,用户必须使用 Stripe Payment 购买一些产品。我遵循了条带实现的工作流程;

  1. 我在 reactJs 中创建了一个表单来接受账单信息,并且我使用了 @stripe/react-stripe-js 包中的 CardElement 来安全地在 ReactJs 中初始化付款。

    import { CardElement, useElements, useStripe } from "@stripe/react-stripe-js"
    const stripeConst = useStripe()
    ............................
    const paymentIntent = await stripeValue.paymentIntents.create({
         amount,
         currency: "usd"
     });
    
  2. 我需要使用初始化来发出一个请求,该请求将返回一个我需要确认付款的 client_Secret。我不知道 Firebase 中是否有一种方法可以让我直接在我的 reactJs 应用程序上集成这个过程,而无需使用另一个 Node.js api 来生成这个秘密客户端密钥。我有我的条带私钥,我知道我也需要在这个级别使用它。

    //I haven't seen any resource that can assist me in this task but I know it 
      has to return a client Secret 
    
  3. 我已使用 confimCardPayment 处理付款。

         const { error } = await stripeConst.confirmCardPayment(clientSecret, {
             payment_method: paymentMethod.id
         });
    

【问题讨论】:

    标签: javascript reactjs firebase stripe-payments


    【解决方案1】:

    安全地执行此操作的唯一方法是在服务器端处理付款,然后等待 Stripe 确认您已收到付款。有一些较旧的 API 允许您从客户端完成付款,但它们的安全性较低。

    “初始化”不会返回clientSecretpaymentIntent 调用会。 您不需要生成密钥,Stripe 会为您完成。

    具体怎么做取决于你,但这里有一个例子。

    在服务器上:

    1. 接收客户的订单,生成秘钥。你已经这样做了。
      例如:const {client_secret} = await stripe.paymentIntents.create(intentParams)
    2. 将秘密与客户的订单一起存储在您的数据库中。
    3. 将密钥返回给客户端。

    在客户端:

    1. 通过confirmPayment 呼叫发送秘密。
    2. 也许让客户知道他们的订单已收到?你现在认为合适的都可以。

    在服务器上:

    1. 等待来自 Stripe 的 webhook POST。此请求应包含客户端密码。 https://stripe.com/docs/webhooks/go-live
    2. 使用您帐户中的 webhook 密码验证 POST 是否来自 Stripe(与您的私钥不同!)
    3. 使用密钥在数据库中查找订单。
    4. 将您数据库中的订单更新为已付款,并将其从待处理状态中删除,但您已对其进行了设置。
    5. 以某种方式通知客户。通过 websocket、电子邮件,任何对你的应用有意义的东西。

    【讨论】:

    • 很好的解释:)
    猜你喜欢
    • 2017-01-28
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 2022-01-27
    • 2017-01-22
    • 2019-04-15
    • 2019-01-20
    • 2019-02-25
    相关资源
    最近更新 更多